Эта модель моделирования данных используется многими пользователями Aerospike. Эффективный способ сделать это состоит в том, чтобы иметь ваши от и до столбцов IP-адресов в 32-битном целочисленном формате и от и до имеют общие первые 24 бита.
например: от: 1.0.0.0 до: 1.0.0.255 - сохранить как 32-битные целые. Вы просматриваете эту запись с ее первичным ключом, который вы установите в качестве общего 24-битного значения. то есть 1.0.0 как 24-битное целое число. Так что, если вы хотите посмотреть 1.0.0.21 ... вы просто ищите данные в первичном ключе "1.0.0".
В Aerospike такое чтение может производиться с точностью до миллисекунды.
В вашем случае ваши диапазоны не соответствуют. Итак, у вас есть два варианта - 1 - воссоздать ваши данные в 24-битном общем формате, как я упоминал выше, это приведет к тому, что некоторые строки станут множественными, но поиск будет очень быстрым. Например, от: 1.0.0.0 до: 1.0.1.255 будут разделены с теми же остатками данных на 1.0.0.0 - 1.0.0.255 и 1.0.1.0 - 1.0.1.255. Это означает большее общее количество записей, что не является проблемой для Aerospike - вы можете легко хранить миллиарды записей, не влияя на задержку чтения отдельных записей.
Или вы можете использовать вторичный индексный запрос для "from" - вашего ip> from и добавить выражение фильтра предикатов, где ваш ip равен https://www.aerospike.com/docs/guide/predicate.html Это будет немного медленнее, чем первый метод, который я описал, но все равно может быть менее 5 мсек - вам придется проверить и посмотреть.