我将如何实现分页所需的查询?
基本上,当请求第1页时,获取前5个条目.对于第2页,获取下一个5,依此类推.
我计划通过couchdb-python模块使用它,但这不会对实现产生任何影响.
各种NoSQL数据库有哪些优点和缺点?
特别是,当在多个服务器上分配写入负载时,似乎Redis很弱.是这样的吗?这是一个大问题吗?服务有多大才能成为一个重大问题?
使用两个数据库来说明这个例子:CouchDB和Cassandra.
CouchDB使用B + Tree作为文档索引(使用巧妙的修改在其仅附加环境中工作) - 更具体地说,当文档被修改(插入/更新/删除)时,它们被附加到正在运行的数据库文件以及完整的Leaf - >文档后面的更新版本对受影响的所有节点的B +树的节点路径.
这些分段修改的索引修订与修改一起内联,使得完整索引是附加在文件末尾的最新索引修改的联合,以及在数据文件中进一步返回的仍然相关的附加部分,并且尚未修改.
搜索B +树是O(logn).
Cassandra将记录键在内存中保存在表中(让我们将它们视为此问题的数组),并将它们作为单独的(已排序的)排序字符串表不时写出来.
我们可以将所有这些表的集合视为"索引"(根据我的理解).
Cassandra需要不时地压缩/组合这些排序字符串表,从而创建索引的更完整的文件表示.
搜索已排序的数组是O(logn).
假设在CouchDB中维护部分B +树块与Cassandra中的部分排序字符串索引之间存在类似的复杂程度,并且假设两者都提供O(logn)搜索时间,您认为哪一个可以更好地表示数据库索引以及为什么?
我特别好奇是否有一个关于一个的实现细节使它特别有吸引力,或者如果它们都是一个清洗,你只需选择你喜欢使用的数据结构/对开发人员更有意义.
谢谢你的想法.
今晚在我的日常技术谷歌搜索中我遇到了couchDB,在看到大量关于它如何比任何RDBM表现好十到一百倍的演示文稿之后,如何将它们从SQL语言,表格,主键等等中拯救出来.我决定亲自尝试一下.只有问题似乎我无法弄清楚它是如何工作的.
就像开始一样,我想使用couchDB编写一个Web联系人管理器.该项目将使用户能够做基本的事情
那么我该如何开始呢?
这里有一些我的想法
现在这里来了困难的部分,我真的不了解整个map/reduce概念以及如何使用它来完成我以前用SQL做的工作.还有视图如何处理分页,也分组.
我想构建一个屏幕,其中包含这样的链接分页集
John, Doe Johny, Hallyday Jon, Skeet A B C D E F **J** etc .... <-- those are link to see persons with that first name
我应该创建什么样的视图才能实现这一目标,如果你能提供样品就很棒.
联系文件.
{
type: 'contact',
firstname: 'firstname',
lastname: 'lastname',
email: ['home': 'foobar@foobar.net', 'work': 'foobar@foobar-working.net'],
phone: ['home': '+81 00 0000 0000'],
address: []
... some other fields maybe ...
}
Run Code Online (Sandbox Code Playgroud) 我在CouchDB用户列表中发布了此问题的变体,但尚未收到回复.
我很想知道是否有其他人建造了所谓的"CouchApp"; 直接托管在CouchDB中的纯HTML/JavaScript应用程序.如果是这样,您是如何处理用户身份验证的?我希望能够创建一个典型的登录表单(用户名,密码),然后在将用户传递给应用程序之前将这些凭据用于视图或其他机制(同时将其(加密的)用户ID存储在cookie,大概是).
我习惯于简单地通过couchdb-python和普通的Web服务器代理,但是想知道在这些类型的CouchApps中验证用户的任何最佳实践.
编辑:一年后,现在已经内置到CouchDB中. 这段视频是一个很棒的演示.(谢谢丹尼尔!)
我正在测试CouchDB以了解它如何处理记录一些搜索结果.我想做的是生成一个视图,我可以从结果中生成最顶层的查询.目前我有这样的事情:
示例文档部分
{
"query": "+dangerous +dogs",
"hits": "123"
}
Run Code Online (Sandbox Code Playgroud)
地图功能 (不完全是我需要/想要但它足以进行测试)
function(doc) {
if (doc.query) {
var split = doc.query.split(" ");
for (var i in split) {
emit(split[i], 1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
减少功能
function (key, values, rereduce) {
return sum(values);
}
Run Code Online (Sandbox Code Playgroud)
现在,这将使我得到一个格式,其中查询术语是关键,右边是该术语的计数,这很好.但我希望它按价值排序,而不是钥匙.从它的声音来看,CouchDB还不能实现这一点.
那么,有没有人有任何想法,我如何获得一个视图,我有一个查询条款及其相关计数的有序版本?我对CouchDB很新,我想不出我是如何编写所需的函数的.
我们正在考虑使用CouchdDB进行CMS-ish应用程序.有关备份我们的生产数据库的常见模式,最佳实践和工作流建议有哪些?
我对克隆数据库以用于开发和测试的过程特别感兴趣.
仅仅从正常运行的实例下复制磁盘上的文件是否足够?你能在两个实时运行的实例之间克隆数据库数据吗
我们将非常感谢您使用的技术的建议和描述.
我正在寻找一个等同于"SQL连接"的CouchDB.
在我的示例中,有些CouchDB文档是列表元素:
{ "type" : "el", "id" : "1", "content" : "first" }
{ "type" : "el", "id" : "2", "content" : "second" }
{ "type" : "el", "id" : "3", "content" : "third" }
Run Code Online (Sandbox Code Playgroud)
有一个文档定义了列表:
{ "type" : "list", "elements" : ["2","1"] , "id" : "abc123" }
Run Code Online (Sandbox Code Playgroud)
如您所见,第三个元素已被删除,它不再是列表的一部分.所以它不能成为结果的一部分.现在我想要一个返回内容元素的视图,包括正确的顺序.
结果可能是:
{ "content" : ["second", "first"] }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,元素的顺序已经是应该的.另一个可能的结果
{ "content" : [{"content" : "first", "order" : 2},{"content" : "second", "order" : 1}] }
Run Code Online (Sandbox Code Playgroud)
我开始编写地图功能:
map = function (doc) {
if (doc.type …Run Code Online (Sandbox Code Playgroud) 我正在尝试将CouchDB用于新的应用程序,我需要创建一个按多个字段排序并按多个字段过滤的视图.这是一个示例文档,我省略了_id和_rev以节省一些打字.
{
"title": "My Document",
"date": 1279816057,
"ranking": 5,
"category": "fun",
"tags": [
"couchdb",
"technology"
],
}
Run Code Online (Sandbox Code Playgroud)
从文档中,我了解到我可以轻松地创建一个按排名等字段排序的视图.
function(doc) {
emit(doc.ranking, doc);
}
Run Code Online (Sandbox Code Playgroud)
我还了解到,我可以轻松地按类别等字段进行过滤
function(doc) {
emit(doc.category, doc);
}
http://127.0.0.1:5984/database/_design/filter/_view/filter?key=%22fun%22
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要同时做一堆这些事情.我想根据类别和标签进行过滤.我应该能够过滤到只有"fun"类别和"couchdb"标签的文档.我想通过按降序排序,然后按日期按升序排序,然后按字母顺序按标题排序过滤结果.
如何创建一个可以完成所有排序和过滤的视图?
我需要将objective-c对象序列化和反序列化为JSON以存储在CouchDB中.人们是否有任何示例代码用于一般解决方案的最佳实践?我查看了一些JSON框架,它们在NSDictionary/NSArray级别停止.即很多框架将NSDictionary/NSArray序列化和反序列化为JSON.但我仍然需要将NSDictionary转换为Objective-C对象.
为了使事情变得更复杂,我的对象A可以引用对象B的NSArray/NSDictionary.
我的问题与这个问题非常相似,增加了收集要求.
couchdb ×10
nosql ×3
cassandra ×2
database ×2
sorting ×2
backup ×1
filter ×1
indexing ×1
json ×1
mapreduce ×1
nsarray ×1
nsdictionary ×1
objective-c ×1
pagination ×1
redis ×1