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