Couchbase 将数据存储为灵活的 JSON 文档,并将它们组织成称为 bucket 的逻辑容器。 每个文档都由一个唯一的键标识,开发人员在插入期间分配该键。 这些文档可以包含嵌套结构、数组和不同的字段,使其适用于半结构化数据。 例如,用户个人资料文档可能包含诸如 user_id
、name
、email
以及嵌套的 address
对象之类的字段。 Couchbase 自动存储元数据,例如文档到期时间 (TTL)、版本控制(CAS 值)和标志,以及每个文档,从而实现诸如自动到期和更新期间的冲突检测之类的功能。
文档使用称为 vBucket 的分片机制在节点之间分布。 创建集群时,Couchbase 将每个 bucket 分成 1024 个 vBucket,这些 vBucket 会动态分配给节点。 这样可以进行水平扩展:添加节点会触发 vBucket 的自动重新分配,以平衡存储和查询负载。 例如,在 3 节点集群中,“users” bucket 的 vBucket 最初可能均匀分布。 添加第四个节点会将 25% 的 vBucket 重新分配给新节点,而不会停机。 数据通过智能客户端 SDK 访问,该 SDK 知道哪个节点托管特定文档的 vBucket,从而减少了读/写操作的网络跃点。
Couchbase 通过组合内存和磁盘存储来优化性能。 文档首先写入内存缓存(回写缓存),然后异步持久化到磁盘。 这样可以在确保持久性的同时实现低延迟写入。 例如,电子商务应用程序可能会将用户活动快速记录到内存中,而 Couchbase 每秒将更改刷新到磁盘。 该数据库还支持跨数据中心复制 (XDCR),从而跨集群同步 bucket 以进行灾难恢复。 开发人员可以调整持久性设置(例如,调整每个文档的磁盘副本数),以根据其用例平衡速度和可靠性。