Couchbase
介绍
首先它是NoSQL数据库(叫作文档数据库?)
什么叫作Memory First?
关系型数据库是为了存储数据,非关系型数据库是为了使用数据(对吗?)
安装、初始化
首先我们要去官网下载Couchbase Server的社区版,在Mac上安装很简单
有Couchbase Capella、Enterprise Edition、Community Edition3个版本
Couchbase 提供了一个Web UI 视图化管理平台
安装后,打开Couchbase Server的APP即可,然后访问localhost初始化
本地学习、测试用的话,基本用默认配置就可以了
层级:Bucket(类似database) → Scope → Collection(类似table)
这3个层级都是可以在WebUI界面手动添加的
集群
一个集群内可能有多个Server,访问的时候,好像一般也不需要手动去选择?
如何组建集群?TODO
Bucket
Bucket Type:Couchbase、Memcached、Ephemeral(Couchbase是基础的类型?)
vBucket
vBucket 是 Couchbase 把一个 Bucket 里的数据再切成的“逻辑分片”。每个 Bucket 的 key 空间被划成 1024 个 vBucket。文档 key 通过哈希(如 CRC32)计算,hash(key) % 1024 → vBucket ID,因此每个文档属于且只属于一个 vBucket。所以 vBucket 是在Scope、Collection的概念之上的?
WebUI
可以在WebUI直接查看已经存储的Documents
操作方式1:KV(使用SDK)
能用 Key 直接命中就用 KV(最高性能:`get/upsert/mutate_in`)。
跨文档过滤/联接/聚合 → 用 N1QL(配好二级索引)。
SDK使用演示
同步和异步
操作方式2:N1QL
使用一种叫作N1QL的语言,基本就是Json版的SQL?
AI:N1QL(读作 “nickel”)是 Couchbase 的 面向 JSON 的类 SQL 查询语言。它把关系型数据库里熟悉的 SQL 语法(SELECT / INSERT / UPDATE / DELETE / JOIN / 子查询等)带到文档型数据库里,用来查询、操作 Couchbase 中的 JSON 文档(bucket → scope → collection)。
和传统 SQL 的不同
操作对象是 JSON 文档,字段可嵌套、数组化
架构更灵活(无固定 schema),但需要通过索引来保证性能
FROM/KEYSPACE 指向的是 bucket/scope/collection,而不是表
语法
连接器
异步操作和一致性、锁和CAS
AI:
CAS(Compare-And-Swap)在 Couchbase 里是实现单文档级的乐观并发控制的核心手段,用来防止“最后一次写覆盖前面的写”(lost update)。
每个文档都有一个CAS 值(SDK 暴露为 res.cas),是个随每次修改而变化的 64 位“版本号/指纹”(对你是不透明的)。
你读文档时拿到当前 CAS;你写(replace/remove/mutate_in 等)时把这个 CAS 一起交回去,服务器只在“CAS 匹配”的前提下执行修改,否则抛 CasMismatchException。
全文搜索
Docker/容器化
Capella
Capella 是 Couchbase 的全托管云服务(DBaaS)。
把原本需要你自己部署/运维的 Couchbase Server,做成在AWS / Azure / GCP上“开箱即用”的托管版本。