SequoiaDB巨杉数据库_SequoiaDB
SequoiaDB巨杉数据库_下载

文档

安装

基本操作

数据模型

系统架构

数据库管理

连接器

驱动

参考手册

故障排除

SAC

版本信息

Web服务

历史版本BUG预警

帮助

  • 内容
  • 评论
  • 修订记录

读写分离

写请求处理

所有写请求都只会发往主节点,如果没有主节点则当前复制组不可处理写请求。

读请求处理

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

最终一致性策略

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

  • 名词解释:
    W :副本写入个数
    R :副本读取个数
    N :副本个数

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

  • 默认情况下,复制组中的主节点在处理完一个写请求后会立即返回,即 W =1。数据同步会在后台异步完成(同步日志并达到最终一致。此时外部的读请求获得的数据可能不是最新的。在对数据一致性要求不高的场景中,这种方式可以提供最优的写入性能。

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

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

    增大 W 可以有效提高数据的一致性和可靠性。当 W = N 并且写请求处理成功后,后续读到的数据一定是当前组内最新的。但是这样会降低复制组的写入性能。值得注意的是,虽然我们可以将W 设为 N,但这并不代表 SequoiaDB中的数据拥有强一致性。当某个副本写入失败(如磁盘满)时,复制组内可能存在多个版本的数据。此时既可能读到新的数据,也可能读到旧的数据。当失败副本恢复正常后,会继续从主节点上同步最新的数据并达到最终一致。

请登陆后再发表评论
最新评论
更新日志
  • 2016-10-20
    v2.8
回到顶部
公司简介
广州巨杉软件专注新一代大数据技术研发,是国内唯一的原厂企业级分布式数据库公司。
巨杉坚持产品从零开始自主研发,为用户提供安全可靠、性能卓越的海量数据存储管理、高并发实时处理、分布式计算以及实时流处理等企业级数据处理解决方案。
巨杉目标是打造超越Oracle的分布式数据库,目前在金融、政府、电信多个行业得到了广泛应用,并在超过20家大中型银行的核心生产系统应用。
粤ICP备13048785号     广州巨杉软件开发有限公司 版权所有