Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.14;
Скачать: CL | DM;

Вниз

Подскажите мне такую штуку...   Найти похожие ветки 

 
Kerk ©   (2009-12-07 00:45) [0]

Сейчас попробую описать. Смотрю я сейчас в сторону memcached и xcache (это чтоб понятнее было о чем речь). Но они хранят в памяти пару ключ-значение, а мне нужно ключ-массив значений.

Понятно, что можно в качестве значения в memcached хранить некие данные, которые руками разгребать как массив. Но мне еще нужно из этих массивов данные удалять и в них добавлять. Если я все это буду делать руками, то боюсь, есть риск рассинхронизации данных (ибо конечно не один процесс занимается изменениями).

Есть такие решения?


 
wicked ©   (2009-12-07 00:46) [1]


> Есть такие решения?

serialize/unserialize

ЗЫ ты ж про пхп спросил?


 
KilkennyCat ©   (2009-12-07 00:47) [2]

разве memcached не массив?


 
Kerk ©   (2009-12-07 00:49) [3]


> wicked ©   (07.12.09 00:46) [1]

Вообще да, но это не важно.
Я не понимаю как эти две функции решат такую проблему:

1) 1 процесс берет данные, удаляет один элемент
2) 2 процесс берет данные, добавляет 3 элемента
3) 2 процесс записывает обновление в соответствии с ключом в memcached
4) 1 процесс записывает свое обновление

Таким образом мы теряем те добавленные 3 элемента.


 
Kerk ©   (2009-12-07 00:50) [4]


> KilkennyCat ©   (07.12.09 00:47) [2]
> разве memcached не массив?

Я мож чего не понимаю, но memcached можно сравнить с одномерным массивом (ключ значение), а мне надо двумерный (ключ - много значений).


 
KilkennyCat ©   (2009-12-07 00:52) [5]

а. понял. не знаю :(


 
wicked ©   (2009-12-07 00:55) [6]


> Я не понимаю как эти две функции решат такую проблему:
>
> 1) 1 процесс берет данные, удаляет один элемент
> 2) 2 процесс берет данные, добавляет 3 элемента
> 3) 2 процесс записывает обновление в соответствии с ключом
> в memcached
> 4) 1 процесс записывает свое обновление

тут или СУБД поможет (неожиданно, правда?), или если брать ссылки на элементы, а не сами элементы

хотя со ссылками сможет работать если только все манипуляции будут в 1 процессе происходить

иначе, по логике, никак

---
пока писал, придумал еще 2 варианта
1 - сложный ключ, который будет включать в себя и ссылки на субэелементы

2 - двухуровневая структура - на 1 уровне ключи ссылаются на ключики для элементов, на 2-м - ключики для элементов содержат данные

и вообще, тебе про NoSQL читать - http://en.wikipedia.org/wiki/NoSQL - это вроде оно


 
Kerk ©   (2009-12-07 01:10) [7]

Ну СУБД - самый в лоб вариант. Просто хранить мне все это нафиг не надо, достаточно в памяти держать. Потому и стал думать о каких-то более легковесных вариантах решения задачи.


 
KilkennyCat ©   (2009-12-07 01:19) [8]

На хабрахабре читал? Я недавно видел там кучку статей на тему мемкеша.


 
Kerk ©   (2009-12-07 01:25) [9]

Вот нашел что-то близкое. Изучаю.
http://habrahabr.ru/blogs/webdev/43539/


 
Kerk ©   (2009-12-07 01:30) [10]

http://code.google.com/p/memcached-tag/


 
Наиль ©   (2009-12-07 12:11) [11]

> 1) 1 процесс берет данные, удаляет один элемент
> 2) 2 процесс берет данные, добавляет 3 элемента
> 3) 2 процесс записывает обновление в соответствии с ключом
> в memcached
> 4) 1 процесс записывает свое обновление

п.4 - не выполнится. Записывать не куда, хэша к массиву 1го процесса уже не существует, и найти массив можно только перебором.


 
Наиль ©   (2009-12-07 12:28) [12]

> п.4 - не выполнится. Записывать не куда, хэша к массиву
> 1го процесса уже не существует, и найти массив можно только
> перебором.

Ляпнул не разобравшись с вопросом.
Если ключ постоянный, то 4 конечно сработает.



Страницы: 1 вся ветка

Текущий архив: 2010.02.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-1237982706
Eraser
2009-03-25 15:05
2010.02.14
TListView и экшены


15-1259959798
Riply
2009-12-04 23:49
2010.02.14
Спасибо, друзья :)


2-1260795180
ShowMessage
2009-12-14 15:53
2010.02.14
Координаты ShowMessage на форме


2-1260824299
andrewtitoff
2009-12-14 23:58
2010.02.14
MySQL


11-1208415384
MYRX
2008-04-17 10:56
2010.02.14
Вопросы к Старшим