回顾一下不断重复的“关系型数据库管理系统已经过时”的说法
虽然”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インスタンス規模で運用している
https://www.publickey1.jp/blog/23/mysql7000linemysqlnewsqlpr.html
この記事は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でいい