MongoDB的路由器(Mongos)


  • Lv 1

    【MongoDB简介/设计理论/使用技巧】

    MongoDB的路由器(Mongos)

    1. 前言:
    前一节我们简单提到了MongoDB的集群架构,也许有人看到数据被切分并存储到这么多的分片/副本集中,对于实际存取MongoDB数据开始担心,担心如何抓取数据,是否要在哪里做好元数据的纪录,读取数据时是否还要多一个合并步骤来整合各分片上的数据。
    其实,上述的数据抓取过程相关的繁杂工作,Mongos(路由器)都帮你完成了,本章节我们将带各位了解Mongos是如何帮我们解决这些恼人的问题。

    2. Mongos介绍
    Mongos在MongoDB架构中扮演一个查询路由器的角色,作为提供客户应用程序与数据库集合交互的接口,对应用程序而言,数据是整体且未被切分(分片)的,简而言之,mongos让应用程序将MongoDB集群视为单一数据库实例操作使用,这有助于应用程序开发存取数据功能时的便易性。
    Mongos本身不会保存数据的查询目录或是索引讯息,这些元数据是保存在配置服务器中(Config Server),因此mongos本身属于轻量级的服务,可以同时存在多个mongos对MongoDB集群做存取,可考虑跟应用程序放在同一台服务器,如此,应用程序服务器挂掉时,mongos也随之失效,不会有mongos闲置的状况。
    请特别注意,如果您的MongoDB是一个集群,请避免直接访问分片,务必透过mongos进行所有操作,否则容易造成严重后果。

    2.1. Mongos存取数据
    当数据在集群有做分片的情况下,应用程序做查询或写入只需要经过mongos,下图为mongos根据片键字段对应的配置信息直接找出对应的位置进行读写并回传给应用端,不过,若查询条件不包含片键字段的话,mongos仍须到所有分片中查找数据,效率较低。

    0_1477013237668_Mongos的資料插入_7.1.01.jpg


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待