我刚开始使用 couchdb,但我有后端编程和关系数据库的背景。
我想将我的知识从 mySQL“迁移到 CouchDB”。尽管我找到了很多有关安装和入门教程的信息,但我在实际将关系模型“转换”为 CouchDB 文档存储时遇到了麻烦。而且我知道,我需要彻底重新调整我的思维方式......
我想以尽可能最好的方式解决这个问题,所以我开始了一个基本练习。我有一个来自实际使用的软件应用程序的简单关系模型。为了简单起见,我减少了字段的数量。
案例
我们有一叠卡片。每张卡都有自己的属性(id、name、imgpath 等)。每个用户都可以在自己的卡片集合中拥有从堆栈中随机挑选的卡片集合。
MySQL
在 mySQL 中有 3 个表:
- 用户[ID、名称、密码]
- 卡片 [id、名称、值 1、值 2、imgpath 等]
- 用户卡[用户 ID、卡 ID]
其他相关信息:
- 我们拥有超过 10,000 名用户,并且还在不断增长。
- 它适用于移动应用,因此速度非常重要。
- 我们(现在)为每个用户使用不同的 db.scheme,每个用户为每个方案分配了自己的用户权限。 (一旦做出有关安全的决定)。
CouchDB 问题
在 CouchDB 文档模型中存储用户和卡的最有效方法是什么? (那么我该如何“翻译”表格呢?)
为每个用户创建数据库/方案还是将其全部存储在 1 个数据库中是否更高效/更安全?
显然,现实应用程序本身涉及更多的表和字段,但我只需要一个坚实的起点,希望可以从那里开始。
预先感谢您的帮助!
最佳答案
What is the most efficient way of storing the users and cards in the CouchDB Document model? (So how do I "translate" the tables?)
- 将用户文档存储在内置
_users
数据库中 - 将卡片存储在单独的存储桶 (db) 中
- 将映射cards2user实现为 View
Is it efficient/more secure to create a database/scheme for each of the users or just store it all in 1 database?
这取决于应用程序的需求:
如果您需要控制对卡的读取访问,您将需要每用户数据库方法。
如果您只需要控制写访问,我建议使用一个数据库来控制所有卡。
在这两种情况下,用户帐户都存储在用户数据库中。
关于mysql - couchdb 相当于关系数据库模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29446643/