ソフトウェア工学研究室とNTTデータの共同研究の成果論文がデータベース分野のトップ国際論文誌 Proceedings of the VLDB Endowmentに掲載されました。 (2021/9/22)
~SQL自動生成技術の性能を飛躍的に向上~

 ソフトウェア工学研究室の石尾准教授と株式会社NTTデータが共同開発した、SQLクエリ(データベースを操作するための命令文)を自動生成する技術に関する論文が、国際論文誌Proceedings of the VLDB Endowment(以下:PVLDB)のVolume 14 に掲載されました。PVLDBはデータベース分野のトップ論文誌であり、コンピュータサイエンスの出版物を評価するCOREランキングでは最高難易度のA* に分類されています。PVLDBのVolume 14には882件の論文が投稿され212件の論文が採択されました。そのうち日本から採択されたのは3件でした。
 PVLDBに採択された論文は国際会議International Conference on Very Large Data Bases(以下:VLDB)の研究トラックにて発表する機会が与えられる仕組みになっており、2021年8月16~20日に開催されたVLDB2021で本成果について研究発表を行いました。
  • 研究の成果について:
     本論文は、近年盛んに研究されているProgramming by Example(例によるプログラミング)と呼ばれる技術の一種であり、満たすべき入出力テーブルの例からSQLクエリを自動生成する技術を提案するものです。
     従来手法では、入出力例としてサポートするテーブルの規模が大きくなるにつれて自動生成の実行性能が著しく劣化する課題が知られていました。この課題に対し本手法では、関係代数において知られている性質をアルゴリズムに組み込むことで、入出力テーブルの規模が大きくなっても適切なプログラムの構造を効率的に特定できるのが特徴です。
     評価実験では、インターネット上に投稿されたSQLに関する質問や、データ分析コミュニティであるKaggleの公式チュートリアルから抽出した226件のSQLクエリに対して自動生成を行いました。その結果、本手法によって全体の68%のクエリを自動生成することに成功し、そのうち89%は1秒以内に生成できることを確認しました。従来は自動生成に成功したものが57%、さらに1秒以内に生成できたものは22%であり、今回飛躍的に性能が向上したことが評価されました。
  • 今後の展開:
     本技術を用いることで、データベース技術に習熟していないユーザであっても目的に合ったSQLクエリを短時間で生成できるようになります。これにより手軽にデータ分析を行うことができるようになるため、企業内の誰もがデータを活用できる“データ民主化” の実現につながる技術といえます。
     また本技術は、満たすべき結果からプログラムを自動生成するという、従来の開発手法と逆のプロセスを実現するため、新たなソフトウェア開発のスタイルの提案につながる重要な基礎技術です。たとえば、ソフトウェア開発において試験用データから実行可能なプログラムを自動生成するなど、従来のソフトウェア開発プロセスに変革をもたらすような応用を目指します。

    論文情報:
    タイトル PATSQL: Efficient Synthesis of SQL Queries from Example Tables with Quick Inference of Projected Columns
    著者 竹之内啓太(NTTデータ)、石尾隆(奈良先端科学技術大学院大学)、岡田譲二(NTTデータ)、坂田祐司(NTTデータ)

    論文書誌情報:
    名称 Proceedings of the VLDB Endowment, Volume 14, No. 11
    発行元 Very Large Data Base Endowment Inc.
    発行日 2021年7月
    URL https://vldb.org/pvldb/vol14/p1937-takenouchi.pdf

  • 関連Webページ

    ・ソフトウェア工学研究室 SQL生成技術体験用ページ
       https://naist-se.github.io/patsql/index.html?lang=jpn
    ・NTTデータ 技術ブログ「非開発職にもSQLを!」を技術で叶えてみた
        https://www.nttdata.com/jp/ja/data-insight/2021/032402/
    ・NTTデータテクノロジーカンファレンス講演 プログラムを自動生成する技術 ~ Programming by Example ~
       https://www.youtube.com/watch?v=3Ccq2bY6BkE

    >> ソフトウェア工学研究室 / Software Engineering lab.