データベース

データベースで不満なこと、もしくはRDBMSがメインとなるような業務アプリ開発において、
これができたら開発が楽になるだろう、と思う点。
データベースがもっているとより便利だろうと思う機能。

  1. JSONなどの、構造を持ったデータの入出力。
  2. 効率の良いデータフローの仕組み。
  3. データフローと組合せて、複雑な制約条件を付加する機能。

こういう機能を持ったデータベースを作ろうと思っていて、同じようなことを何度も書いてきた気がするが、
特に上の2点について、以前より理解が深まったので、もうすこし詳しく書いていきたい。

追記

SQLのクエリー結果は、2次元の表の形で得られる。リレーショナルモデルは、テーブル=タプルの集合、という考え方をするから、表ではなくて集合を表したいのかもしれないけれど。
で、その表の各セルのなかには、スカラー値がはいる。配列や表のような、構造データが入ることはない。(そういう拡張もあるらしいがここでは無視する)
だから、たとえば、

部署名:営業部
構成員:
  名前:浦島太郎 年齢:20歳
  名前: 桃太郎 年齢:25歳

部署名:経理部
構成員:
  名前:  赤鬼 年齢:30歳
  名前:  青鬼 年齢:23歳

というような、表が入れ子になっているというかツリー状になっているというか、こういった2次元の表に収まらない、つまり2次元じゃない情報は、一つのSQLクエリーの結果として得ることはできない。
RDBを使ったWebアプリケーションで、こういう出力をしたいと思ったら、通常はプログラミングをして整形を行うことになると思う。
ちなみに、当然

部署名:営業部  名前:浦島太郎 年齢:20歳
部署名:営業部  名前: 桃太郎 年齢:25歳
部署名:経理部  名前:  赤鬼 年齢:30歳
部署名:経理部  名前:  青鬼 年齢:23歳

のような形にすれば2次元の情報として、一度のSQLクエリーから結果を得ることができる。
で、この、セルにスカラ値しか入らない、というのは普通の表計算ソフトでも同じである。
(すくなくともExcelではそうだと思う。)
もちろんXMLDBであれば、このようなツリーの情報を一度に取得することは可能だろう。
が、XMLDBは別の理由から、要件に合わない。なんで合わないのか、ちゃんと説明できるようになるには、もうすこし考察する必要がある。つまり、なんでだめなのかは、なんとなくしかわからない。
だけど、今の時点で思うのは、XMLは最初から多次元で格納されているけれど、そうではなくて1か2次元くらいで情報を格納しておいて、とりだすときに、自由に多次元に構成して取り出す、という仕組みの方が良いと感じている。
えーと、2次元とか多次元とか、かなりフィーリングで、インフォーマルに書いてるので適当です。