我正在与有讨论和撰写博客的用户建立一个站点,并计划使用 MongoDB 作为该站点的数据库。哪种架构选项会更有效并允许它们之间更轻松的数据流:
一个包含博客集合、讨论集合和用户活动集合的数据库?每个集合都会被适当地分片。
博客数据库、讨论数据库和用户活动数据库?每个数据库都将被分解为集合并根据需要进行分片。
我正在与有讨论和撰写博客的用户建立一个站点,并计划使用 MongoDB 作为该站点的数据库。哪种架构选项会更有效并允许它们之间更轻松的数据流:
一个包含博客集合、讨论集合和用户活动集合的数据库?每个集合都会被适当地分片。
博客数据库、讨论数据库和用户活动数据库?每个数据库都将被分解为集合并根据需要进行分片。
将所有内容放入单个数据库或多个数据库中不会有很大的不同,直到您发现您需要做一些在数据库级别处理的事情,例如访问控制,或将数据库文件放在单独的物理设备上(以减少 I/O 争用)。
此外,当前锁定粒度是在数据库级别上,因此如果您碰巧有大量的小写操作让它们进入不同的数据库,这意味着它们不会争用同一个锁。由于您预计分片,您还可以将每个数据库放在不同的分片上,这可能允许您推迟实际需要对任何特定集合进行分片,因为每个分片只会处理该数据库集合的流量。
我会说,如果您有疑问,请继续将它们放在单独的数据库中,这不太可能造成伤害并且可能会有所帮助。
Mongo 可以,但根据您的经验,熟悉它可能需要一些时间。
如果您使用 MySQL(或其他 SQL 数据库),您可能会更轻松。您可能应该为您的博客、讨论和活动创建单独的表,而不是多个数据库。
另一个需要考虑的因素是数据库的大小。SQL 数据库适用于大多数应用程序,即使是相当大的应用程序。MongoDB(和其他 NoSQL 数据库)非常适合扩展大数据。
希望这可以帮助!