Существует множество магазинов с ключевыми значениями. В настоящее время вам нужно выбрать один и придерживаться его. Я считаю, что независимый открытый API, не созданный поставщиком хранилища ключей, значительно облегчит переключение между магазинами.
Поэтому я создаю слой абстракции хранилища данных (например, ODBC, но сосредоточен на более простых хранилищах ключевых значений), чтобы кто-то однажды создавал приложение и при необходимости менял хранилища ключей. Является ли этот API слишком простым?
get(Key)
set(Key, Value)
exists(Key)
delete(Key)
Поскольку все API-интерфейсы, которые я видел до сих пор, похоже, так много добавили, мне было интересно, сколько дополнительных методов было необходимо?
Я получил несколько ответов о том, что set (null) можно использовать для удаления элемента, и если get возвращает null, это означает, что элемент не существует. Это плохо по двум причинам. Во-первых, нехорошо смешивать типы и состояния возврата, а во-вторых, не все языки имеют понятие null. См:
У всех языков программирования есть четкое представление о NIL, null или undefined?
Я хочу иметь возможность выполнять много типов операций с данными, но, как я понимаю, все может быть создано поверх хранилища значений ключей. Это верно? И должен ли я предоставлять эти функции с добавленной стоимостью? например: например mapreduce или индексы
Внутри у нас уже есть базовая версия этого в Erlang и Ruby, и это сэкономило нам много времени, а также позволило нам проверить производительность для конкретных случаев использования разных хранилищ значений ключей