TL; DR
是否可以直接从Erlang访问CouchDB,意味着使用Erlang中的函数调用?此外,我希望这不是围绕通用REST API的“包装”,而是如果可能的话,真正的“直接联系”。换句话说,我想在我正在编写的Erlang应用程序中使用CouchDB“嵌入”,或者反过来(在CouchDB中“嵌入”我的应用程序)。换句话说,我想在Erlang中使用CouchDB,因为可以使用Mnesia或其他任何东西(只需访问一个或多个模块,启动一个Erlang应用程序,无论如何)。
编辑:CouchDB和我的应用程序在同一个Erlang VM中,如果可能的话。
LONGER VERSION
我目前处于评估一堆所谓的'no-sql'数据库的(长期,令人头痛的)过程中。我需要使用Erlang中的这样一个数据库,但和大多数其他的Erlang一样,这是一个笑话。我会找到一个似乎符合我需求的数据库,然后找出唯一可用的驱动程序是一个'笑话'驱动程序,有人发布在github上,这是旧的,没有官方支持,实验性等等。然后我回到画板,只是再次绊倒。最近,我评估了MongoDB并喜欢我所看到的内容。唉,驱动程序是一些github发布的东西,由于语法错误而无法编译。我'破解'代码以消除语法错误,但实际上不知道代码的错误部分是什么,因此强烈怀疑我没有修复它来做开发人员的意图(因此我确定我引入了bug或逻辑错误)。因此,再次回到绘图板。
主要的问题是Erlang不是Python或Ruby或[插入其他流行的'热'语言],因此一旦你深入研究Erlang中没有包含的任何内容,它就不会得到很好的支持。这永远是一种痛苦。
还有一些说明:
Riak似乎没有做我想做的事情(它有一些'最终的一致性'模型,因为我需要类似ACID或交易的东西,至少部分,至少对某些事情而言。)
我确实偶然发现了CouchDB的一些'Hovercraft'东西,但无法确定它是否符合我在这篇文章中所要求的内容。
Mnesia仅限4GB表或其他任何东西,所以就这样了。
我真的只是想快速回答是否更全面地评估CouchDB,或者再次回到绘图板。
我们也欢迎您推荐您认为符合我要求的任何解决方案(即数据库)。
感谢。
答案 0 :(得分:1)
是的,你可以。有hovercraft,但您可能需要更新它以匹配现代API。由于主要通信接口是REST API,因此CouchDB的Erlang API不能保证现在的稳定。
如果您需要更多内容,可以查看RCouch分叉。这是使用钢筋的一点点增强型CouchDB的静态分布,并且可以比原始项目更容易嵌入。
答案 1 :(得分:0)
最好的选择是CouchDB插件(sample plugin + brief plugin video)
基本上,你可以编写一个直接用CouchDB加载的Erlang应用程序,这样你就可以访问所有的内部。不幸的是,它没有很好地记录还。然而,这是他们正在努力制作非常简单的下一个主要内容,所以如果你向mailing list提问,(dev可能是你最好的选择),你可能会得到很多帮助。