couchabse - sailing2014/Web-API-Guideline GitHub Wiki

Couchbase

Introduction


Benefits


  • Flexible Data Model - 灵活的数据模型

  • Easy Scalability - 易于大规模扩展

  • Consistent High Performance - 一致的高性能

  • Always online - 永久在线 (永不掉线)

Concepts


  • JSON Document = record

    • Couchbase 被设计成存储 JSON documents. Every thing is document.
    • The documents (records) can be indexed and queried with Views.
  • Data Buckets = database

    • 功能上等同于关系数据库的 database
  • Key & Metadata

    • Document: 所有的数据都被以 document 的方式存放

      • Key: Document ID, 每一个 document 都有一个用于唯一识别的 key, 功能上等同 RDB 中的 Primary Key. 一般是唯一识别的字符串。
      • Value: JSON document or binary data
    • Metadata

      • CAS: 是一个唯一识别的 ID,在 a document 发生修改或删除时,可用于提供数据保护,以免并发下的数据紊乱
      • TTL: Time to Live, 过期时间(秒),缺省没有过期时间,即永久保存,除非显示地删除
      • Flag: SDK-specific optional, 即 SDK 定义的可选项
  • Couchbase SDKs = Client Library

  • Nodes & Clusters

  • Node: A single instance couchbase server.

  • Cluster: A group of several servers. 所有在同一个集群中的节点,彼此是同等的,没有类似父子的层级关系。

    • The topology 等集群相关信息,由 SDK 自动的获取,客户端无需过多关心。
  • View

    • 用于对 Document 进行索引和查询
    • 通过 Javascript 编写运行代码
    • 在何时被执行?

Other Features


  • Rebalancing
  • Failover

Example


  • Service
    • Whole year - Invariable time: 12 Hours
  • Portal
    • Page Response Time (second)
Runtime 200 Parallel 1000 Parallel
Max < 3 < 3
Max(Internal) < 1.5 < 3
Mean < 1 < 1
  • External Services API
    • Response Time (second)
Runtime 200 Parallel 1000 Parallel
Max < 3 < 3
Max(Internal) < 1 < 1
Mean < 0.1 < 0.1
  • Search API
    • Max Supported QPS : 300 (response time < 1)
    • Success Rate
      • Average : 99% (99.9%)
    • Result number (internal)
      • Average : more than 5500000
      • Have result : 95%
      • Response Time (second) < 3
    • Average : 0.3 (0.1)
      • < 0.1 : 78.6% (80%)
      • < 1 : 98.7% (99%)
      • < 3 : 99.88% (99.99%)