|
База для очень быстрой проверки наличия в списке
|
|||
---|---|---|---|
#18+
Здравствуйте! Никак не могу определиться с выбором базы данных для хранения списков. Основное требование. Хранить списки UID, при запросе в 10-20 UID выдавать ответ, какие уже есть в списке, а каких нет. Пока присматриваюсь к Redis, хранить информацию в Sets и запросом SISMEMBER ( http://redis.io/commands/sismember ) смотреть есть ли объект в списке или нет. Но не устраивает производительность. А точнее, то что запрос SISMEMBER может проверять только один элемент, а 10-20 запросов не укладываются в требования по времени. При использовании пакетной отсылки запросов подошел к достаточно быстрому времени ответа, но хотелось бы иметь задел прочности. Причем такое решение даёт 100% точность ответа, что не требуется, если правильных ответов будет 85-90% это не критично. Может есть какой-то вероятностный алгоритм? Данных не особо много. В пару гигибайт укладываются, но планируются постоянные запросы в несколько потоков на наличие объекта в списке. ОС Linux ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2016, 01:21 |
|
База для очень быстрой проверки наличия в списке
|
|||
---|---|---|---|
#18+
Foggy , В соседнем форуме была похожая тема: " Как реализовать сравнение множеств? " Там же приведён конкретный пример с показателями скорости поиска: 19182172 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2016, 08:23 |
|
База для очень быстрой проверки наличия в списке
|
|||
---|---|---|---|
#18+
т. к. "пара гигибайт" легко влезает в оперативку - однозначно хватит простого hashmap (std::unordered_map или что там есть в вашем языке) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2016, 09:13 |
|
База для очень быстрой проверки наличия в списке
|
|||
---|---|---|---|
#18+
servit Foggy , В соседнем форуме была похожая тема: " Как реализовать сравнение множеств? " Там же приведён конкретный пример с показателями скорости поиска: 19182172 Спасибо, нужно будет протестировать buzzaт. к. "пара гигибайт" легко влезает в оперативку - однозначно хватит простого hashmap (std::unordered_map или что там есть в вашем языке) Я думал над таким вариантом. База должна быть доступна по сети, поэтому для таких целей можно взять Erlang и за вечер самому написать. Но лишний раз использовать свои велосипеды не люблю, хотя да, свое решение это хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 00:55 |
|
База для очень быстрой проверки наличия в списке
|
|||
---|---|---|---|
#18+
Если требуется функциональность многопоточного выполнения запросов, с одновременным изменением данных и версионностью, то еще как вариант посмотреть от H2 MVStore: http://www.h2database.com/html/mvstore.html Движок умеет работать в режиме inmemory, а так же организовать хранение на диске в файле, с кэшированием в памяти. Неплохой движок, но правда на скорострельность я не тестировал, но думаю должно быть более менее. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 12:22 |
|
|
start [/forum/topic.php?fid=48&msg=39313046&tid=1856729]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 236ms |
total: | 388ms |
0 / 0 |