从rdbms表到couchdb数据库表

从rdbms表到couchdb数据库表,couchdb,rdbms,Couchdb,Rdbms,我们正在创建一个新的web应用程序,并打算使用CouchDB。旧的web应用程序正在被重写,我们正在从RDBMS迁移到CouchDB。我有一个包含10多个表的RDBMS模式,我想在CouchDB中重新创建相同的模式。在CouchDB中,哪种方法更好 选择权 在CouchDB中为我的RDBMS模式中的每个表创建一个新数据库 在CouchDB中只创建一个数据库,并将所有RDBMS表存储到此CouchDB中,其中有一个名为doc_type/table_type的显式列来表示它在RDBMS表中表示的表/

我们正在创建一个新的web应用程序,并打算使用CouchDB。旧的web应用程序正在被重写,我们正在从RDBMS迁移到CouchDB。我有一个包含10多个表的RDBMS模式,我想在CouchDB中重新创建相同的模式。在CouchDB中,哪种方法更好

选择权

  • 在CouchDB中为我的RDBMS模式中的每个表创建一个新数据库

  • 在CouchDB中只创建一个数据库,并将所有RDBMS表存储到此CouchDB中,其中有一个名为doc_type/table_type的显式列来表示它在RDBMS表中表示的表/行类型

  • 这些方法的优缺点是什么?推荐的方法是什么?

    这取决于具体情况

    一般来说,不要天真地试图将RDBMS模式“翻译”为CouchDB——它很少有好结果。关系模式——如果设计得当——将被规范化,并依赖于多表联接来检索数据。在CouchDB中,您的数据模型(可能)不会被规范化得太多,相反,文档单元表示表中的一行或关系数据库中连接返回的一行

    在CouchDB中,文档单元上方没有连接,也没有原子事务。当为CouCHDB设计数据模型时,考虑数据是如何被访问和更改的。需要在原子上访问的内容属于同一文档

    对于多个数据库与带有“类型”字段的文档的单个数据库相比,单个数据库选项允许您在整个数据集中轻松执行map reduce查询。如果使用多个数据库,这是不可能的,因为map reduce视图严格按照每个数据库设置。数据库的数量应该由访问模式决定——如果您拥有的数据仅由应用程序查询的子集访问,并且不需要对其他数据进行切片和切割,这些数据可以存放在单独的数据库中


    我还建议您在和Cloudant中查看新的分区数据库功能。

    不可能为您的问题提供可靠的答案。FWIW我一直使用文档类型,通常作为视图进行投影,取得了巨大的成功——但里程数根据问题域的不同而有所不同。我建议首先阅读关系数据模型和文档数据模型之间的差异,例如和。祝你好运虽然CouchDB不是SQL术语中的连接,但它支持文档连接,在链接文档时提供实用程序。