Большое число объектов и поллинг
От: _kostet_ Россия  
Дата: 01.06.11 18:30
Оценка: -1
Хай всем!

Есть вопрос касательно архитектуры следующей системы. Есть система,
которая должна уметь хранить большое или очень большое кол-во объектов
одного типа. Ориентировочное кол-во объектов — около 10.000.000.

Каждый объект может иметь свой граф состояний (машину состояний). Отсюда
следует что их надо постоянно поллить. В данный момент храню все объекты
в базе (BDB) и соотв. поллингом переключаю все состояния. Но по ресурсам
получается как то очень ресурсоемно.

Вопрос к сособществу. Как модно подобные задачки-то решать ?

Заранее спасибо !
Posted via RSDN NNTP Server 2.1 beta
Re: Большое число объектов и поллинг
От: BulatZiganshin  
Дата: 01.06.11 19:29
Оценка: +3
Здравствуйте, _kostet_, Вы писали:

__>Есть вопрос касательно архитектуры следующей системы. Есть система,


ничё не понял
Люди, я люблю вас! Будьте бдительны!!!
Re: Большое число объектов и поллинг
От: Кодёнок  
Дата: 02.06.11 07:20
Оценка:
Здравствуйте, _kostet_, Вы писали:

__>в базе (BDB) и соотв. поллингом переключаю все состояния. Но по ресурсам

__>получается как то очень ресурсоемно.

Что именно тормозит? В первую очередь в голову приходит не трогать все объекты сразу, а как-нибудь предугадывать, в каких из них будет изменение состояния, а в каких нет.
Re[2]: Большое число объектов и поллинг
От: Sanik Россия http://sergeysthoughts.blogspot.com/
Дата: 02.06.11 08:54
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, _kostet_, Вы писали:


__>>в базе (BDB) и соотв. поллингом переключаю все состояния. Но по ресурсам

__>>получается как то очень ресурсоемно.

Кё>Что именно тормозит? В первую очередь в голову приходит не трогать все объекты сразу, а как-нибудь предугадывать, в каких из них будет изменение состояния, а в каких нет.


а нотификации при смене состояний уже не модны?
... << RSDN@Home 1.2.0 alpha 4 rev. 1477>>
Re[2]: Большое число объектов и поллинг
От: _kostet_ Россия  
Дата: 02.06.11 14:23
Оценка:
On 06/02/2011 11:20 AM, Кодёнок wrote:
> Что именно тормозит? В первую очередь в голову приходит не трогать все объекты
> сразу, а как-нибудь предугадывать, в каких из них будет изменение состояния, а в
> каких нет.

тормозит как раз то, что приходится обходить все объекты

Первое что приходит на ум, это как вы правильно сказали, разделить как-то все
объекты на подмножества. Но как это сделать не приходит на ум, так как у
объектов некоторые переходы состояний зависят от времени т.е. типа "переключить
состояние с А на В по истечении 24 часов".
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Большое число объектов и поллинг
От: _kostet_ Россия  
Дата: 02.06.11 14:25
Оценка:
On 06/02/2011 12:54 PM, Sanik wrote:
> а нотификации при смене состояний уже не модны?

наверно модны ))
но приложение однопоточное поэтому нотификации могуть быть посланы только
вызывающим потом самому себе. это все равно приводит к тому что надо перебрать
все объекты
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Большое число объектов и поллинг
От: out-of-the-way США www.tehnoromantik.net
Дата: 02.06.11 14:40
Оценка:
Здравствуйте, _kostet_, Вы писали:

__>On 06/02/2011 11:20 AM, Кодёнок wrote:

>> Что именно тормозит? В первую очередь в голову приходит не трогать все объекты
>> сразу, а как-нибудь предугадывать, в каких из них будет изменение состояния, а в
>> каких нет.

__>тормозит как раз то, что приходится обходить все объекты


__>Первое что приходит на ум, это как вы правильно сказали, разделить как-то все

__>объекты на подмножества. Но как это сделать не приходит на ум, так как у
__>объектов некоторые переходы состояний зависят от времени т.е. типа "переключить
__>состояние с А на В по истечении 24 часов".

Не очень понятно что вам надо. Имея сигнал и граф состояний автомата, мы можем определить множество состояний автомата, из которых есть переход под действием этого сигнала. Выбираем объекты, которые находятся в таких состояниях, из них выбираем источник сигнала и меняем его состояние. Нужно разбить на множества по состояниям чтоб быстрей искать. Как то так.
Программа — мысли спрессованные в код.
Re: Большое число объектов и поллинг
От: MasterZiv СССР  
Дата: 02.06.11 20:10
Оценка:
On 01.06.2011 22:30, _kostet_ wrote:

> Вопрос к сособществу. Как модно подобные задачки-то решать ?


Flyweight ?
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Большое число объектов и поллинг
От: Кодёнок  
Дата: 03.06.11 05:17
Оценка:
Здравствуйте, _kostet_, Вы писали:

__>объектов некоторые переходы состояний зависят от времени т.е. типа "переключить

__>состояние с А на В по истечении 24 часов".

Можно завести у каждого объекта свойство, когда у него “тикнет” ближайший таймер. Если это записи в БД, индексировать по этому полю, если нет, вести сортированный список. Если индекс/список слишкой большой (например, если у абсолютно всех объектов есть такие таймеры), можно дополнительно разбить на группы: ближайшие 5 минут, ближайшие полчаса, ближайшие сутки и каждые 5 минут/полчаса/сутки перебирать следующую группу и переносить объекты, время которых вот-вот подойдет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.