CouchDB について議論するときに知っておいた方がよいこと。
CouchDB はリレーショナル・データベース管理システム (RDBMS) ではありません。つまり、CouchDB != SQL です。
ドキュメントを更新すると、新しくドキュメントが作成されます。ドキュメントの一部だけを更新したり、diff を格納したりすることはありません。
CouchDB にとって非常に重要なのがビューです。従来の RDBMS のインデックスと性質は似ていますが、MapReduce パラダイムに従って、必要なときに評価されます。ビューでは、データを並べ替えたりフィルタリングしたりできます。
Reduce にはトリッキーな側面がありますが、強力です。
複合キーによる照合は重要ですが、この処理もトリッキーになる場合があります。
レプリケーションは衝突を生じさせることがあります。そもそも衝突の発生は避けられません。システムデザインでは、衝突が必ず起きるものと捉え、そのことをきちんと考慮した設計を行う必要があります。
内部のリビジョニング・システムは、衝突検出とオプティミスティックなロック機構 (MVCC: Multi-Version Concurrency Control) のためだけにあります。
内部のリビジョニング・システムは、リビジョン・コントロール・システムとしては使用できません。