是否可以在使用副本集部署后将分片应用到 Mongo 数据库?
Is it possible to apply Sharding to Mongo DB after deployment with replica set?
我有 Mongo 具有两个副本集的数据库。是否可以对这些副本集进行分片。
分片是关于在称为分片的服务器之间分发数据。在数据库上启用分片,但集合 is/are 分片(分片集群可以有分片和未分片的集合)。在分片集群中,副本集可以成为分片。
因此,两个副本集可以成为分片集群中的两个分片。不过,您必须在数据库上启用分片并对您想要的集合进行分片。
分片集群中的主要组件是:
- mongos:一个路由器进程,用于将您的应用程序查询路由到适当的分片。
- Config server:维护分片集群元数据和分片数据的配置服务器;这是一个副本集。
- Shards:副本集,每个作为一个碎片;这些有数据库数据。
首先需要配置这些组件;要在分片集群中使用的分片副本集、配置服务器副本集和 mongos 进程。然后在数据库上(在副本集上)启用分片。
例如,您有一个名为 'receivables' 的数据库,在两个副本集之一上包含集合 customers
和 invoices
。您选择仅对客户集合进行分片。当客户集合被分片时,客户数据根据定义的分片键分布在两个分片中。定义分片键是分片集合过程的一部分。
事实上,决定哪个字段将成为分片键是分片最重要的方面之一。这决定了效率:(i) 查询将是,(ii) 数据将在分片之间均匀分布,以及 (iii) 未来通过向集群添加分片进行扩展。
分片键很重要。集合中的这个字段必须是不可变的,并且值也必须是不可变的。集合中的所有文档都必须具有分片键字段。
如果您已经有一个 运行 应用程序(带有 MongoDB 数据库)并计划对数据库进行分片,一个重要的考虑因素是:分片键是什么以及它将如何影响当前应用程序(现有查询)。分片不仅仅是在更多服务器之间分发数据,它还涉及应用程序及其数据的设计方面。
有用的链接:
我有 Mongo 具有两个副本集的数据库。是否可以对这些副本集进行分片。
分片是关于在称为分片的服务器之间分发数据。在数据库上启用分片,但集合 is/are 分片(分片集群可以有分片和未分片的集合)。在分片集群中,副本集可以成为分片。
因此,两个副本集可以成为分片集群中的两个分片。不过,您必须在数据库上启用分片并对您想要的集合进行分片。
分片集群中的主要组件是:
- mongos:一个路由器进程,用于将您的应用程序查询路由到适当的分片。
- Config server:维护分片集群元数据和分片数据的配置服务器;这是一个副本集。
- Shards:副本集,每个作为一个碎片;这些有数据库数据。
首先需要配置这些组件;要在分片集群中使用的分片副本集、配置服务器副本集和 mongos 进程。然后在数据库上(在副本集上)启用分片。
例如,您有一个名为 'receivables' 的数据库,在两个副本集之一上包含集合 customers
和 invoices
。您选择仅对客户集合进行分片。当客户集合被分片时,客户数据根据定义的分片键分布在两个分片中。定义分片键是分片集合过程的一部分。
事实上,决定哪个字段将成为分片键是分片最重要的方面之一。这决定了效率:(i) 查询将是,(ii) 数据将在分片之间均匀分布,以及 (iii) 未来通过向集群添加分片进行扩展。
分片键很重要。集合中的这个字段必须是不可变的,并且值也必须是不可变的。集合中的所有文档都必须具有分片键字段。
如果您已经有一个 运行 应用程序(带有 MongoDB 数据库)并计划对数据库进行分片,一个重要的考虑因素是:分片键是什么以及它将如何影响当前应用程序(现有查询)。分片不仅仅是在更多服务器之间分发数据,它还涉及应用程序及其数据的设计方面。
有用的链接: