BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース KubeCon 2018 - SQLの復活

KubeCon 2018 - SQLの復活

原文(投稿日:2018/12/13)へのリンク

多くのカンファレンスがそうであるように、KubeCon 2018にも多くの分散データベースベンダが参加していた。しかし今年のカンファレンスで特徴的だったのは、InfoQが話を聞いたベンダが揃ってSQLのサポートを強調していたことだ。

CouchBaseが提供するのはN1QL(“ニッケル”と読む)だ。これはANSI SQLを拡張して、JSONコンストラクタをサポートしたもので、各種プラットフォーム用のカスタムクライアントに加えて、JDBCとODBCのドライバを提供する。

YugaByteはそれ自身を、“地球規模のSQL”を提供する“トランザクショナルNoSQL”である、と説明している。YugaByteはPostgreSQLのワイヤフォーマットと独自のSQL拡張を併用している。これはつまり、既存のPostgreSQLドライバで任意の言語から使用できるということだ。同社によれば、

オープンソースとオープンなAPIを標榜するものとして、独自のSQL APIを構築するという選択肢は私たちにはありませんでした。その一方で、既存のどのSQLと互換性を持つかというのは、市場にSQLの亜種が溢れる現状を考えれば、大した問題ではありません。最終的に当社では、SQLとしてPostgreSQLを選択しました。PostgreSQLのオープン性、成熟度、機能の完全性に大きな感銘を受けていたからです。これらの特性が、情熱的で活発なユーザコミュニティを作り上げています。業界のアナリストたちも、特にこの5年間でのPostgreSQLの大きな復活の要因として、これと同じトレンドを指摘しています。Matt Asay氏の先日の記事“Why Oracle's missteps have led to PostgreSQL's ‘moment' in the database market”では、この傾向を詳細に分析しています。

この記事でインタビューした3社目のベンダはCockroachDBだ。同社はPostgreSQLのワイヤフォーマットとSQLダイアレクトを実装している。PostgreSQLフォーマットを選択したのは、適切なライセンスを備えたオープンソースであることに加えて、ドキュメントが非常に充実しているからだという。可能な限りの互換性を確保するために同社では、PostgreSQLの構文パーサを採用し、必要な部分を拡張する方法をとっている。

MongoDBはSQL機能を刷新し、新たなODBCドライバを提供した。これは有償の拡張機能で、“TableauやExcel、MicroStrategy、Microsoft Power BI、QlikのデータソースとしてMongoDBを使用することが”可能になる。

SQLの必要性

分散データベースでSQLの新たな採用が続く背景には、いくつかの要素がある。一部のユーザにとっては、それが単に採用を容易にする方法だからだ。既存のリレーショナルデータベースをわずかなコード変更か、あるいはまったく変更することなくクラウドデータベースに持ち上げることができれば、プロジェクトにゴーサインを出すのはずっと簡単になる。

ビジネスインテリジェンスツールも要因のひとつだ。SQLダイアレクト間の違いを考慮する必要はあるが、データベースが完全に独自の問い合わせ言語ではなくSQLを使用していれば、複数のデータベースをサポートするBIツールの開発ははるかに容易になる。前述のように、MongoDBのSQL実装では、BIツールをサポートするための設計であることを明示的に述べている。

広く議論されてはいないが、トレーニングの問題もある。開発者も技術者でないスタッフも、標準的なSQLのトレーニングを受けていることが多い。多くの大学で選択科目ないし公開講座として提供しているためだ。したがって、大規模なエンタープライズシステムで各データベース独自の問合せ言語を学ぶよりも、こちらを採用する方が好都合だ。

ANSI SQLとJSON

データベースベンダによるサポートは十分ではないが、ANSI SQLでは実際に、SQL 2016標準でのJSON操作がどのようなものになるかを定義している。昨年の報告書ではMarkus Winand氏が、“What's New in SQL:2016”と題した記事の中で、メジャーなリレーショナルデータベースベンダによるJSONサポートの状況について説明している。

2016年標準の明らかな抜けは、部分的な更新が欠落していることだ。Markus氏が次のように記している。

SQL標準には、(MySQLやPostgreSQLやSQLiteのjson_set、SQL Serverのjson_modifyのような)JSONドキュメントの一部を更新する機能が提供されていません。

さまざまなJSONベースの分散データベースベンダ間での互換性を実現するためには、将来のバージョンでこれに対応する必要がある。

この記事に星をつける

おすすめ度
スタイル

BT