Во-первых, это совсем не так. Aerospike читает всегда будет быстрее, чем пишет. Для выполнения записи требуется более длинный путь кода и больше операций ввода-вывода. Если вы не заявите, что ваша операция REPLACE
, она будет вести себя как упор, что означает, что она сначала попытается прочитать ту же запись, объединить ваши данные, а затем записать.
То, что вы есть делать выше не сравнивает яблоки с яблоками. Запись (put
) - это отдельная операция записи. Вы должны сравнить запись с одной записью чтения (get
). То, что вы делаете, - это сканирование (если вы также подключите фильтр вторичного индекса, это будет запрос), что является многоузловой операцией. Даже если он просто возвращает одну запись, он должен go всем узлам и при каждом обходе весь первичный индекс совпадений с вашим фильтром предикатов.
Есть несколько способов обойти это , Например, вы можете построить вторичный индекс на своем значении epochDay
и вместо фильтра предикатов использовать фильтр вторичного индекса с предикатом диапазона BETWEEN . Фильтр предикатов будет меньше, только строковый предикат.
Во-вторых, вы можете использовать подход моделирования, при котором данные объединяются в одну большую запись в виде списка или карты. , и вы используете API списка или карты, чтобы получить диапазон элементов, которые вы хотите в этом сложном типе данных. Взгляните на блоги разработчиков Aerospike и Примеры кода Aerospike .