- SQLは50年にわたり構造化データ処理の基本言語として定着してきたが、学ぶのが難しく、使いこなしにくく、拡張しづらい
- 従来のSQLの問題点: 構文順序の強制、重複した構文、サブクエリの使用の必要性、「内側から外側へ」というデータフロー、拡張性の不足など
- GoogleSQLではSQLの問題を解決するために、SQLを拡張するアプローチを採用
- パイプ構造のデータフロー構文をSQLに導入し、従来のSQLの問題を解決しようとしている
- 既存のエコシステムを維持しながら、より柔軟に学習・利用でき、既存SQLとの完全な互換性を保てる
- 既存のSQL演算子を再利用し、パイプで任意の順序に構成できるようにする
- 各パイプ演算子は入力テーブルだけを見ればよいため、スコープが明確
- 宣言的セマンティクスを維持
- 関係代数と1対1で対応可能
- テーブル値関数を用いた拡張性が向上
- たとえば、多段階集計をサブクエリなしで連続的に表現できる
- パイプ構文を使ったSQLは学習と利用がより容易で、さまざまな演算子を任意の順序で適用できるため、柔軟性が大幅に向上する
- パイプ演算子は順次動作し、これによってユーザーはデータをより簡単にフィルタリング、集計、並べ替えできる
- GoogleSQLでの利用経験
- ユーザーによる継続的な採用と好意的なフィードバックを得ている
- 複雑なクエリも線形に表現可能
- 編集やデバッグ作業がしやすい
- IDEツールのサポートが改善
- SQLコード生成器や変換器に有利
- AI適用における潜在的な利点がある
- 実装と今後の計画
- GoogleSQLでパイプ構文を共有コンポーネントとして実装
- 既存のクエリエンジンはパイプ構文を容易に有効化できる
- BigQueryとSpannerで外部向けにサポートすることを検討中
- 将来的にSQL標準へ含めることを模索する価値がある
GN⁺の意見
- パイプ構文の利点: SQLの複雑さを解消できる強力な手段として機能し、特にデータフローを直感的に表現できるため、SQLの使い勝手を大きく改善できる。
- 既存SQLとの互換性: 既存SQLを置き換えるのではなく、SQLを改善する方向でアプローチすることで、学習コストを下げつつ既存コードとの互換性を維持できる。
- 導入時の考慮事項: パイプ構文を採用する際は、性能への影響とツールサポートの水準を考慮する必要があり、特に大規模クエリでその利点を最大限に活用できる。
- 類似プロジェクトとの比較: PandasのようなDataFrame APIでもパイプ構造は使われるが、SQLとの違いはSQLの宣言的セマンティクスとの結合にある。SQLシステムの拡張性と性能を維持しながら、この機能を利用できる。
11件のコメント
パイプにキャレットとは、なんだか右手が痛くなりそうな組み合わせですね🤣
今のSQLには何らかの改善が必要なのは確かですよね
ここ3〜40年ものあいだ改善案を見つけられなかったのが問題ではありますが..
SQL の追加構文については、エコシステムを Google が主導すべきだと思いますが、果たして事業部がこれを継続させるでしょうか?
dplyr ですねwwww
なぜグーグルがやると言うと、失敗しそうな気しかしないんだろう..
ジェミニは子どもっぽい感じで回答するから、使う気にもなれない
ORMが取るアプローチと似ているようですね
ペーパーの以下の例を見るだけでも、Google SQL のほうが確かに読みやすいですね。
standard sql
google sql
C#のLINQを思い出しますね。SQLを書くたびに、SELECTの順序がいつもFROM、WHEREの後ろに変わってくれたらいいのにと思っていましたが……
最初は慣れなくてぎこちなくても、ゆっくり読んでみると流れがずっと自然に感じられます。
SQLのほうが読みやすいようですね。
私はSQLのほうがずっと読みやすいですね。笑 SQLから始めた人は、たぶん大半がそうだと思います……
私も慣れているほうが読みやすいですね.. (笑)
Hacker Newsの意見