基本操作
couchbase基于文档ID,执行非常简单的文档存取模型。在存储信息时,不需要定义表或结构,不需要写复杂的查询去获取信息。
couchbase里的所有操作遵循下列规则:
- 所有操作是原子性的
这意味着服务器里没有锁机制,不可能存在来自多个客户端的并发命令破坏了数据。然而,这也意味着如果多个客户端对同一文档ID执行set操作,只有最后一个操作有效。为了管理这种并发和竞争条件,可以使用CAS操作。这要求提供一个附加的校验值,在校验值不合的情况下,文档不会被更新。
- 所有数据操作都要求key
所有对数据的操作,都要求提供一个key。不能执行全局操作,或者针对多个key的操作(multiple-get除外)。
- 没有内部锁
在存储或更新数据时,系统并没有一个内部锁。操作要么完全成功,要么因为某种理由失败(例如,临时内存不足)。
不同的客户端语言执行core协议,从而与couchbase服务器通信:
- 所有客户端执行core协议
对不同的语言和环境,尽管在结构和函数名字上有些不同,但它们都执行同样的核心操作协议。例如,所有实现里都有set()协议调用,尽管有些客户端把它叫做”store”.
- 函数调用结构差异
因为不同的语言和环境的差异,对于core协议的函数调用结构也许不同。例如在java里,可变参数方法不可用,因而有多个同一函数的变体。在其他语言里,例如perl、python、ruby,hash是核心变量类型,经常被用来存储和返回信息。
- 不同的语言提供额外的功能
某些客户端实现提供额外的函数调用和结构,这些是原生core协议所没有的。例如在java里,所有操作既可以是同步也可以是异步的,允许你在get或set操作时,继续处理其他信息。
- 并非所有实现支持标签
标签在服务器里和数据一起存储,并非被所有语言的客户端支持。