
数据库文档数据库分布式数据库【免费下载链接】rethinkdbThe open-source database for the realtime web.项目地址https://gitcode.com/gh_mirrors/re/rethinkdb点击查看免费下载本指南以仓库根目录的 NOTES.mdRethinkDB 官方发布说明完整覆盖 1.2.0 至 2.4.4 共四十余个版本为核心骨架系统梳理 RethinkDB 2.x 时代的关键功能演进写钩子、位运算、原子 changefeed、Raft 自动故障转移、用户权限与 TLS、JSON 驱动协议等、各版本升级兼容性约束与命令行参数变化并对照 src/ 目录下的源码实现给出可验证的底层依据。读完本文你将能够快速定位某个 RethinkDB 功能是在哪个版本引入或修复的掌握从 1.x 升级到 2.4.x 的完整迁移路径与混布限制理解发布说明中关键术语如emergency_repair、write_hook、include_initial在源码中的实际落点。一、NOTES.md 是什么一份持续十年的版本史NOTES.md 是 RethinkDB 项目的发布说明归档文件采用按时间倒序排列的 Markdown 结构从 2.4.4Night of the Living Dead一直回溯到 1.2.0Rashomon2012 年的首个正式发布。每个版本条目通常包含以下固定小节版本代号与发布日期如Release 2.3.0 (Fantasia)每个主版本拥有独立的电影风格代号Compatibility / Notes数据文件迁移要求、跨版本混布mixed-version cluster限制、官方包支持范围API-breaking changes破坏性变更清单决定升级时是否需要改代码Changes / New features / Improvements / Bug fixes按 Server、ReQL、Web UI、Compilation、各语言驱动等模块分类的明细Contributors外部贡献者致谢名单。这份文件的特殊价值在于它同时是功能发现手册某个 ReQL 命令何时出现、升级决策依据哪些版本不能混布、哪些数据文件会自动迁移和故障排查线索Guarantee failed类崩溃对应哪些已修复问题。由于 RethinkDB 的官方 API 文档已随旧版站点停止维护NOTES.md 配合 src/ 源码是目前在仓库内确认功能行为最可靠的本地依据。二、2.x 主版本脉络四条清晰的技术主线从 2.0 到 2.4RethinkDB 的发布节奏呈现明显的主线推进。下表是对 2.x 五个主版本主题的归纳均出自 NOTES.md 原文表述版本代号主题代表性能力2.0.0Yojimbo首个生产就绪发布get_all/unionchangefeed、单连接并行多查询、负零索引一致性2.1.0Forbidden Planet高可用重构Raft 自动故障转移、emergency_repair、投票/非投票副本、fold2.2.0Modern Times原子 changefeedinclude_initial原子初始结果、JSON 驱动协议取代 protobuf2.3.0Fantasia安全与 Windows用户/权限系统、TLS 加密、Windows 原生支持2.4.0Night of the Living Dead写入扩展写钩子、位运算、表名支持连字符值得注意的是发布时间的特殊性2.3.x 系列2016 年之后项目一度停更2.4.0 于 2019-12-19 发布2.3.6 则是 2017 年 7 月由 Open RethinkDB 社区志愿者在项目加入 Linux 基金会后发布的首个版本NOTES.md 明确记载了许可证切换为 ASLv2。理解这条时间线有助于判断某个能力在哪个年代被引入以及混布限制是否与本集群相关。三、2.4写钩子、位运算与编译修复2.4.0 是 2.x 系列中功能增量最大的一个版本NOTES.md 将其定性为 introduces write hooks and a few other enhancements。3.1 写钩子Write Hooks写钩子是 2.4.0 引入的服务器端机制set_write_hook和get_write_hook命令可以给表挂载一个函数从而modify the behavior of any write改动任何一次写入的行为对应 issue #5813。在源码中这两个 ReQL 术语实现在 write_hook.ccset_write_hook_term_t通过env-env-reql_cluster_interface()-set_write_hook(...)写入钩子write_hook.cc 附近get_write_hook_term_t则通过get_write_hook(...)读取write_hook.cc 附近从文件结构看钩子元数据与表配置table_config耦合NOTES.md 在 API 破坏性变更中明确指出Write hooks add a new field to the table configuration而 table_config.cc 中确有 write_hook 相关的配置读写逻辑。由于这是 API 破坏性变更表配置新增字段从 2.3.x 直接升级到 2.4.0 时涉及表配置的自动化脚本需要重新检查序列化兼容性。3.2 位运算Bitwise Operators2.4.0 为数字类型新增了位运算符bit_and、bit_not、bit_or、bit_sal或bit_shl、bit_sar、bit_shr、bit_xorissue #6534。源码实现位于 arith.cc文档字符串中说明了这些运算在区间[-(2^53), 2^53-1]上封闭因此禁止153这样的参数arith.ccbit_shift_term_t提供bit_sal左移与bit_sar算术右移两个移位实现arith.cc术语枚举与make_bit_not_term等在 terms.hpp 中注册。从实现细节看位运算的闭包区间设计2^53与 JavaScript 驱动中 IEEE 754 双精度整数的安全范围一致这是一个值得在应用中注意的边界超出该范围的位运算结果不受保证。3.3 2.4.x 其余关键修复一览版本关注点代表性条目2.4.1Bug fix 发布aarch64 上 clang 构建修复、Linux Mint 20 构建修复、Data Explorer 允许表/库名含连字符2.4.2位腐烂与前瞻性修复r.js由 v8 切换为 QuickJSAPI 破坏、移除 127 线程上限、r.http强制 HTTP/1.1、修复 Raft 日志索引 32 位溢出、Apple M1 构建、Web UI 被移出主仓库old_admin分支2.4.3Windows 发布TLS 支持证书链、--initial-password帮助文本改进、rethinkdb version输出增加机器架构与 uname、OpenSSL 升级到 3.0.7、Windows 构建QuickJS 切换为 QuickJSpp2.4.4收尾修复32 位 ARM 上未对齐内存访问/总线错误修复、修复 zlib 下载 URL、Data Explorer 自动补全修复其中 2.4.2 的r.js引擎切换值得单独强调NOTES.md 明确警告性能与 JavaScript 代码的运行结果可能不同——因为 v8 版本过旧QuickJS 支持更新的 JS 特性但两者对同一段代码的语义/性能表现存在差异升级前必须回归测试所有r.js调用。四、2.3用户权限、TLS 与 Windows 原生支持2.3.0Fantasia是功能面最广的版本之一NOTES.md 概括为 a users and permissions system, TLS encrypted connections, a Windows beta, and numerous improvements to the ReQL query language。4.1 用户与权限系统用户账户、认证与访问权限通过users系统表和permissions系统表或grant命令配置issue #4519。权限可以授予到系统表2.4.0 进一步允许对系统表授权。升级时的密码迁移逻辑非常明确迁移旧集群时若原auth_key已设置则它变为admin用户的密码若未设置auth_key迁移时自动创建空密码的admin用户加入受保护集群的新限制若目标集群的admin用户已设置非空密码新服务器必须也设置了密码才能加入以避免不安全状态。4.2--initial-password与安全入群对应上述限制2.3.0 新增--initial-password命令行选项issue #5490其取值语义为--initial-password auto启动时生成随机admin密码加入集群完成后被集群既有配置覆盖——用于安全地加入有密码保护的集群--initial-password password显式指定密码。该选项在源码中的实现位于 command_line.ccparse_initial_password_option解析取值随后作为auth_semilattice_metadata_t(initial_password)传入集群元数据command_line.cc 与 #L1496 附近。2.4.3 还专门改进了它的帮助文本。4.3 TLS 与绑定控制2.3.0 为驱动连接、集群内部连接与 Web UI 连接引入了 TLS 加密Linux/OS XWindows 除外驱动连接与集群连接支持证书校验#5381。与此同时--bind被拆分为三个独立选项#5467选项作用--bind-http覆盖 Web 控制台的监听地址--bind-driver覆盖客户端驱动端口的监听地址--bind-cluster覆盖集群内部连接的监听地址源码中这三个选项在同一声明块中定义command_line.cc并在启动时分别调用get_local_addresses(...)解析command_line.cc。2.3.2 又补充了--tls-min-protocol降低最低 TLS 协议版本解决旧 OpenSSL 驱动的连接问题与--cluster-reconnect-timeout控制重连放弃时长等运维选项。4.4 2.3.x 的其他重要变更API 破坏eqJoin默认不再按第一输入顺序返回结果需显式{ordered: true}地理多索引产生重复结果需.distinct()orderBy(...).limit(...).filter(...)形式的 changefeed 被禁止r.wait/r.rebalance/r.reconfigure不能再在全局r上调用必须显式作用于数据库或表对象如r.db(test).wait()。ReQL 增强新增fold有状态流变换源码见 seq.cc 的make_fold_term#L904insert支持自定义冲突解决函数changes新增includeOffsets、includeTypes选项union新增interleave选项。系统表变化2.3.0 起server_status新增connected_to字段current_issues新增non_transitive_error、memory_error等 issue 类型table_status的primary_replica更名为primary_replicas数组。Windows2.3.3 起 Windows 支持从 beta 转正2.3.2 修复了 Windows beta 中表增长超过 4GB 的数据损坏问题#5719。五、2.2原子 changefeed 与 JSON 协议收官2.2.0Modern Times的核心是原子 changefeedatomic changefeeds先把数据库中的既有值作为初始结果包含进 changefeed再原子地过渡到流式更新。这让实时应用可以用同一套代码路径完成初始数据填充 持续实时更新两件事大幅简化了开发模型。5.1include_initial与相关 API 变化此前.orderBy.limit与.get查询的 changefeed 默认提供初始结果2.2.0 起必须显式传includeInitial: truePython/其他驱动为include_initial到.changes#3579。新增changefeed_queue_sizeoptarg控制服务器在 changefeed 上缓冲多少变更后报错#3607。2.2.2 修复了include_initialchangefeed 漏变化、卡在 ready 状态、输出意外null初始结果等三个问题#5216、#5157、#5153因此 2.2.1 及更早版本不能与 2.2.2 混布。5.2 驱动协议protobuf 时代的终结2.1.0 起 protobuf 驱动协议被标记为 deprecated2.2.0 正式移除JSON 协议成为唯一驱动协议#4601。这直接影响旧 protobuf 驱动含当时未更新协议的社区 Java 驱动无法连接 2.2.0部分ReqlDriverError被改为ReqlCompileError#4669应用的异常捕获逻辑需要相应调整2.1.6 是专门面向仍依赖旧协议的用户的 legacy bug fix release与 2.2.4 同时修复了 #5289 集群数据丢失关键缺陷。5.3 2.2.x 集群关键缺陷修复2.2.4 修复的 #5289 是发布说明中罕见以 critical bug 级别描述的问题在网络分区期间对表执行 reconfigure 可能导致数据丢失与错误查询结果。NOTES.md 给出了具体的恢复操作指引——若升级后副本卡在transitioning状态可执行// 对目标表执行紧急修复允许 reconfiguration 完成 r.table(tablename).reconfigure({emergencyRepair: _debug_recommit})并强调执行前必须确保集群空闲因为紧急修复期间不保证一致性。_debug_recommit恢复选项最初在 2.1.3 中引入#4720是理解 RethinkDB 紧急恢复机制的关键入口。六、2.1Raft 自动故障转移与紧急修复2.1.0Forbidden Planet将 RethinkDB 的集群可用性模型从手动摘除不可达服务器升级为基于 Raft 共识算法的自动故障转移。NOTES.md 给出了三种故障恢复场景表有 3 个及以上副本且大多数承载副本的服务器在线自动选举新主副本恢复可用性无需人工干预且保持数据一致性表的大多数服务器在线无论副本数可用常规命令手动 reconfigure数据一致性始终维持大多数服务器不可用使用table.reconfigure的emergency_repair选项恢复表可用性#3893。6.1 系统表随之重构table_config每个 shard 子文档新增nonvoting_replicas字段write_acks只能取single或majority全部副本断连的表以含error字段的特殊文档列出断连服务器不再出现在表中新增indexes字段列出二级索引。table_statusprimary_replica→primary_replicas数组正常情况单元素切换/迁移期间可多主state取值限定为ready、transitioning、backfilling、disconnected、waiting_for_primary、waiting_for_quorum。current_issues移除table_needs_primary、data_lost、write_acks、server_ghost、server_disconnected五种 issue新增table_availability表缺失至少一台服务器时出现。cluster_config新增id为heartbeat的文档可配置集群内部连接的 heartbeat 超时#4449。6.2 ReQL 错误类型体系2.1.0 将错误类型层级细化#4544并把Rql*前缀改为Reql*如RqlRuntimeError→ReqlRuntimeError旧名称在驱动中保留兼容。这为应用按错误类别分别处理提供了基础。6.3 其他 2.1.x 重要变化2.1.3 修复 B-tree 数据损坏 bug#4769并新增_debug_recommit2.1.5-2 修复内存损坏导致的段错误#49172.1.x 期间.split()改为按 UTF-8 处理、read_modeoutdated取代use_outdated、复合索引中null不再被丢弃等 API 调整。七、2.0生产就绪与数据一致性收尾2.0.0Yojimbo是 the first production-ready release of RethinkDB新增了get_all与union的 changefeed 支持、单连接并行多查询#3296、非阻塞cursor.next等能力。7.1 负零Negative Zero索引一致性2.0 最值得注意的数据迁移话题是 IEEE 754 负零处理ReQL 按 IEEE 754 视 -0 与 0 相等但旧版本在索引中把二者当作不同值可能产生不一致结果。2.0 起 -0 与 0 索引为相等值二级索引可用rethinkdb index-rebuild在线迁移主键含负零值的文档会部分不可访问需用rethinkdb dump/rethinkdb restore重新导入受影响表可用python -m rethinkdb._negative_zero_check检查是否受影响。7.2 其他 API 破坏性变更between不再接受null边界改用r.minval/r.maxval移除any/all命令改用or/andindexes_of更名为offsets_ofchanges的squash参数默认改为falsePython 驱动异常类型层级重构所有异常继承RqlError。八、1.x 回顾ReQL 语言体系的建立尽管本仓库当前聚焦 2.xNOTES.md 对 1.x 的记载构成了理解 ReQL 演进的重要背景。几个关键里程碑版本里程碑1.5.0二级索引与复合索引#88、r.js超时参数、软持久性soft durability、--daemon1.6.0基于 API key 的访问控制#266、sample随机采样、全套数组操作prepend/insert_at/set_union等、match正则匹配、--io-threads1.7.0热备份与rethinkdb import/export/dump/restore四命令、原子 set/getreturn_vals、CentOS RPM1.8.0时间/日期类型全套during、in_timezone、epoch_time、iso8601等、--canonical-address、--no-direct-io1.10.0多索引multi-indexes1.11.0查询分析器profileTrue、index_status/index_wait、IPv61.12.0group/ungroup取代grouped_map_reduce/group_by、ARM 实验支持、--cache-size1.13.0r.http、changeschangefeed 命令、r.random、r.args、JSON 协议引入取代 protobuf1.14.0二进制数据类型binary、Python 3 支持、conflict取代upsert1.15.0地理空间geospatial查询与索引、r.uuid、惰性反序列化性能提升1.16.0rethinkdb系统数据库与全套管理系统表table_config、server_config、stats、logs等、reconfigure/rebalance/wait命令1.16.0 建立的系统表体系src/clustering/administration/ 中大量*_config、*_status实现与之对应至今仍是 RethinkDB 管理能力的基础。而 1.13.0 引入的changes命令changefeed则是实时数据库定位的起点——正是这条主线在 2.2.0 被升级为原子 changefeed。九、升级路径与混布兼容性速查综合 NOTES.md 各版本 Compatibility 小节可整理出以下升级决策要点数据文件自动迁移从 1.16 起的版本升级到 2.x 时数据文件自动迁移从更早版本升级需要按发布说明指定的步骤如 1.14.x/1.15.x 升级需先装 2.0.5、升级 Python 驱动、rethinkdb index-rebuild重建索引1.13 及更早需rethinkdb dump手动迁移。任何主版本升级前都应备份数据文件。混布限制禁止新旧混布2.4.x 不能与 2.3.x 及更早混布2.3.x 在 32 位平台/Windows 上不能与 2.3.3 及更早混布2.2.x 不能与 2.2.1 及更早混布2.0.x/2.1.x 各自系列内也有明确下限。混布只建议作为升级窗口的临时手段。驱动兼容JSON 协议自 2.2.0 起成为唯一协议r.js自 2.4.2 起由 QuickJS 执行auth_key在 2.3 映射为admin用户密码驱动端user/password选项取代auth_key。升级后立即检查项若出现卡transitioning的副本用_debug_recommit紧急修复确认二级索引是否需要重建1.14/1.16 时代索引格式两次变更2.3.0 起仅自定义索引函数需迁移检查r.wait/r.rebalance/r.reconfigure等调用是否已改为显式作用于库表对象。十、如何在仓库内继续深挖NOTES.md 中每一条变更都可以在源码中找到对应实现推荐按以下方式交叉验证ReQL 命令注册查看 src/rdb_protocol/terms/ 中对应术语文件如写钩子见 write_hook.cc、位运算与算术在 arith.cc、fold在 seq.cc、r.http在 http_runner.cc。系统表与集群管理见 src/clustering/administration/ 下的table_config、table_status、server_config等实现。命令行参数全部服务端选项集中在 command_line.cc--initial-password、--bind-http/driver/cluster、--tls-min-protocol、--cluster-reconnect-timeout等均在其中。驱动与 Web UI2.4.0 起 Web 资源预生成于 src/gen/web_assets.cc测试框架入口为 test/run 与 test/rql_test/ 下的.test用例。结语NOTES.md 用三千余行条目记录了一个开源数据库从 2012 年首版到 2.4.4 的完整演进轨迹。对使用者而言它既是升级手册兼容性、API 破坏、修复清单也是功能索引哪个 ReQL 命令、哪个系统表字段、哪个命令行选项在何时出现对开发者而言它则是通往 src/ 源码的导航图。结合本文给出的源码锚点你可以按版本号快速定位任意一项变更的实现位置在升级、排障或二次开发时做到有据可依。赞分享数据库文档数据库分布式数据库【免费下载链接】rethinkdbThe open-source database for the realtime web.项目地址https://gitcode.com/gh_mirrors/re/rethinkdb点击查看免费下载相关推荐Karmada v1.11 版本发布说明深度解读从 1.11.0 到 1.11.9 的完整演进与源码佐证Karmada v1.11 版本发布说明深度解读从 1.11.0 到 1.11.9 的完整演进与源码佐证 本篇基于仓库中的 CHANGELOG 1.11.md云原生多集群集群管理微服务RabbitMQ 3.8.29 维护版本发布说明深度解析修复亮点、升级路径与源码佐证RabbitMQ 3.8.29 维护版本发布说明深度解析修复亮点、升级路径与源码佐证 导读RabbitMQ 3.8.29 是 3.8 系列的维护版本官方建后端消息队列消息路由AzerothCore 2.x 版本发布说明解读从 1.x 到 2.x 的关键改进与升级指引AzerothCore 2.x 版本发布说明解读从 1.x 到 2.x 的关键改进与升级指引 本指南以 v2.x.md https://link.gitcod游戏开发后端上一篇OpenTUI FFI Fast Path 基准测试套件跨 Bun 与 Node 的包装层开销度量与配对回归防护下一篇Wasp 邮箱认证实战指南登录注册、邮箱验证、密码重置与自定义扩展创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考