哪个面向文档的DBMS与erlang应用程序混合?

时间:2010-12-30 11:50:22

标签: mongodb erlang couchdb mnesia nosql

我们正在构建涉及

Yaws,  Nitrogen and Mnesia

的网络应用程序 现在系统的一部分需要键值存储,并发现如果我们将它与系统的其他部分分开,效率和可用性将得到改善。另一个要求是我们在文档存储DBMS中放置的信息应该能够从其他技术访问,如PHP,Java,Python甚至Ruby。

Option1: CouchDB

在负载波动时,couchDB的性能如何?CouchDb提供哪些灾难恢复技术?,归档,备份,文件管理e.t.c怎么样? 我是从远程计算机上的erlang应用程序访问couchDB中的数据,以下哪种机制更好

Using: curl -X [HTTP METHOD] [URI] [REQUEST]
Using Erlang CouchDB drivers [e.g benoitc-couchbeam from github e.t.c]. {do
these drivers require couchDb to be on the same host as the driver?,
Which mechanisms do they use to access CouchDb, i.e.
[do they use its HTTP access APIs?, or built-in Erlang RPC mechanisms?,
TCP/IP sockets?]}
Is there a CouchDb erlang driver that can give me Erlang terms direct?
i.e. if i create a document, can i use any erlang terms in both the Key and
Value?, The JSON data format forces us to use
strings,integers,floats and binaries only

将访问放在一边,使用CouchDb时所选择的访问方法对性能有何影响?

,有多少条记录或说可以将couchDB保存的键值对,我的意思是有限制吗?在CouchDb中是否存在某种类型的文件大小限制,就像它在Mnesia中一样?

Option2: MongoDB

We have MongoDB running and sofar we are accessing it using an Erlang driver
(unofficial) called "erlmongo" from github.But there is a second one called
"emongo". Looking at the implementation of these two shows that both offer
record or property lists (data structures in erlang). We have sofar
tested erlmongo and it is quite fast compared to couchDb
(Perhaps due to Mongo's being implemented in C++).
How much data can mongo handle? is there a limit on file size?
Which erlang driver can be trusted before we go into production with MongoDB?

Now the problem is choosing between these two. MongoDB appears to be stable, 
fast, and multi-platform.CouchDB being implemented in Erlang makes one
think that it provides direct semantics to Erlang programmers to store or even
retrieve Erlang Terms from CouchDB. The biggest problem is which Data store
can give me the highest percentage of assurance that my data is stable,
permanent, and safe.......Help me guys

/joshmuza@gmail.com

4 个答案:

答案 0 :(得分:5)

我们将Couch用于一个Erlang应用程序,其中有150,000个同时连接的用户发出请求。事实是我们在一个单独的erlang节点中运行它,并且我们使用CouchBeam进行访问,这是在发出HTTP请求,因此用Erlang编写的事实没有实际的优势。

我们对Couch和Erlang感到满意,我们甚至将我们对CouchBeam的更改贡献给了该项目。至于支持Couch,由于Futon很容易管理,处理复制很容易。

编辑补充说:我们最初使用的是mnesia而不是Couch,但是如果一个节点发生故障,启动时间不当,会导致mnesia禁止。

顺便说一下,由于数据丢失的危险,我们没有考虑到Mongo,因为它不能保证写入时间长达一分钟,并建议复制作为确保可靠性的手段(我们不会我们要求自己在具有单独电源的独立硬件上运行两个节点。

答案 1 :(得分:4)

  

......我的数据稳定,永久,安全。

在继续使用之前,您可能需要非常仔细地仔细检查MongoDB的持久性保证。 MongoDB被认为是“快速”的原因。免责声明: MongoDB是一个活跃的项目,我只用了很短的几个季度......

答案 2 :(得分:2)

看看Riak。它是用Erlang编写的,并被一些公司用于生产。

答案 3 :(得分:1)

您可以查看Chris Andersen的气垫船库,了解Couchdb的原生erlang驱动程序。

https://github.com/jchris/hovercraft

我没有试过气垫船。我正在使用ecouch(https://github.com/JackDanger/ecouch)作为基于氮气的网络应用程序,到目前为止我对ecouch的体验很好。

正如上面提到的那样,Futon在管理,数据库,创建设计文档,视图,数据库复制等方面都很方便。

基于Lucene的Couchdb有全文索引器和seracher。 (https://github.com/rnewson/couchdb-lucene

Couchdb上的文档大小限制目前为4GB。

以下主题有一些有价值的输入

Anyone using CouchDB?