Table of Contents

Couchbase

数据库

https://www.couchbase.com/

  1. Couchbase 中文教程 https://couchbase.shujuwajue.com/

介绍

  1. 首先它是NoSQL数据库(叫作文档数据库?)
  2. 什么叫作Memory First?
  3. 关系型数据库是为了存储数据,非关系型数据库是为了使用数据(对吗?)

安装、初始化

  1. 首先我们要去官网下载Couchbase Server的社区版,在Mac上安装很简单
  2. 有Couchbase Capella、Enterprise Edition、Community Edition3个版本
  3. Couchbase 提供了一个Web UI 视图化管理平台
  4. 安装后,打开Couchbase Server的APP即可,然后访问localhost初始化
  5. 本地学习、测试用的话,基本用默认配置就可以了
  6. 层级:Bucket(类似database) → Scope → Collection(类似table)
  7. 这3个层级都是可以在WebUI界面手动添加的

集群

  1. 一个集群内可能有多个Server,访问的时候,好像一般也不需要手动去选择?
  2. 如何组建集群?TODO

Bucket

  1. 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)

  1. 能用 Key 直接命中就用 KV(最高性能:`get/upsert/mutate_in`)。
  2. 跨文档过滤/联接/聚合 → 用 N1QL(配好二级索引)。

SDK使用演示

默认情况下是没有ORM的,要直接访问

# 安装
pip install couchbase

演示代码:https://github.com/GZhonghui/Database/tree/master/couchbase

同步和异步

API好像是分成这两种版本的

操作方式2:N1QL

使用一种叫作N1QL的语言,基本就是Json版的SQL?

AI:N1QL(读作 “nickel”)是 Couchbase 的 面向 JSON 的类 SQL 查询语言。它把关系型数据库里熟悉的 SQL 语法(SELECT / INSERT / UPDATE / DELETE / JOIN / 子查询等)带到文档型数据库里,用来查询、操作 Couchbase 中的 JSON 文档(bucket → scope → collection)。

和传统 SQL 的不同

  1. 操作对象是 JSON 文档,字段可嵌套、数组化
  2. 架构更灵活(无固定 schema),但需要通过索引来保证性能
  3. FROM/KEYSPACE 指向的是 bucket/scope/collection,而不是表

语法

N1QL看起来和普通的SQL还是有点像的

连接器

异步操作和一致性、锁和CAS

AI:

  1. CAS(Compare-And-Swap)在 Couchbase 里是实现单文档级的乐观并发控制的核心手段,用来防止“最后一次写覆盖前面的写”(lost update)。
  2. 每个文档都有一个CAS 值(SDK 暴露为 res.cas),是个随每次修改而变化的 64 位“版本号/指纹”(对你是不透明的)。
  3. 你读文档时拿到当前 CAS;你写(replace/remove/mutate_in 等)时把这个 CAS 一起交回去,服务器只在“CAS 匹配”的前提下执行修改,否则抛 CasMismatchException。

全文搜索

Docker/容器化

使用到的端口号:TODO

Capella

  1. Capella 是 Couchbase 的全托管云服务(DBaaS)。
  2. 把原本需要你自己部署/运维的 Couchbase Server,做成在AWS / Azure / GCP上“开箱即用”的托管版本。