我推荐使用 MongoDB,对于此 Web 应用程序的需求,其模式应如下所示:
1. 可能有大量用户(500k+) 2. 每个用户都可以输入自己的文档 3. 每个用户可能每月创建 10-200 个文档 4. 每个文档将很小(约 100 字) 5. 用户可以使用自己的标签对文档进行标记 6. 不同用户的数据不会与其他用户及其数据交互 7. 用户可以通过标签搜索他/她的条目 8. 快速访问一个用户的所有条目 9. 用户可以创建复杂的动态查询来查询他/她的数据
但我注意到使用一个巨大的集合进行标签搜索似乎不是一个好主意。我担心索引的大小会非常大,因为每个用户都可以拥有自己的标签。MongoDB 将为整个集合创建标签索引,但我只会从一个用户的条目中搜索标签,而不是从所有用户的条目中搜索。
因此,按用户分配集合的想法似乎更合适,但似乎有一个限制,即一个人最多只能创建多少个集合,这种方法似乎也不理想。
CouchDB 不支持动态查询,因此不适合此应用程序。
在 MongoDB 中,您可以为每个用户创建一个集合,并使用用户 ID 作为集合名称。这将使您能够轻松地按用户分组数据,并允许您使用该用户的 ID 进行快速搜索。
还有一些其他的 NoSQL 数据库,如 Cassandra 和 Riak,也可以处理此类数据模型。
1. 可能有大量用户(500k+) 2. 每个用户都可以输入自己的文档 3. 每个用户可能每月创建 10-200 个文档 4. 每个文档将很小(约 100 字) 5. 用户可以使用自己的标签对文档进行标记 6. 不同用户的数据不会与其他用户及其数据交互 7. 用户可以通过标签搜索他/她的条目 8. 快速访问一个用户的所有条目 9. 用户可以创建复杂的动态查询来查询他/她的数据
但我注意到使用一个巨大的集合进行标签搜索似乎不是一个好主意。我担心索引的大小会非常大,因为每个用户都可以拥有自己的标签。MongoDB 将为整个集合创建标签索引,但我只会从一个用户的条目中搜索标签,而不是从所有用户的条目中搜索。
因此,按用户分配集合的想法似乎更合适,但似乎有一个限制,即一个人最多只能创建多少个集合,这种方法似乎也不理想。
CouchDB 不支持动态查询,因此不适合此应用程序。
在 MongoDB 中,您可以为每个用户创建一个集合,并使用用户 ID 作为集合名称。这将使您能够轻松地按用户分组数据,并允许您使用该用户的 ID 进行快速搜索。
还有一些其他的 NoSQL 数据库,如 Cassandra 和 Riak,也可以处理此类数据模型。