Ищете хранилище данных ... которое выбрать - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть приложение, в котором пользователи могут определять свои собственные наборы данных (поля, типы полей и т. Д.), А затем сохранять свои данные ... очень похоже на их создание и управление своими собственными таблицами.

Выполнение этогоКажется, возникают проблемы при попытке настроить его на что-то вроде MySQL ... с точки зрения пользовательского запроса и с точки зрения хранилища.Я не хочу в конечном итоге иметь тысячи таблиц или даже управлять таким количеством разных баз данных.

Кто-то сказал мне, что NoSQL - это то, на что нужно обратить внимание, основываясь на гибкости, позволяющей избавиться от сумасшедших сложных запросов.

Конечным результатом является то, что пользователь сможет запрашивать эти наборы данных для построения графиков.Будет ли что-то вроде http://redis.io выполнить эту задачу для меня?

Если нет, у кого-нибудь есть предложения по наилучшему варианту поддержки этой задачи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

Исходя из вашего описания, вам нужна либо документно-ориентированная база данных, либо хранилище ключей / значений с возможностью знать (возможно, даже индексировать) значения.

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...

0 голосов
/ 23 сентября 2011

Чтобы принять это решение, вам нужно будет подробно рассмотреть вашу модель данных и требуемые запросы - каждая из различных технологий NoSQL имеет несколько отличную модель данных и набор функций.

База данных значений ключей, такая как Cassandra, вероятно, будет поддерживать определение полей «на лету», но не будет сильно поддерживать способ ввода полей. Вы можете хранить необработанные байтовые значения и накладывать свою собственную систему типов, но вы не получите поддержки от базы данных для принудительного применения типов.

Базы данных NoSQL, как правило, не поддерживают сложные запросы (без объединений и т. Д.), Поэтому вы должны управлять простыми запросами (поиск ключей) или денормализовать для поддержки конкретных запросов.

Если вы работаете с графиками, рассматривали ли вы базу данных RDF (тройное хранилище)? Они также обеспечивают большую гибкость, но не основаны на таблицах (реляционные). Обычно они поддерживают язык запросов SPARQL . Смотрите сайт http://answers.semanticweb.com/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...