读写分离

    读请求会按照会话(连接)随机选择组内任意一个节点(对外透明),或按照当前会话(连接)配置的优先实例策略选取相应复制组的数据节点。在一次会话中如果上一次查询(包括 query 和 fetch)返回成功,则下一次查询不会重选节点;如果上一次查询发生失败,则下一次查询将重选节点。如果没有可用节点则返回失败。一次查询中不会重选节点。

    • 复制组实例

    复制组中的每个数据节点都存储该复制组的一份完整数据,因此也称复制组中的每个节点为复制组实例。复制组实例可根据节点在复制组中的状态或者实例标识配置,分为 "主","备" 或 "1 - 255" 标识。

    • 数据库实例

    所有复制组中相同位置的复制组实例共同构成数据库实例,因此数据库实例也可以分为 "主","备" 或 "1 - 255" 标识。

    为了提升数据的可靠性和实现数据的读写分离,SequoiaDB中,对于复制组间的数据采用“最终一致性”策略,在读写分离时读取的数据某一个时期内可能不是最新的,但最终是一致的。

    • 名词解释:

    在 SequoiaDB 中,设置 R 的值为1,且不可配置。

    • 当我们时,可以通过 ReplSize 属性指定集合的 W 值。

      • 默认情况下 W = 1。
      • 当 ReplSize 等于0时,W 的个数会根据当前复制组的 N变化而变化。即,如果开始组内有三个节点,则 W 等于3。当新增加一个入节点时,W 会自动变为4。