NoSQLという言葉が出てきて久しいけど、過去に何度もSQLやRDBMSはCOBOLなみのレガシー扱いを受けている。
以下悪者になりがちなポイント
- データが多くなると遅い
- JOINしないと階層構造作れないのがつらい
- データ構造が柔軟ではなくカラム追加するだけでメンテが必要なのがつらい
- SQLという言語がテストし辛い
以下RDBMS、SQLなんか要らんのだとう歴史を振り返る。どちらかというと失敗例。
- xfy
- https://ja.wikipedia.org/wiki/Xfy
- 2004年
- XMLデータベースという切り口も盛り上がってた時代
- XMLが階層構造持つからJOINが要らない
- XMLはマシンリーダブルでもありXSLTでヒューマンリーダブルでもあるという夢のファイルフォーマットでもあった
- ただしxfyもXMLDBも受け入れられず
- XPathで検索はしやすいけど、CRUDを網羅するにはしんどい
- その後開発元のジャストシステムは身売りされ、xfyチーム(ほぼ会社の中心)は解散
- MEANスタック
- https://atmarkit.itmedia.co.jp/ait/articles/1412/01/news041.html
- 2014年前後に言われていた
- LAMPスタックはもう古いのでこれからはMEANスタックっしょ!という登場のしかた
- LAMPのMはMySQL
- MEANのMはMongoDB
- RDBではなくKVSが今後のスタンダードですよというメッセージ
- 実際にはMEANスタックが普及するどころか、AnglerもExpressもレガシー扱いになっている
- 実際には2023年現在もWebサイトの大半はLAMPのWordPressで作られており、WordPressオルタナティブがNodeやMongoDBで作られる気配がない
- ワークスアプリケーションズ HUE
- https://xtech.nikkei.com/it/atcl/watcher/14/334361/042000252/
- 2015年頃の話
- 脱RDBというのがキーワードだった
- RDBを捨ててCassandraで構築
- 人事アプリケーションという比較的RDB向きのようにもみえるパッケージをKVSで作り直したというのが原因かどうかは特定できないが、実際に開発はかなり遅れた
- ワークスアプリケーションズは経営難に陥り、2019年には米投資ファンドのベイン・キャピタルに売却
逆にRDBMSを使い続けている例を挙げる。
- WordPress
- 昔ながらのLAMPスタック
- LAMPのApacheがNginxになったくらいでほとんどかわってない
- WordPressオルタナティブで置き換わってないことをみると、ここに課題はないのかも
- LINE
- MySQLを7000インスタンス規模で運用している
- この記事はMySQLをあほほど運用しているのでつらいよねという記事だが、逆にLINEの規模の運用がMySQLでできちゃってるんだというメッセージにもなる
- TiDB
- 前述のLINEの記事は「7000インスタンスのMySQLはつらいのでNoSQLで構築し直せるかもね」というメッセージ
- TiDBはNoSQLなんだけど、インターフェースは完全にMySQLに揃えてる
- 開発者は普通にSQLを使ってるんだけど実際は各マシンに分散して保存・分散して検索している
- じゃぁTiDBはRDBなの?KVSなの?というと絶妙なライン
- そもそもRDMBS自体はいくらでもエンジンは選べてエンジニア向けのインターフェースとしてSQLが使えるだけ
- その意味ではAWSのAthenaやGoogleBigQueryもSQLで検索するからRDBみたいなもんです
まとめ
- SQLをインターフェースとするというのは「情報って作成・検索・更新・削除ですよね」ということと等価であって、そこは何も変わっちゃいない
- 複数の表を結合するという概念も人間にとって理解しやすいからそうしているだけであってテーブルのJOINは制約じゃぁない
- SQLをインターフェースとしてCRUDを書くのがRDBなら裏のエンジンなんてなんでもいい
- SQLを排除しても別の不完全なSQLもどきを覚えるくらいだったらSQLでいい