Вопрос: меньше, чем отфильтрованные запросы, аэросик


Мне было трудно найти конечную документацию по аэроспике. Используя аэрокосмические фильтры с или без lua, я могу:

  1. Закажите мою серверную часть результатов
  2. Используйте фильтр, чтобы выполнить запрос больше или меньше, чем запрос

По сути, я хочу кодировать значение (клиентская сторона) и извлекать первую строку из значения аэрокосмического значения, которое больше, чем закодированное.

Другой способ выразить это, противоположно праву цены ... что самое низкое значение, которое я могу найти в аэросике, стоимость которого не ниже той, которую я даю.

Идентификатор, как простой способ, но я также открыт для работы вокруг (или нет, если это не разумно / практично)


4


источник


Ответы:


  1. Aerospike не поддерживает закачку данных на серверной стороне.
  2. Aerospike поддерживает фильтры по запросу. Вы можете указать фильтр диапазона для ваших нужд. См. Пример на этом ссылка ,

3



Базовая сортировка поддерживается в больших списках (LDT).

В большом списке ваш ключ (индекс) всегда упорядочивается по-лексически по умолчанию.

Обратите внимание, что ldt-enabled true директива должна присутствовать в области конфигурации пространства имен в aerospike.conf

пример с клиентом javascript

var key = {ns: 'test', set: 'mySet', key: 'myKey'};
var callback = function (status, result) {console.log(status, result)}

var list = client.LargeList(key, 'targetBinName', null, callback));

// add first item (also determinate the list values type) 
list.add(1, callback);

// add multiple items
list.add([0, 2, 4, 5], callback);

list.add(3, callback);

// get all items
list.scan(function (status, list) {
     // list = [0, 1, 2, 3, 4, 5]
})

// select by values range
list.findRange(0, 3, callback)

// filter using udf to do custom gt/lt filtering
list.filter('udfName', callback)

если вам нужно хранить объекты, тогда вы должны добавить key свойство, которое будет индексом для сортировки, диапазона, дубликатов и т. д. (по умолчанию не допускаются дубликаты)

list.add({key: 1})
list.add([{key: 0},{key: 2}])

Я уверен, что драйверы других языков имеют одни и те же методы более или менее.

больше в Большой список в Аэроскопические документы

Раздел большого списка документов в клиенте NodeJS Github


1



Раньше вы бы выразили это как поток UDF , но с тех пор выпуск 3.12   предикатный фильтр  было бы правильным решением.

Взгляните на PredExp  класса клиента Java и его Примеры  для создания сложных фильтров. Фильтрация предикатов также в настоящее время существует для С , C #  а также Идти  клиентов.


0