Хранилище, похожее на ключ-значение для наиболее конкретного URI

Существует ли структура данных / модель для хранения значения в произвольном ключе на основе URI, а затем, если он равен нулю, обратно в менее конкретный путь / домен? т.е.

SET example.com "hello"
SET a.example.com/foo "world"
GET example.com => "hello"
GET example.com/foo => "hello"
GET a.example.com/foo/bar => "world"

Значение - это просто сериализованный объект JSON; Мне не нужно делать никаких операций над списком.

В настоящее время я использую node.js/restify при поддержке redis (хотя я открыт для других хранилищ данных). Я понимаю, что у меня могло бы быть плоское хранилище значений ключей и цикл по всем подпутям / доменам, но это неэффективно с дюжиной потенциально пустых вызовов к хранилищу данных.

1 ответ

Вы можете выполнить бинарный поиск при неудачном поиске ключа, чтобы найти наиболее конкретный соответствующий URI. Например, у вас есть URI глубины 8; начните с проверки на точное совпадение, если это не удалось, тогда проверьте URI глубины-4; если это не удается, проверьте URI глубины-2, иначе проверьте URI глубины-6; в этом случае предположим, что поиск на глубину 4 и глубину 6 завершился успешно, затем вы выполните поиск на глубину 7, если это удастся, верните значение глубины 7, иначе верните значение глубины 6.

В качестве альтернативы, через Google я нашел трехуровневую реализацию для leveldb, которая могла бы сработать, но в целом, кажется, не очень много реализаций трехуровневой базы данных.

Другие вопросы по тегам