2010-06-22 42 views
1

所以我一直都搞乱气垫船和遇到一些是烦人的限制,这可能是有原因在于内部与键/值对CouchDB中涉及的文件为不透明的字符串相关联的事实(json字符串)。CouchDB的气垫船限制,存储任意的Erlang字词的CouchDB

namelly:
- DOC _id的只能是二进制字符串(UTF8) - 这里
允许没有复杂的Erlang术语 - 键/值对只能是(不允许元组,或任意的二进制文件)binatry_strings或原子或列表。

我很期待在那里存储任意的erlang术语,而不必先将它们编码为JSON。是的,这是可能的,但然后整个视图系统(和http api,通知,验证,索引)停止工作。
这太好了,我可以在它周围编码,不使用蒲团,手动映射/缩小文档,并将结果存储为文档(实际上,这些结果可以更好地复制到其他数据库/节点,而不像视图结果哪个不复制 - 纠正我,如果我错了))。

真正的问题似乎没有一个意见不能得到所有存储在一个数据库中的密钥列表,至少不是通过目前的气垫船API。这是一个用于在整个数据库上手动映射的show stoper,而不必事先知道doc _id的内容。

任何想法如何我可以得到一个数据库中的这些键列表?通过erlang调用,可能进入couchdb的内部?

它对我来说更加明显,现在couchdb的直接erlang api已经足够了。

+0

即时通讯思想,看起来更加友好二郎 – deepblue 2010-06-23 02:09:22

回答

2

由于气垫船的作者,我同意该声明“为CouchDB的直接Erlang的API是一个总的afterthough。”

,才应使用气垫船,如果你是从一个HTTP服务器的说,SMTP服务器转换CouchDB的。 HTTP会比气垫船好得多。

应该可以使用内部_changes API遍历所有文档在数据库中,递增地保持二级索引。

至于存储在CouchDB的非JSON数据,听起来很冒险的,因为没有人会看着窗外,以确保我们不打破你的使用情况。

但是,如果你有乐趣,一定要继续。我喜欢让补丁来气垫船,所以任何一件小事可能会得到在回滚。

谢谢, 克里斯

切换到了Riak