标签: Couchdb
amazon-simpledbeventual-consistency
我正在设计一个必须具有高可用性和可扩展性的应用程序的早期阶段。出于许多原因,我希望使用最终一致性数据模型。我知道并理解为什么对于许多解决方案来说,这是一个不受欢迎的体系结构选择,但在我的案例中,这很重要
在处理分布式/文档式数据库时,我正在寻找现实世界中的建议、最佳实践和需要注意的问题。尤其是电子商务(购物车风格)应用程序领域,传统上更容易与关系数据库结合
我知道使用这些类型的数据库很有挑战性,但是嘿,Google和E-bay使用它们,所以它们不会那么难;-)任何建议都将不胜感激。如何使用关系数
是否有实施独特约束的技术/建议?是的,我们可以创建唯一的密钥,但我们不能更改密钥和密钥,而且这种方法不适合复杂的验证(单独的唯一登录、单独的唯一电子邮件等)
例如,一个帐户应该有
独特的登录和电子邮件。导出密钥
从该字段将生成
不一致:
key1: "Account-john@example.net-john", { email: "john@example.net", login: "john"}
key2: "Account-mary@example.net-mary", { email:
我目前正在设计一个数据库结构(这里避免使用术语scheme很奇怪),并遇到了一些问题。我将用一个类似的例子来激发我的问题
设想一个博客条目数据库。每个博客条目都有0..n条评论、0..m个标记和0..r条目的用户投票(向上/向下)
当然,我可以将所有内容放在一个大的JSON对象中,每个条目都有一个公共对象,包括注释、标记和投票作为字段
但是,当有许多并发更改时(至少在我的实际应用程序中有),这很容易发生冲突。所以我想把我的结构分成几个文档。每个条目一份,每个条目一份(收集)文档用于评论,一份用于
我试图在一个CouchDB文档中存储多个独立附件,并为每个附件分配任意属性(即描述)。有这样做的惯例吗?据我所知,我无法将它们直接插入\u附件结构中。提前谢谢 您不能直接修改附件中的任何内容,因为它是为CouchDB保留的。但是,使用与\u attachments中相同的键(附件名称)在成员中存储任意属性(如附件属性)是非常合理的。例如:
{
"_attachments": {
"foo.bar": ...,
"xxx.yyy": ...
},
"attachment
我在我的Irishoch CouchDB上启用了JSONP,这样我就可以对我的视图发出ajax请求。
这意味着任何人都可以对我的CouchDB视图发出ajax请求
有没有办法防止这种情况
如果没有,那么有没有办法限制对视图的访问(关闭JSONP),这样只有我的应用程序才能查看(使用代理)?跨域功能仍然很困难。我认为JSONP不允许经过身份验证的请求,因此您使用JSONP的选择是完全公开数据还是完全私有数据
(顺便说一句,如果您关心隐私,请注意您的敌人或脚本编写者或任何可以简单地阅读页面源代码并使
如前所述,我已经在Irishoch上建立了一个数据库。输入了一些记录
我在CouchDB指南书中读到,我需要创建一个映射函数,以便查看我的记录
乙二醇
现在我把这个函数放在哪里。它是否是一个类似MySQL的视图并保存在数据库中?如何将结果保存到我的网页中
我是否以某种方式在Irishoch中创建视图
感谢您的指导,因为这是通常的初步尝试步骤,只是没有得到想法的问题,我还没有找到一个“Hello World”示例来显示所有步骤
谢谢
对我来说,它类似于计算机文件系统上的文件。大多数文件只存储数据。
假设我在一台coach服务器上创建一个附件,并将其复制到另一台服务器。现在两台服务器都有相同的附件
如果我在一台服务器上更新附件并复制到另一台服务器上,coach会执行文件差异并只传输差异吗?还是转移整个附件
如果它可以执行差异,但不是默认情况下,我如何配置它?它传输整个附件
我正在ApacheCouchDB上构建一个非常简单的用户系统。我构建了一个通过电子邮件搜索用户的简单视图:
by_email
map
function(doc) {
if (doc.kind == "user" && doc.email) emit(doc.email, doc.name);
}
这是回报
{"id"=>"00006a80-723b-012f-6b38-1040f398478e", "key"=>"spiderman@spiderman.ai"
我在本地机器上安装了CouchDB,但在运行测试套件后出现了一些错误。我已经附上了我的CouchDB测试套件错误的图片
单击图像以获得更大的版本。显示日志文件中的完整错误。您指的是/var/log/couchdb/coach.logYes中的文件,但仅显示该文件中的错误。您应该能够在日志文件中找到在Futon中看到的错误。他们会有完整的细节。我从哪里只得到错误?我的coach.log太大了。如果您在日志中查找这些错误,可以使用grep或其他方法。
我开始在CouchDB上工作,从Facebook Insights和其他来源收集分析信息。我不确定文档的设计是否正确,希望更有经验的CouchDB用户看到它,并在我将要犯任何重大错误时警告我
{
"_id": "0b69a33807d4cb63680dbebc16000af5",
"_rev": "1-7c9916592c377e32cf83acf746a8647c",
//array of metrics, one element per facebook page, around 10 pa
我有一个移动应用程序,它将数据(从远程CouchDb实例获取)存储到本地SQLite数据库。有时会发生同步请求,我想知道本地数据库中的所有项目是否在服务器上更改了它们的对应项。(因此,它们的版本是否比本地数据库中的版本更新。)
但是,我如何才能只请求本地数据库中的特定项,而不进行数百次单独的请求,也不获取庞大远程数据库中的所有文档
我目前的做法是:对于每个本地文档,首先获取HTTP头,仅当头显示比本地文档更新的版本时,才下载正文。我担心,对于在本地存储大量项目的用户,这将导致大量HTTP请求如何
我正在尝试在主数据库和用户数据库之间设置筛选复制。
主控中的文档包含对文档具有权限的用户组列表
{
_id: 'one',
groups: ['a', 'b']
}
{
_id: 'two',
groups: ['c', 'd']
}
我创建了一个数据库的过滤视图,该视图只允许该组的用户获取复制文档的副本(在本例中,对“a”组进行硬编码)
然后,我在_replicator数据库中创建一个复制文档
{
source: "master",
target: "user1",
我正在尝试使用cloudant搜索查询实现分页
但跳过选项被忽略,如果skip不可用,那么如何实现分页
编辑:
我找到了它,通过书签支持它如果我使用书签选项在第一页上,如何获得第三页或第四页?
我是CouchDb新手,有时需要导出数据库。
直到现在我才使用这个命令
curl -X GET http://127.0.0.1:5984/nomeDB/_all_docs\?include_docs\=true > /Users/bob/Desktop/db.json
curl -d @db.json -H "Content-type: application/json" -X POST http://127.0.0.1:5984/dbName/_bulk_docs
但是这样,在使用
我不小心删除了一个数据库文件,但我有一个备份。coach文件位于/var/lib/couchdb中(如下所述:)
不幸的是,将备份中的my_database.coach文件放入/var/lib/couchdb文件夹并不能解决问题。在Futon中,当我试图打开数据库时,我得到一个弹出窗口,上面写着“Error:unknown Error,function_子句”
它是如何工作的?
备份中的.coach文件是否有修复或集成工具?
我在Windows7上,64位您重新启动了CouchDB服务/进程吗?
在视图中查询文档时,如果未提及limit参数,则显示的文档数量是否有限制
这说明列可以是值列表,列可以容纳的值的数量或数据量没有设置限制。
但不确定这是否意味着我们可以将任何数字作为限制,或者默认情况下它没有限制。我只是想知道,在默认情况下,当没有提到limit参数时,输出文档的数量是否有任何限制 在CouchDB中,如果要进行某种分页或返回数据的子集,则必须指定一个limit参数。在CouchDB中,因此,如果要进行某种分页或返回数据的子集,必须指定limit参数。对于mango查询,默认结果
除了进行客户端过滤或发布一次性的map/reduce(这将导致表扫描)之外,是否有任何方法可以查询标记有tagA或tagB的文档?发出一个带有{“key”主体的POST请求:[“tagA”,“tagB”],“include\u:docs true}到一个带有函数映射(doc){doc.tags.forEach)的视图(函数(标记){emit(标记,1)}
应该可以了耶:)
从中的查询选项部分,如果我错了,请纠正我,但我认为这会返回所有同时标记了tagA和tagB的文档,不是吗?“…[可以发布]只
我真的很喜欢couchdb风格的组织和更新数据,但在一些情况下,我确实需要能够创建一个条目,并在返回给用户之前确定是否已经存在一个等效条目。对于我的应用程序来说,这是绝对必要的唯一情况是用户注册。我可以让所有的用户注册写入转到一个特定的、指定的couchdb实例,称为“注册实例”
我想把用户id散列成一些要使用的id。然后使用此_id执行put,但如果已插入_id,则执行失败。我需要返回给用户,用户名已经被保留,我无法在稍后检测到冲突并解决它,因为用户会觉得他们已经保留了用户名
我不明白为什么c
假设您希望使用修订号作为数据库中文档的状态标志。修订版1用于“原始”文档,修订版2用于特定的“已处理”状态,依此类推。那么,您需要的是仅检索修订版为1的文档,以便可以“处理”这些文档并将其带到修订版2。
有一种显而易见的方法,创建一个从文档中的_rev字段中提取修订号的视图,如
function(doc) {
var rev = doc._rev.split("-");
emit( rev[0], doc);
}
然而,这意味着要使用视图,并且是内置的,难道没有一种直接的方法可以使用“
我有一条从Couchdb到Elasticsearch的工作河流,一切正常,但有时河流停止工作,唯一的解决办法是重新启动ES
有没有办法监视河流,看看它是否在更新?我自己通过创建一个ruby脚本,连接到Elasticsearch和Couchdb以收集最后的序列号,找到了解决方案。如果河流不起作用,则比较数字并发送警报
我尝试使用BigCoach设置2个节点。我在两台机器(例如:may2.test.com)上的/etc/hostname上设置了FQDN。我还编辑了/opt/bigcooch/etc/vm.args:
-名字bigcouch@may2.test.com
-setcookie monster(默认设置)
然后我尝试:
curl localhost:5984->
{“couchdb”:“欢迎”,“版本”:“1.1.1”,“BigCoach”:“0.4.2”}
curl localhost:598
我使用的是CouchDB权限系统,具有每数据库和用户访问权限。每个DB代表一个应用程序,它显示在主屏幕(如概览)和其他位置。我需要一种有效的方法让CouchDB告诉我用户是否有权访问数据库-例如,只返回当前用户有权访问的数据库的GET/\u all\u dbs。当一个页面上显示十几个左右的应用程序时,对视图或文档的轮询速度就太慢了,尽管我仍然可以使用limit=1调整视图轮询。但是没有更好的方法吗?查询数据库的\u security文档
curlhttp://localhost:5984/db_
当我使用自己选择的键时,我知道第一个字符是在“\”之前还是之后(小写键、整数键或另一方面是大写键),但当我使用自动生成的键时,我不知道
那么,我怎样才能排除所有以“设计”开头的内容呢
两种解决方案:
1) 不要使用自动生成的关键点。或者,如果你真的需要它们是随机的,那么就把它们做成类似于'myprefix_'+Math.random()
2) 如果忽略(1),则唯一的解决方案是两个单独的查询:
db.allDocs({include_docs: true, endkey: 'design_'})
标签: Couchdb
replicationpouchdbcloudant
如果我们总是先在本地创建并填充PockDB数据库,然后再使用Cloudant之类的集中式CouchDB服务进行同步/验证,那么会产生任何重大问题吗
考虑这个简化的场景:
您正在建立住宿预订服务,如酒店搜索或airbnb
您希望人们能够在无需创建帐户的情况下访问收藏夹/心脏属性,并将使用PockDB存储此列表
i、 e.这样做的目的是,在没有严格必要的情况下,不要让他们创建一个帐户,从而中断他们的流量
如果用户希望选择加入,他们可以稍后创建一个帐户并接收“服务器端”数据库的凭据以与之同步
标签: Couchdb
replicationconnection-timeout
我有一个网络,有许多不同的节点,每个节点运行一个不同的CouchDB实例。
每个实例在_replicator数据库中都有文档,用于设置与网络的其他一些节点的continuos(master)复制。
这些节点可以在未定义、不可预见的时间间隔内脱机。
复制的一切都很好,但我遇到了一个节点脱机时超时的问题
CouchDB文档说()
“将文档放入/发布到_replicator数据库时,CouchDB
将尝试启动复制最多10次(可配置
在[replicator]下,参数max\u replication\
我在客户端使用pookdb,在服务器端使用CouchDB。我的客户机需要使用过滤器从服务器复制数据
以下是我正在使用的客户端代码:
_db.replicate.from(_remote_db, {
filter: "repl/myfilter",
live: false,
retry: true,
query_params: {
由于我开始使用分页(使用startkey),我无法再获取视图中已过滤记录的总数,因为total_records仅提供未过滤的总数,而行数。length仅提供当前的“页面”长度
因此,我为\u count添加了一个reduce函数,以提供相关记录的数量,但现在似乎我必须运行两个查询
使用reduce:true获取记录数,然后再次使用reduce:false获取实际数据
是否有一种方法可以运行一次查询(我已经尝试了include\u reduce:true,这似乎是合乎逻辑的,但没有)。否,您需要执
我的网站没有了coach DB实例,因此我将vhost配置为指向/dbname/\u design/app/\u rewrite
我希望能够从web浏览器访问索引页,同时仍然通过Ajax访问Coach DB API,因此我在我的rewrites字段中设置了一对重写规则:
[ { "from": "/dbname/*", "to: ../../*" },
{ "from": "/*", "to: *" } ]
这些规则运行良好:我可以通过/dbname/docnameURL访问单个文档,我可
通常,只要你自己不赚钱,你就可以免费使用开源项目。在那一刻,您通常需要购买另一个许可证以换取现金,举个例子。但是我找不到任何关于couchDB的信息。所以我想知道这是否完全是免费的,即使你在上面做生意。您能确认吗?查看站点上的链接,该链接指向Apache主许可证站点
一般来说,Apache许可证是非常开放的,允许您使用它们做任何您想做的事情,前提是您将使用的原始作品归属于Apache,在分发任何Apache项目时分发许可证,并注意您所做的任何修改
要确定许可证对您的特定用途意味着什么,请联系友好
我读过一些关于CouchDB的文章,我对它是“仅附加”的事实很感兴趣。我可能误解了这一点,但据我所知,它的工作原理有点像这样:
数据在时间t0添加到数据库,告知ID为1的用户的名字是“Cedrik Martin”
询问“ID为1的用户的姓名是什么?”的查询返回“Cedrik Martin”
在t1时刻,数据库被更新,告知:“ID为1的用户的名字是Cedric Martin”(将“k”改为“c”)
再次询问“ID为1的用户的姓名”的查询现在返回“Cedric Martin”
这是一个愚蠢的例子
也就是说,所有包含此坐标(对于多边形)或与之相交(对于直线)的对象?您可以将查询的边界框折叠到一个点。请进一步说明。
我正在尝试创建一个couchdb接口,其中多个操作系统的数据库包含具有相同键但使用不同语言的字符串的文档。我想在更新主文件时使用Replicator函数来通知我哪些文档没有更新,哪些密钥需要创建或更新 通过散列文档的内容来创建\u rev字段,因此不可能有两个不同的文档并使用沙发复制
我正在阅读CouchDB一书的开头,在本书第1部分的末尾,有一个命令
$ curl -X GET http://127.0.0.1:5984/contacts/_all_docs_by_seq
我希望得到所有文档的列表,包括已删除的文档,但是我得到了这个列表
{"error":"not_found","reason":"missing"}
我该怎么办
我正在使用UbuntuServer12.04.1LTS,并安装了CouchDB 1.0.1。\u all_docs(带参数和不带参数)工作正常
是否可以使用类似于couchdb的marklogic 6设置双向复制?场景:如果位置a处于脱机状态,则使用位置b上的数据库;如果位置a再次处于联机状态,则自动重新同步。另外,a+b通过两种方式自动推送/syncinc数据,同时使用a->b和b->aMarkLogic有两种复制方式。“灵活复制”将文档复制为逻辑单元,“数据库复制”使用日志框架复制事务性更新
灵活的复制方法可与CouchDB相媲美,因为它通过文档进行写入,并且不会将来自主数据库上事务的写入分组到副本上的事务组中。coach一开始没有
我需要安装一个旧版本的couchdb,Ubuntu 13.10只有1.4。我尝试添加ppa:nilya/couchdb-1.2,但没有成功
我需要从CouchDB传输大量数据。查询返回所有可用的键,我正在为这些键请求文档。可以选择立即获取所有文档。但大小只是传输密钥需要更长的1GB。MongoDB中有这样的任务游标,但它使用不同的协议
我怎样才能一次获得CouchDB中包含的所有文档,一个接一个地找到它们
我试图触摸按键部分,但我在最后一次考虑这个选项。 < /P>
我的couchDB中有一个约10k条目的数据库(~30Mo,无附件)
使用PockDB浏览器端,从沙发上复制时,确实需要一段时间才能完成
让我惊讶的是,我的沙发在此期间收到的请求数量(数千!我猜和文档一样多)-这正常吗
有没有办法“批量”处理这些请求并通常加快复制过程
谢谢。我想您使用的是backdb.replicate功能
在这种情况下,请尝试修改batch\u size选项:
PouchDB.replicate('mydb', 'http://localhost:5984/mydb', {b
我需要设计一个基于云的POS应用程序,但客户要求该应用程序还应具有一些离线设施,并在移动平台和桌面平台上离线工作。(即使没有互联网连接,也不应停止销售)
乍一看,我选择Couchbase作为数据库,JavaEE+Spring作为后端,JSF作为前端
对于手机,我考虑的是Xamarin+Couchbase Lite,它应该与云上的Couchbase同步
我的主要问题是当桌面离线时。从我读到这些数据库后的理解来看,Couchbase Lite仅适用于移动设备
对于这种情况,您建议采用什么配置?因此,
我目前正在玩couchDB,有以下场景:
我正在实施一个问题跟踪程序。要求是每个问题文件(除了文件id外)都有一个唯一的数字序列号,以便以更合适的方式引用
我的第一种方法是使用一个视图,它只返回当前存储的唯一问题文档的计数。在客户端将该值增加1,将其分配给我的新版本并插入该值。
当使用ajax调用插入多个问题或让多个客户端同时添加问题时,结果证明这是一个坏主意。在后一种情况下,如果没有客户之间的沟通,这甚至是不可能的
理想情况下,我希望在coach上生成序列号,因为分布式系统中的状态冲突,这是不
我有一个文档列表(操作员),他们有设备。每个设备都有一个或多个标签。
我想为每个操作员创建一个唯一的标记列表
操作员1:
设备1
标签1
标签2
设备2
标签1
标签3
操作员2:
设备1
标签4
标签2
设备2
标签1
标签3
我希望输出像这样
Operator1 -> Tags: [tag_1,tag_2,tag_3]
Operator2 -> Tags: [tag_1,tag_2,tag_3,tag_4]
如何使用视图(map reduce)执行此操作?
我能
伙计们,我想知道什么是建模文档和/或映射函数的最佳方法,它允许我进行不平等的查询
例如,我的文档是:
1. { name : 'George' }
2. { name : 'Carlin' }
我想触发一个查询,返回name不等于'John'的所有文档
注意:我手头没有所有可能的名字。因此,查询中的参数可以是任意随机文本,如我的示例中的“John”。
简言之:没有简单的解决办法
您有四种选择:
发送多范围查询
使用服务器端列表功能筛选视图响应
使用CouchDB插件
使用芒果查询语言
发送多范
我希望能够在日期之间查询couchdb,我知道这可以用startkey和endkey来完成。它工作得很好,但是否可以像这样进行查询:
SELECT *
FROM TABLENAME
WHERE
DateTime >= '2011-04-12T00:00:00.000' AND
DateTime <= '2012-05-25T03:53:04.000'
AND
Status = 'Completed'
AND
Job_category = 'Installation'
一
我正在尝试设置一个CouchDB部署,它需要能够返回gzip的响应(12mb未压缩响应与400kb压缩响应)。我还需要SSL支持和CORS
我以前曾将Apache用作反向代理,但我发现它对于连接不良的大型复制是不可靠的。我倾向于直接为CouchDB提供服务,而不使用任何代理,我们目前正在CouchDB内部提供SSL服务
我已经成功地设置了这个代理:它使用节点和连接模块(加上cors和压缩)。它非常简单,工作也很好。然后,每当我需要gzip的响应时,我就将请求发送到另一个端口。但这意味着我会丢失这
我正在尝试构建一个包含以下内容的拓扑:
两台台式机通过LAN连接,运行本机应用程序
同一应用程序的web版本
台式机只能间歇性地连接到Internet,因此本机应用程序和web应用程序都需要有单独的数据存储,这些数据存储在联机时同步
为此,我找到了couchdb,它似乎是完美的候选者。我正在Electron上构建桌面应用程序,因此我考虑使用PockDB,并在联机时将其与服务器上的couchdb同步
但问题是,这两台运行带有PockDB的Electron应用程序的台式机需要通过LAN相互同步。
我读过关于我们可以在CouchDB上创建的验证(validate\u doc\u update),但是我不知道如何创建它们。我可以通过Fauxton做这件事吗
Databases -> "mydb" -> Design Documents -> New Doc
这是路吗?我必须将函数声明为字符串吗?我需要一个例子请(有任何一步一步的文件)
谢谢。我知道了。以下是步骤:
通过福斯顿
导航到:数据库->[在此选择您的数据库名称]->所有文档->新文档,然后使用下面的JSON样板文
我正在尝试删除名为的CouchDB数据库:
supertest$my(2e)name(40)myhost(2e)co(2e)uk
数据库名称由Superlogin node.js包自动创建,因此我无法控制名称中$的使用(导致问题的是$)
如果我试图用Fauxton管理界面删除这个数据库,单击delete按钮什么都不会做。我还尝试通过API删除,如下所示:
curl -vX DELETE http://127.0.0.1:5984/supertest$my(2e)name(40)myhost(2
我正在尝试使用从远程CouchDB到本地PockDB的sync()选择器筛选已删除的文档:
selector: {
_deleted: {
$ne: true
}
}
它不会从同步中返回任何文档。如何使用选择器仅同步未删除的文档?您可以使用$exists
selector: {
_deleted: {
$exists: false
}
}
谢谢你的提示!更详细地说,之所以这样做(afaict)是因为与文档摘要()相反,“$ne”操作数实际上似乎意味着“字段[存
博客场景示例
有三个实体:帖子、评论和作者(评论)
我希望收到格式为:Comment.Header Post.Header Author.Name的评论列表
邮递
身份证
标题
正文
作者
身份证
名称
评论
身份证
标题
正文
张贴
作者
使用SQL连接很简单,但我不知道如何在CouchDb中做到这一点,而不需要对每个注释的数据库发出额外的请求,这是完全不可行的。让我们假设您拥有以下实体:
职位
作者
{
"_id": "bbd998617a479940eb536cc84200
我的项目是完美的工作,我唯一的问题是,搜索是案件敏感。它可以很好地搜索子字符串,但如果我键入“Test”,它将忽略作为有效结果的“Test”
我使用它使搜索更容易,并且与cloudant搜索和分页的限制/跳过参数更相关
我正在使用,以便用户键入查询的字符串
以下是我的控制器代码摘录:
@组件({
选择器:“页面注释”,
templateUrl:'notas.html'
})
出口类别批注{
notas:Array=[];
zone:any=new NgZone({enableLongStackT
我希望能够在我的文档中搜索每个项目,这些项目要么没有隐藏项目,要么如果隐藏了项目,只有当它不等于true时才能抓取它。这可能吗
我有以下选择,我得到了一个错误的查询
selector: {
hidden: {$in: [null, false]}
}
例如:
我想把这些归还
{_id: "1", hidden: false, name: "John" }
{_id: "2", name: "Jim" }
{_id: "3", hidden: true, name: "James" }
上一页 1 2 ...
5 6 7 8 9 10 11 ...
下一页 最后一页 共 47 页