Skip to main content
QUICK REVIEW

[論文レビュー] The SQL++ Query Language: Configurable, Unifying and Semi-structured

Kian Win Ong, Yannis Papakonstantinou|arXiv (Cornell University)|May 14, 2014
Advanced Database Systems and Queries被引用数 25
ひとこと要約

この論文では、SQLを拡張して、JSONなどの半構造化データをネイティブにサポートするが、完全な後方互換性を保つ統一的で設定可能なクエリ言語であるSQL++を紹介する。SQLの主要な意味的制限を撤廃し、変数の属性-値ペアや配列インデックスへのバインドといった最小限で的を射た拡張を導入することで、SQL++はOQL や XQuery に類似した完全な合成性と表現力を持つ。また、構成オプションを介して既存のNoSQLクエリ言語への形式的対応を実現する。

ABSTRACT

NoSQL databases support semi-structured data, typically modeled as JSON. They also provide limited (but expanding) query languages. Their idiomatic, non-SQL language constructs, the many variations, and the lack of formal semantics inhibit deep understanding of the query languages, and also impede progress towards clean, powerful, declarative query languages. This paper specifies the syntax and semantics of SQL++, which is applicable to both JSON native stores and SQL databases. The SQL++ semi-structured data model is a superset of both JSON and the SQL data model. SQL++ offers powerful computational capabilities for processing semi-structured data akin to prior non-relational query languages, notably OQL and XQuery. Yet, SQL++ is SQL backwards compatible and is generalized towards JSON by introducing only a small number of query language extensions to SQL. Recognizing that a query language standard is probably premature for the fast evolving area of NoSQL databases, SQL++ includes configuration options that formally itemize the semantics variations that language designers may choose from. The options often pertain to the treatment of semi-structuredness (missing attributes, heterogeneous types, etc), where more than one sensible approaches are possible. SQL++ is unifying: By appropriate choices of configuration options, the SQL++ semantics can morph into the semantics of existing semi-structured database query languages. The extensive experimental validation shows how SQL and four semi-structured database query languages (MongoDB, Cassandra CQL, Couchbase N1QL and AsterixDB AQL) are formally described by appropriate settings of the configuration options. Early adoption signs of SQL++ are positive: Version 4 of Couchbase's N1QL is explained as syntactic sugar over SQL++. AsterixDB will soon support the full SQL++ and Apache Drill is in the process of aligning with SQL++.

研究の動機と目的

  • 現代のNoSQLクエリ言語に形式的で統一された意味的定義が欠如していることによる、深い理解と相互運用性の障害を是正すること。
  • スキーマ制約を必要とせず、SQLとの互換性を損なわずに半構造化データ(例:JSON)を処理できるクエリ言語を設計すること。
  • さまざまなクエリ言語(例:MongoDB、N1QL、AQL)の意味的定義を構成オプションによって記述できる形式的で拡張可能なフレームワークを提供すること。
  • SQLの意味的特性を拡張し、ネストされた、異種の、およびバッグベースのデータ構造をサポートすることで、SQLとNoSQLの機能をシームレスに統合すること。
  • 中間層やデータベースシステムの統一的ターゲット言語として機能させ、開発者が複数のクエリ言語バリアントを学ぶ必要を減らすこと。

提案手法

  • JSON と SQL のリレーショナルモデルの両方を包含するSQL++データモデルを定義する。このモデルは、配列、バッグ、拡張された原子値をサポートする。
  • SQLを拡張し、主な意味的制限を撤廃する:FROM 変数はタプルに限定されず、任意のJSON要素にバインド可能である。サブクエリは完全に合成可能であり、グループ化構造はネストされたクエリでも直接利用可能である。
  • 新しいバインディング構文を導入し、FROM 変数が属性名/値、および配列インデックス/要素の範囲をとるようにする。これにより、スキーマに依存しないデータの検査が可能になる。
  • 段階的なアプローチを用いてSQL++の意味的定義を形式化する:まずコアSQL++言語を定義し、次に動作の違い(例:null と missing の処理)をパrameter化する構成オプションを定義する。
  • 構成オプションを用いて、SQL++を既存のクエリ言語(例:MongoDB、N1QL、AQL、Cassandra CQL)に正式にマッピングする。これにより、パrameter設定によってSQL++がそれらの意味的特性に適合可能であることを示す。
  • 広範な実験的分析を通じて、このアプローチの有効性を検証し、SQL++が4つの主要なNoSQLクエリ言語の能力を捉え、一般化されたLEFT CORRELATE、OUTER FLATTEN、一般化された外部結合、ネストされたサブクエリといった高度な機能をサポートできることを示した。

実験結果

リサーチクエスチョン

  • RQ1SQLと現代のNoSQLクエリ言語の機能を統合しつつ、後方互換性を保つクエリ言語は、どのように設計できるか?
  • RQ2完全な合成性と半構造化データ処理を実現するために、SQLに必要な最小限の意味的拡張は何か?
  • RQ3構成オプションを用いて、既存のNoSQLクエリ言語間の意味的差異(例:欠落属性、nullの処理、グループ化の挙動)を形式的に捉える方法は何か?
  • RQ4SQL++は、OQL や XQuery といった包括的な半構造化クエリ言語の全表現力をどの程度表現できるか?
  • RQ5SQL++は、複数のデータベースシステムの共通ターゲット言語として機能できるか? これにより、NoSQLクエリ言語間の構文的・意味的差異を抽象化できるか?

主な発見

  • SQL++は、スキーマの要件や均一なデータ形式の制約を撤廃することで、SQLを一般化したが、完全なSQL互換性を維持している。
  • 言語は完全な合成性をサポートする:サブクエリはどこにでも配置可能であり、SELECT句内でも利用可能であり、ネストされた異種の結果構造の構築が可能である。
  • 構成オプションにより、SQL++はMongoDB、Cassandra CQL、Couchbase N1QL、AsterixDB AQLの4つの主要なNoSQLクエリ言語の意味的定義を、パラメータ設定によって正式に記述可能である。
  • SQL++は、多くのNoSQLシステムに存在しない高度な機能をサポートする。例:LEFT CORRELATE、OUTER FLATTEN、一般化された外部結合。これらの機能は、評価対象のシステムのいずれに対してもネイティブにサポートされていない。
  • 変数を属性-値ペアや配列インデックスにバインドすることで、UDF やカスタム関数を必要とせずに、異種でネストされたデータのシームレスな処理が可能である。
  • 初期の採用の兆候は明確である:Couchbase N1QLバージョン4はSQL++の構文的糖衣であると記述されており、Apache DrillもSQL++に準拠している。これは、実世界での実用性と標準化の可能性を示している。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。