RDBMSが嫌い

RDBMSが嫌いだ。下記の理由による。

  1. オブジェクト指向とマッチしない。インピーダンスミスマッチ。
  2. マッチしないがために妙な仕様が多いO/Rマッパーを使わなければらならない
  3. 関数型でもO/RマッパがDSLとかに姿を変えただけで本質的な違いがない
  4. SQLがそもそもわかりにくい。古い。大昔に決められたクエリ書式を未だに使いまわしているのがダサい
  5. オーバースペック。エンタープライズ、ゲーム、データマイニング等々、あらゆる用途の大体の場面は単純なKVSで事足りるのでは
  6. 汎化を表現できないのでnullを許容させたり似たようなスキーマを多数定義しなければならない
  7. 多対多を表現するのにわざわざ中間テーブルを利用しなければならない
  8. 正規化を推し進めていくとパフォーマンス的に問題があったり、使い勝手が悪かったりする
  9. RDBMSは「エクセルみたいな表を格納しておけるストレージ」程度に考えている老害が多い
  10. SQLに方言が多い
  11. ストアドプロシージャやファンクションの構文はわかりにくい上に苦労して覚えたところで潰しがきかない
  12. パフォーマンスチューニングが難解なうえ覚えたところで潰しがきかない
  13. その他特にOracleで独自機能が多く、覚えたところで潰しが(略)

じゃあ代替策がなんかあんのか、というと、RDBMSを完全に代替できる何かがあるわけではない。だからまだRDBMSは使われる。

完全な代替策ではないが、NoSQL系は場面々々においては有用であると思う。HBase, MongoDB, Redisなどを採用事例でよく目にする気がする。