Исходя из вашего описания, вам нужна либо документно-ориентированная база данных, либо хранилище ключей / значений с возможностью знать (возможно, даже индексировать) значения.
Riak подходит для этой модели, так как это хранилище ключей / значений, где вам не нужно предварительно определять структуру для этих значений + у него есть вторичные признаки, где при сохранении каждой пары {ключ, значение} вы можете добавить пользовательский индекс. В словах Riak у вас есть способность: tag a Riak object with some index metadata, and later retrieve the object by querying the index, rather than the object's primary key
, который очень хорошо подходит под описание того, что вы хотите решить.
Вот пример из блога Basho (простой HTTP-запрос curl):
curl -X POST \
-H 'x-riak-index-twitter_bin: rustyio' \
-H 'x-riak-index-email_bin: rusty@basho.com' \
-d '...user data...' \
http://localhost:8098/buckets/users/keys/rustyk
, который говорит, вставьте ...user data...
под ключ rustyk
, или, кстати, пометьте ( read index
) это с twitter
"rustyio" и email
"rusty @ basho.com "(_bin, просто означает, что эти признаки являются двоичными)
Теперь, чтобы прочитать ключи только что созданным «индексом», вы можете просто:
curl localhost:8098/buckets/users/index/twitter_bin/rustyio
, который возвращает:
{"keys":["rustyk"]}
ключ, который вы можете использовать для получения этого ...user data...