CouchDB, MongoDB и Riak будут способны быстро найти ключ (учетную запись).
Проблемы, которые у вас возникнут ( с любым решением ), связаны с предложениями "order by" и "account in".
Проблема № 1: учетная запись в
120M записей, вероятно, означают гигабайты данных. У вас, вероятно, есть индекс по концерту. Причина этого заключается в том, что ваше предложение «in» может легко охватывать весь индекс. Если вы ищете учетные записи «0000001» и «9999581», вам, вероятно, потребуется загрузить большой индекс.
Так что просто чтобы найти записи, которые ваша БД сначала должна загрузить, возможно, гигабайт памяти. Затем, чтобы фактически загрузить данные, вы должны снова вернуться на диск. Если ваши «учетные записи» в предложении in не «близки друг к другу», то вы возвращаетесь несколько раз, чтобы получить различные блоки. В какой-то момент может быть быстрее выполнить сканирование таблицы, чем загрузить индекс и таблицу.
Тогда вы попадаете в задачу № 2 ...
Задача № 2: упорядочить по
Если у вас есть много данных, возвращаемых из предложения «in», то order by - это просто еще один уровень медлительности. С «заказом» сервер не может передать вам данные. Вместо этого он должен загрузить все записи в память, затем отсортировать их и затем передать их в потоковом режиме.
Решения:
- Есть много оперативной памяти. Если ОЗУ не может вместить весь индекс, загрузка будет медленной.
- Попробуйте ограничить количество входящих элементов. Даже 20 или 30 пунктов в этом пункте могут сделать запрос действительно медленным.
- Попробуйте базу данных Key-Value?
Я большой поклонник K / V баз данных, но вы должны взглянуть на пункт # 1. Если у вас недостаточно ОЗУ и много данных, система будет работать медленно, независимо от того, какую БД вы используете. Это соотношение размеров ОЗУ и БД действительно важно, если вы хотите добиться хорошей производительности в этих сценариях (небольшие просмотры в больших наборах данных).