by shigemk2

当面は技術的なことしか書かない

従来型RDBMSの課題と代替案

従来型RDBMSにおける課題

  • 処理対象ではない列にもアクセスが行われる(DWHはその性質上あらゆる生データを貯めこんでいるから)
  • インデックス設計が極めて難しい
  • 範囲検索で大量のレコードにマッチする

列指向データベースは一向に構わん

その名の通り、行ではなく列を処理何としている。

メリット

  • 必要な列だけがアクセスされるのでI/O効率が高い
  • 圧縮効率が良い(列単位で値を圧縮して保持することが出来るから)
  • ロード処理が高速(B+Treeインデックス機構を持たないため、大量にデータを投入しても更新性能が落ちない)

デメリット

  • 主キー検索など狭い範囲の処理が遅い
  • 製品としての成熟度が低い(潜在的バグが多かったりする)

NoSQL

データベースの高速化と言えば、いかにディスクI/O回数を減らせばよいかというのがあ問題となっている。必要以上に多くのレコードにアクセスするようなクエリなどは
ディスクI/Oを多数発行することが根本の問題だった。

そこで、NoSQLの出番である。これは、SQL文のような複雑な言語を使わないでプログラミングっぽく直接データアクセスが
可能なほうがずっと高速になるんじゃないかっていう設計思想のもとに生まれたDBである。

get key1 4

みたいな。

SQLデータベースだとSQL文を送信する必要があり、列名などのメタデータも合わせてネットワーク転送されるから
どうしても無駄が多くなってしまいがち。

ところが、NoSQLを使うとネットワークの送受信の転送量が大きく減少し、構文解析のコストも下げることが出来る。

また、SQLでは大きなコストだったテーブルのオープン/クローズもNoSQLではずっと開きっぱなしなので無視することが
出来る。

ただし、トランザクションをサポートしておらず、スキーマがないのが欠点であると言えよう。