|
|
|
Архитектура под задачу
|
|||
|---|---|---|---|
|
#18+
Задача: есть N-ое (~10к ед) количество неких продуктов(P) и K-ое(~5-10к) количество человек(H) которые должны просматривать продукты (P). Необходим класс\функция с входным параметром идентификатора человека(H) и возвращённым результатом - один продукт(P), соответствующий правилам: 1)Если есть продукты не просмотренные данным человеком или никем не просмотренные из них вернуть тот, который больше времени никем не просматривался 2)Если данный человек просматривал уже все продукты - вернуть тот, который больше времени не просматривался им Всё данные просмотров нужно записывать в БД, но это не критично, если в случае аварийного завершения часть данных не будет синхронизирована. Также необходима более-менее приемлемая производительность и несильная прожорливость по памяти, но правильная архитектура - важнее. Ещё задача усложняется возможным появлением дополнительных параметров для продуктов, таких как - приоритет или страна реализации, по которым необходимо будет отсеивать. Легче всего с такими данными работать в реляционном виде с выборками по SQL, обращаться постоянно к обычной БД не вариант, только если все нужные данные не будут в ОЗУ. Какое архитектурное решение и, если касательно моего последнего варианта, библиотеку\СУБД посоветуете? Язык не принципиален, Python например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 22:33 |
|
||
|
Архитектура под задачу
|
|||
|---|---|---|---|
|
#18+
Любой (embedded) сервер с приличным кэшированием. Объёмы-то копеечные, табллицы и индексы прекрасно поместятся в память - чё там 2 таблицы по 10к записей, с метр объёму вместе с индексами... впрочем, даже ОС должна кэшить достаточно эффективно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 22:52 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1341511]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 441ms |

| 0 / 0 |
