データベース編 第7章 / 全13章
ワイドカラムDBとは
Wide-Column Store
NoSQL ・ 大量の書き込み巨大な倉庫を何棟も並べたもの。荷物(データ)は宛名の頭文字で棟を決めて、どんどん運び込む。
図とさわれるデモで確かめる →
ポイント
- データを多数のサーバーに分けて保存し、台数を増やすほど速くなる
- 書き込みがとても速く、IoTやログなど「毎秒大量に届く」データに強い
- 取り出し方を先に決めて設計する必要がある(自由な検索は苦手)
名前の由来
wide幅の広いcolumn列(ラテン語 columna:柱)
1行に、非常に多くの列を持てるDB。
仕事の現場では
工場のセンサー、アプリの行動ログ、メッセージ履歴など、桁違いの量のデータを受け止める用途で使われます。
くわしく(正確な話)
- 代表例はApache Cassandra。クラウドではBigtable・Keyspaces・Cosmos DB(Cassandra)。
- パーティションキーで、どのサーバーに置くかが決まる。
- サーバーを横に足して性能を上げることをスケールアウトという。
- 書いた直後は一部のサーバーに古い値が残ってもよい「結果整合性」を選ぶことが多い。
うまれ:Googleが2006年にBigtableの論文を発表したことが、広まるきっかけになった。
この章の用語(意味と語源)
- ワイドカラムDB Wide-Column Store
大量のデータを多数のサーバーに分けて持ち、書き込みに強いDB。
語源wide(幅の広い)+ column(列)。
- パーティションキー Partition Key
データをどのサーバー(区画)に置くかを決める項目。
例えばセンサーIDで分ければ、同じセンサーのデータは同じサーバーに集まります。
語源partition(仕切り・区切り)。ラテン語 partire(分ける)から。
- スケールアウト / スケールアップ Scale-out / Scale-up
台数を増やして性能を上げる/1台を強くして性能を上げる。
スケールアップは簡単ですが上限があります。スケールアウトは上限がない代わりに、仕組みが複雑になります。
語源scale(規模)を out(外へ=横に広げる)/ up(上へ=1台を大きく)。
- 結果整合性 Eventual Consistency
「少し待てば、最終的には全部のサーバーでそろう」という考え方。
書いた直後に別のサーバーを読むと古い値が見えることがありますが、そのぶん速く、止まりにくくなります。反対は「強い整合性(いつでも最新)」。
語源eventual(最終的な・いずれ起こる)+ consistency(つじつまが合っていること)。
- Apache Cassandra カサンドラ
代表的なワイドカラムDB。Facebookで生まれた。
語源ギリシャ神話の予言者カッサンドラから。Apache は、このソフトを管理するオープンソースの財団の名前。