问题标签 [couchdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-s3 - 结合关系和基于文档的“数据库”
我正在开发一个关于媒体归档、搜索、上传、分发以及处理 BLOB 的系统。
我目前正在尝试找出处理 BLOB 的最佳方法。对于具有大量内存和巨大磁盘的高端服务器,我的资源有限,但我可以访问大量中等性能的现成计算机并将它们连接到 Internet。
因此,我决定不将 BLOB 存储在中央关系数据库中,因为在最坏的情况下,我将拥有一个非常重的数据库实例,可能在单个普通机器上。不是一个选择。
将 BLOB 作为文件直接存储在文件系统上并将其路径存储在数据库中也有些难看,并且必须手动管理分发,自己跟踪不同的副本。我什至不想接近那个。
我查看了 CouchDB,我真的很喜欢他们基于点对点的设计。这将允许我在 Internet 上运行分布式机器集群,这意味着:
- 低成本硬件
- 开箱即用的冗余和故障转移分发
- 轻量级 REST 接口
因此,如果我没记错的话,可以这样总结:Cloud like API and self-managed,distributed,replicated system
系统的其余部分执行任何普通 Web 应用程序所做的正常工作:处理会话、安全性、用户、搜索等。对于这一部分,我仍然想使用关系数据模型。(CouchDB 声称不能替代关系数据库)。
因此,我将拥有所有标准数据,包括关系数据库中的 BLOB元数据,但 CouchDB 中的 BLOB 本身。
您认为这种方法有问题吗?我错过了什么重要的东西吗?你能想出更好的解决方案吗?
谢谢!
database - CouchDB 和 Amazon S3 的通用接口
我刚刚阅读了大量关于 Amazon 的 S3 和 CouchDB 的资料。也许还不够,所以这是我的问题:
这两个系统听起来都很吸引我。CouchDB 使用 Apache License V2 和 Amazon 的 S3 分发,您按存储的兆字节和您生成的流量付费。所以金钱上还是有一点区别的。
但是从技术的角度来看,据我了解,这两个系统都可以帮助您存储任意大小的非结构化数据(取决于我从 CouchDB 了解的底层操作系统)。
我不知道为它们提供一个统一的接口有多容易,这样您就可以在需要时更改您的“数据存储提供者”?无需更改任何代码。
我也不知道这在技术上是否容易可行,还没有详细查看他们的协议。但是,最好将提供者的决定推迟到尽可能晚。
对于集成测试目的,这也可能很有趣:例如,您可以针对本地 CouchDB 实例进行测试,然后针对 S3 运行您的代码以供生产使用。
从另一个角度提出我的问题:亚马逊的 S3 和 CouchDB 本质上是解决完全相同的问题,还是这很疯狂,我错过了重点?
更新的问题
在吉姆的精彩回答之后,让我将问题改写为:
“CouchDB 和 Amazon SimpleDB 的通用接口”
按照同样的思路,您是否发现 CouchDB 和 SimpleDB 之间的通用接口存在问题?
database - 是否有轻量级、可嵌入的键/值数据库?(类似于减肥沙发数据库)
我想知道那里是否有一个轻量级、可嵌入的键/值数据库。
类似于轻量级 Couchdb(RESTful、键/值等)的东西,您只需将键发送给它,它就会以适当的值响应。
谢谢!
erlang - CouchDB:Erlang 中的 map-reduce
如何在 Erlang 中为 CouchDB 编写 map-reduce 函数?我确信 Erlang 比 JavaScript 更快。
javascript - 复合 CouchDB 键的最大值是多少?
我正在使用似乎是创建连接视图的常用技巧:
我知道我可以使用以下查询来获取单个customer
和所有相关Order
的 s:
但是现在我已经将我的查询与我的视图代码非常紧密地联系在一起。是否有一个值可以放在我的“ 2
”处,以便更清楚地说,“我希望一切都与这个客户相关联”?我想我见过
但我不确定那{}
肯定会排在其他所有事情之后。
归功于 cmlenz的join 方法。
CouchDB wiki page on collation的进一步说明:
该查询
startkey=["foo"]&endkey=["foo",{}]
将匹配第一个元素中带有“foo”的大多数数组键,例如["foo","bar"]
and["foo",["bar","baz"]]
。但是它不会匹配["foo",{"an":"object"}]
所以在排序顺序{}
中很晚,但绝对不是最后一个。
javascript - 如何干燥我的 CouchDB 视图?
如何在 CouchDB 中的视图之间共享代码?
示例 1 -- 实用方法
Jesse Hallett有一些很好的实用方法,包括
我可以把这段代码放在哪里,以便每个视图都可以访问它?
示例 2——常量
同样对于我在我的应用程序中使用的常量。我在哪里放
示例 3——过滤器的过滤器:
如果我想要一个按“这是一个有钱人吗?”过滤的视图怎么办:
另一个按姓氏索引:
如何将它们组合成“姓氏富人”视图?
我有点想要 Ruby 的等价物
我怎样才能成为 DRYer?
performance - 哪些无模式数据存储提供了良好的性能?
我最近编写了一个使用couchdb
. 我喜欢 couchdb,它适合这个应用程序——它有很多动态行为,只是直接从 couchdb 中提取 JSON。能够通过浏览器上传图像非常好,并且可以轻松地对文档数据进行调整。复制也使部署变得轻而易举,因为该应用程序是一个 couchapp,部署所需的只是复制到生产服务器。
然而,对于一个我正在考虑的新应用程序(想想博客类型的东西),我想要良好的性能,这是我认为 couchdb 不强的一个领域。该应用程序将主要面向读取(我估计 90% 读取到 10 % 写入)。
哪些数据存储在单服务器方案中提供最佳性能?我很想听听人们在这方面的经历......
couchdb - 如何在 CouchDB 上执行参数化查询
我想使用 CouchDB 为我存储一些数据,然后使用 RESTful api 调用来获取我需要的数据。我的数据库称为“测试”,我的文档都有类似的结构,看起来像这样(其中 hello_world 是文档 ID):
我想做的是让我的用户发送一个查询,例如:“给我所有包含'hello world'的文档。我一直在玩视图,但它看起来像它们只允许我将这些值中的一个或多个移动到映射函数的“关键”部分。这使我能够执行以下操作:
http://localhost:5984/test/_design/search/_view/search_view?key= "你好"
但这不允许我让我的用户指定他们的查询字符串。例如,如果他们搜索“hello world”会怎样。我必须做两个查询:一个用于“hello”,一个用于“world”,然后我必须编写一堆 javascript 来组合结果、删除重复项等(YUCK!)。我真正想要的是能够做这样的事情:
http://localhost:5984/test/_design/search/_view/search_view?term= "你好世界"
然后在视图 map/reduce 函数中使用参数“hello world”来查找 tags 数组中同时包含“hello”和“world”的所有文档。CouchDB 甚至可以实现这种事情吗?在我没有想到的视图中是否有另一种方法可以实现这一点?
couchdb - CouchDB - 带参数的查询
我是 CouchDB 的新手,我知道我的思维方式在关系数据库领域可能仍然太多,但这里是:
似乎在 Couch 上的查询都是通过 Views 完成的。我读到临时视图效率非常低,应该在生产中避免。
所以我的问题实际上是如何使用参数进行有效查询(因为视图不接受它们)。例如,如果我要使用 Couch 为博客网站提供动力,我是否必须为每个帖子创建一个新视图,相当于“从 id=1 的帖子中选择帖子”。
我知道我可以在查询的同时使用 lucene 对结果进行全文搜索,但这仅对文本内容而不是数字真正有用。
我很高兴创建大量静态视图,因为它们可以非常简单地动态创建。我担心这不是 Couch 应该被使用的方式,我错过了一些东西。随意启发我。
干杯,克里斯。