Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:couchbase:couchbase

Couchbase

介绍

  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上“开箱即用”的托管版本。
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/couchbase/couchbase.txt · Last modified: 2025/10/11 09:17 by zhonghui