寻找数据存储...可供选择

时间:2011-09-22 20:33:03

标签: mysql nosql

我有一个应用程序,用户可以在其中定义自己的数据集(字段,字段类型等),然后存储他们的数据......与创建和管理他们自己的表非常相似。

从自定义查询角度和存储角度来看,尝试将其设置为类似MySQL的东西时,这样做似乎会出现问题。我不希望最终得到数千个表,甚至不需要管理这么多不同的数据库。

有人告诉我,NoSQL是基于远离疯狂复杂查询的灵活性来研究的。

最终结果是用户将能够查询这些数据集以构建图形。像http://redis.io之类的东西会为我完成这项任务吗?

如果没有,是否有人就支持此任务的最佳选择提出建议?

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要详细考虑您的数据模型和所需的查询以做出此决定 - 各种NoSQL技术中的每一种都具有略微不同的数据模型和功能集。

像Cassandra这样的键值数据库可能会支持即时字段定义,但在字段输入方面不会提供太多支持。您可以存储原始字节值并覆盖您自己的类型系统,但是您不会从数据库中获得强制类型的支持。

NoSQL数据库通常不支持复杂查询(没有连接等),因此您必须使用简单查询(密钥查找)或非规范化来支持特定查询。

如果您正在使用图表,您是否考虑过RDF数据库(三重商店)?这些也允许很大的灵活性,但不是基于表格的(关系)。它们通常支持SPARQL查询语言。请参阅http://answers.semanticweb.com/网站。

答案 1 :(得分:0)

根据您的描述,您需要一个面向文档的数据库或一个能够知道(甚至索引)值的键/值存储。

Riak适合该模型,因为它是一个键/值存储,您不必为这些值预定义结构+它具有次要指标,其中每个{key,value}对保持不变,您可以添加自定义索引。用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博客(简单curl HTTP请求)的示例:

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,或者顺便标记(index twitter “rustyio”和email“rusty@basho.com”(_bin,只是意味着这些标记是二进制的)

现在只需创建“索引”即可读取密钥,您可以简单地:

curl localhost:8098/buckets/users/index/twitter_bin/rustyio

返回:

{"keys":["rustyk"]}

可用于检索...user data...

的密钥