У меня работает служба инвентаризации, я буду получать индивидуальные сообщения о состоянии инвентаря каждого предмета из каждого магазина. Мне нужно агрегировать на уровне item_id. Мне нужно получить агрегированную информацию за ~ 10 мс.
Мне нужно сделать это List<item_store_level_inventory> --> Map<item_id,Map<store_id>>
(чтобы я мог обновить внутреннюю Map.Entry с помощью операции O (1) и извлечь Outer Map.Entry с операцией O (1). Я посмотрел на Redis
- Имея item_id в качестве ключа и Stringified Array item_store в качестве значения. Минусы : у меня будет состояние гонки, я Я должен был распределить блокировку для item_id, от которого я пытаюсь держаться подальше
- Использование хэшей. item_id будет идентификатором Ha sh, а store_id будет отдельным хешем. Cons : уровень item_id поиск O (n). Я еще не профилировал его, хотя
Это моя статистика:
кол-во (предметов) - 5 миллионов
количество (магазины) : 3K
макс. (Количество магазинов) : 1K
количество (уникальный элемент- store) : 70 Million
Просто для того, чтобы дать вам представление о размере данных, все, что я храню на уровне хранилища элементов, - это только 3 значения. Зарезервировано.
Стойкая природа не имеет большого значения, так как я могу легко воссоздать ее, воспроизведя с компактной вершины kafka c.
FWIW, В настоящее время она работает в oracle. Моя организация стремится выйти из Oracle и перейти в хранилище данных в памяти.
Любые указатели в подходящем хранилище данных будут высоко оценены