Apache Cassandra™️のコンセプト
※™️はTradeMarkの略(商標の意味)
What is Apache Cassandra | Apache Cassandra and DataStax Enterprise - DataStax Academy
※DATASTAX社…casandraを使った商用製品をリリースしている会社。コンセプトで検索するとapache.orgより先に出てくる。(apacheのサイトではそもそも載ってない…)
意訳
- Apache CassandraはFacebookから生まれたApacheプロジェクト
- AWSのDynamoDBやGCPのBigTableに使われている
- SPOFを排除した高い可用性を提供する分散データベース
- RDBMSやNoSQLとは比べ物にならないスケーラビリティと分散を、複数のデータセンターやクラウドのAZで実現できる
- マスターレスの「リングデザイン」というものを採用しており、マスタースレーブ構成や難しい共有モデルは存在しない
- すべてのNodeがおなじ役割として振る舞い、お互いに平等に通信をする
- 「built-for-scaleアーキテクチャ」は取り扱うデータ量に関わらず簡単にデータをコントロール機能を持つ
- cassandraは追加のノードは(無停止で)既存のクラスタに追加するだけで拡張できる
- Apple、Comcast、eBay、Instagramなどで採用されている
- 大規模な本番ではペタバイトクラスのデータを7万5千以上のノードで管理されている
- ライセンスはApache 2.0
わかること
- 時代が移りデータ量が増えRDBMSでは処理が追いつかなくなってきた
- 既存のシェーディングの技術では難しくスケール限界がある(テーブル設計も)
- そのため拡張性をもったDBが必要になった
- 最初はFacebookということできっとユーザデータが膨大なんだろう
- 2008年に初期リリースの模様
Apache Cassandra™️のアーキテクチャ
意訳
- cassandraクラスタはgossipというコミュニケーションプロトコルを利用してpeer to peerで情報交換をしている
- 各ノードに順次書き込まれるコミットログには書き込みを記録してデータの耐久性を確保する
- 次に、データにインデックスが付けられ、ライトバックキャッシュに似たmemtableと呼ばれるメモリ内構造に書き込まれる
- メモリ内構造がいっぱいになったらデータはSSTablesデータファイルとしてディスクに書き込まれる
- 全ての書き込みはクラスタを通じて自動的に分割され複製される
- 力尽きた
とりあえず、登場背景は理解した。