我正在寻找将数据存储在数据库中的最省力的解决方案。以下是要求:
这将是测试自动化工具的存储后端
数据将是从队列中捕获的消息:可以是JSON,XML,二进制......但可以转换为统一表示
数据将被写入一次,无论写入什么都不会改变
将需要多个索引,但是基本索引应该是插入到数据库中的消息的时间戳 - 如果选择的数据库可以配置为自动提供(例如查询消息),那将会很好在两个时间戳之间插入 - 应该开箱即用)
查询的简便性很重要(SQL最好,但事先并不知道消息的结构)
表现并不重要
容错,分区容差,可靠性等并不重要
易于访问(例如,REST API,来自多个平台的API - JVM,JS等)非常重要。
我在看MongoDB,CouchDB,也许是Riak ......所有这些都可以工作,我只是不知道哪个是对上述要求的阻力最小。我熟悉Riak,但它的优点并不是我追求的......
答案 0 :(得分:2)
@geraldss已经解决了INSERT问题。让我加上这个例子。
答案 1 :(得分:1)
似乎CouchBase是最好的选择,因为N1QL: here
它勾选所有其他框(自动时间戳索引除外,但是由于查询语言的原因,添加它并进行范围查询很简单。)
答案 2 :(得分:1)
如果使用Couchbase,可以使用N1QL的INSERT语句自动添加时间戳:
INSERT INTO my_bucket(KEY, VALUE)
VALUES ($my_key, {
"insert_time": NOW_STR(),
__my other data fields__
}
)