RDBMSとSQL

数学 機械学習技術 人工知能技術 プログラミング技術  アルゴリズム   データベース技術デジタルトランスフォーメーション ICT技術

前述のデータベースの話で、リレーショナルデータベース(RDBMS)は柔軟なSQLを持つことが特徴であることを述べた。実際に「7つのデーベース7つの世界」のpostgresqlの章も、3部構成になっていて、第1部が基本的なスキーマの定義、データの挿入、行の更新や削除、基本的な読み取りについてのべられ、第2部はSQLについての詳細、第3部はそれを応用した多次元の全文検索となっている。

SQLの語源はwikiによれば「SQLは何かの略語ではない」と記述されていたり、別の記事では「Structured Query Language(構造化問い合わせ言語)」の略とも呼ばれたり不明なようだ。

SQLは、大きく分けると3つの領域の言語から構成される。一つ目はデータスキーマを定義してテーブルを作成するデータ定義言語(Data Definition Language)で、CREATE(テーブルの作成)やALTER(テーブルの設定変更)やDROP(テーブルの削除)、TRUNCATE(テーブルデータの削除)等だ。二つ目は作成したスキーマ(テーブル)の中のデータを操作するデータ操作言語(Data Manipulation Language)で、SELECT(データの検索)、INSERT(データの追加)、UPDATE(データの更新)、DELETE(データの削除)等になる。そして三つ目が全体の制御であるデータ制御言語(Data Control Language)で、GRANT(権限付与)、REVOKE(権限剥奪)等がある。

また、SQLではそれらの基本的な言語だけではなく、以下の例のような操作ができる曖昧検索を可能とするILIKE関数や、

SELECT title FROM movies WHERE title ILIKE 'stardust#';
  title
------------
stardust
Stardust Memories

あるいは、単語内の文字の違いを評価するリーベンシュタイン距離を評価するlevenstein関数、また文字列をトリグラム(3文字連続した文字)に分解してマッチする文字列を探すpg_trigram関数等多彩な関数が準備されている。その辺りが柔軟なSQLと言われる所以なのであろう。

SQLに関する参考図書も多く出版されている。例えば「プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに」はSQLの第一人者であるジョー・セルコの『Joe Celkos SQL for Smarties, Fourth Edition: Advanced SQL Programming』の日本語版で768ページに渡ってデータベースシステムを開発する際にプログラマの実装上有益なTIPSとテクニックが記載されている。SQLを使いこなしたい人には頼りになる参考図書だと思う。

また、RDBMSでのデータ構造は表形式のものがイメージされやすいが、小さなリレーションをつなげることで階層構造や木構造を作ることも可能だ。それらに対する参考図書として「プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために」もある。この本の中では隣接リストモデルや、経路列挙モデル、入子集合モデル等のモデルを用いることで木構造やグラフを表現してStateMachineやペトリネットへの適用を記述している。

ペトリネットStateMachineは古い技術ではあるが、機械学習党と組み合わせて複雑なアルゴリズムを構築可能な技術であり、それらを実装する手段の一つとして汎用的なSQLを利用できることは価値があるものだと思う。

RDBMSは古くからあるメジャーなDBだ。最近はNoSQLがクローズアップされがちだが、SQLを使って全文検索やペトリネット等大概のことが容易に実現できる。新しい技術の習得も必要で楽しいことだが、古くからある技術をうまく使いこなすことも必要だし、新しい技術をより理解できることにもつながると思う。次回には、サーバー技術との連携に戻って述べてみたい。

コメント

  1. […] 次回はRDBMSとSQLについて述べてみたい。 […]

  2. […] また表形式のデータは関係データベースとも関連づけられ、それらに適用されるオントロジーマッチング技術や、スキーママッチング技術が適用されるとともに、知識情報と組み合わさ […]

タイトルとURLをコピーしました