第2回DBオフラインやります。
→「Dr.SQLに聞くSQLの歴史とこれから ― え、SQLはすでにNoSQLだったの!?(後編)」
SQL標準ってもうNoSQLだよね
会場(野間):セキュリティ関連機能は今後どのように拡張されるのでしょうか。世間的には必要性が高まっています。
谷川:1週間前に「SQLインジェクションを開発者がケアしないと訴訟で負ける」と指摘する記事を見ました。SQL標準でやる問題かというと疑問ですが。
土田:セキュリティは私と同僚の小寺さんでペーパーを書いたのですが、結果的には支持が得られず廃案になりました。提案者を支持する国が1国でもいなければ次の審理へ進まないというルールになっておりまして。
谷川:早い段階でなくなったんですね。残念。
土田:やるべきだというのはありました。セキュリティに関しては浮上しては消えて…を繰り返しています。SQL標準はSQLの仕様です。SQLを実装するデータベースのカーネルとして何をやるべきかと考えたとき、そのためのセキュリティ仕様を切り出すという壁がなかなか乗り越えられず。監査ログをとり、見られるようなビューを用意すればいいのではないかとなったり。とはいえ、また浮上する可能性もあります。
谷川:SQL標準の動きを見ていると、一般的な標準は先に策定されて周囲がそれに合わせようとするのに対して、SQL標準は先に実装があり、標準として合わせていこうという動きが面白いなと思っています。
土田:デファクトが標準になるケースと、「お上」(ここではISO)が作成した仕様が標準になるケースと2つあります。SQLは最初はIBMのSEQUEL(Structured English Query Language)から発展しました。アメリカだけで進めることもできたのに、最初から国際化を目指していたのも特徴的でした。
谷川:先に実装があり、市場への配慮もあり、それで廃れないのでしょうね。
会場:だからNoSQLがSQLを使うという(笑)。
谷川:ちょうどいいご指摘が。今日の議題に「SQL標準ってもうNoSQLだよね」というのもありました。実際のところ、SQL仕様もNoSQLの世界に近づいているのでしょうか?
土田:92年当時からNoSQLに通じるものはすでにありました。構造型とか。
谷川:いわゆるキーバリュー型ですか?
土田:ネットワーク型とか階層型とか、RDBではないものという意味ではNoSQLはずっと存在し続けています。
会場(生熊):NoSQLではなくて「Not Relational」とすればよかったのに。
谷川:ああ、そうかも。
会場(生熊):私から見るとNoSQLは25年位前に見たもののデジャヴ。実際にはOSでしたが、マルチカラムとかあり、今のCassandraに近いかもしれません。
会場(原沢):先祖返り(笑)
生熊:当時PL/SQLに似た独自のクエリー言語もありましたが、結果的には市場に駆逐されました。SQLでないと支持されず、SQLを内蔵する流れになってしまう。だからデジャヴ。
谷川:HadoopにSQLでアクセスするって、大きなファイルにSQLでアクセスするから両方の良さを打ち消しているような気もするんですよね。
会場(生熊):商業的なシステムだとエンジニアが持つスキルがJavaやSQLとなるからSQLを必要としてしまいます。
谷川:でもSQLが書ける人ってリレーショナルのデータベースが分かっている人だけではないような気もします。標準の中に定義はあるのでしょうか。SQLはリレーショナルデータベースに対するアクセス言語なのか、それとももっと緩い問い合わせ言語なのか。
土田:そこは解釈によりますね。その違いに関しては、特に規定はありません。
会場(原沢):リレーショナルに対してというよりもデータベースマネジメントシステムに対してのクエリー言語としての機能がもともとあり、アクセスできるようになっているのがSQLのメインとなってしまっているのでは。
谷川:そう考えると、いまHadoopからSQLでアクセスできるという流れはそんなにおかしいものではないのですね。
土田:インデックスとハッシュのアクセス方法の違いはありますが、ユーザーがSQLで問い合わせたら結果が返ってくるというのが目的ですよね。SQLとして処理するときに整合性や一貫性をどうするか、どう実装するかが問題となってきそうです。
谷川:NoSQLには標準ってないですからね。さてそろそろ今日は終わりにします。次回は3月13日の「DB Online Day」です。イベント終了後に同会場で今日の続きを行います。SQL2016がストリームやHadoopをどう考えているのかというあたりを中心にディスカッションしていきます。