Ben*_*ren 5 couchdb mongodb cassandra redis
我有一个nosql数据存储的用例,但我不知道使用哪一个:
我的数据存储中的每个文档都有一个_id键和另一个键作为对象数组.此数组的每个对象哈希元素都有一个_elementid键和另一个用于颜色的键.
我希望我的服务器代理向数据存储发送更新请求,其中子字符串用作正则表达式,该子字符串限定_id与正则表达式匹配的所有文档.然后我想将一个元素推送到此输出的每个文档的数组上.这个新元素对于每个unshift都具有相同的颜色,但_elementid对于每个都是唯一的.
有没有提供这种存储过程的nosql选项?它对阵列的长度有限制吗?
*编辑*
(1)文件A:
{
_id : "this_is-an-example_10982029822",
dataList : [
{
_elementid : "999999283902830",
color : "blue",
}, {
_elementid : "99999273682763",
color : "red"
}
]
}
DOCUMENT B:
{
_id : "this_is-an-example_209382093820",
dataList : [
{
_elementid : "99999182681762",
color : "yellow"
}
]
}
Run Code Online (Sandbox Code Playgroud)
(2)更新请求的示例
(let [regex_ready_array ["this_is-an-example" "fetcher" "finder"]
fetch_query_regex (str "^" (clojure.string/join "|^" regex_ready_array))
element_template {
:_elementid { (rand-int 1000000000000000) }
:color "green"
}
updated_sister_objs (mc/bulk-update connection "arrayStore" {:_id {$regex fetch_query_regex }} "unshift" element_template)])
Run Code Online (Sandbox Code Playgroud)
(3)文件A:
{
_id : "this_is-an-example_10982029822",
dataList : [
{
_elementid : "999999146514612",
color : "green",
}, {
_elementid : "999999283902830",
color : "blue",
}, {
_elementid : "99999273682763",
color : "red"
}
]
}
DOCUMENT B:
{
_id : "this_is-an-example_209382093820",
dataList : [
{
_elementid : "9999997298729873",
color : "green",
}, {
_elementid : "9999918262881762",
color : "yellow"
}
]
}
Run Code Online (Sandbox Code Playgroud)
*编辑2*
(1)dataList数组可能很大(大到足以使MongoDB的16mb文档大小限制出现问题);
(2)要分配给附加dataList元素的_elementid值对于每个新元素将是不同的,并且商店将自动将这些值分配为随机数值
(3)单个更新请求应该应用所有更新,而不是每个附加元素一次更新;
(4)OP正在寻找几种'nosql解决方案'之间的比较和对比,其中MongoDB,Cassandra,Redis和CouchDB被建议作为可能的候选者.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |