「App Simple」を実現するJSON Relational Duality
Oracle Database 23cのコンセプトは、昨年のOracle CloudWorldで明らかにされたように「App Simple」だ。これはあらゆる開発者にとって簡単に利用できるようにすることで、そのための機能の1つがJSON Relational Duality(JSONとリレーショナルの二面性)だ。
「これは23cの最も重要な機能の1つです」と言うのは、オラクル・コーポレーションデータ&インメモリーテクノロジー担当 シニア・バイスプレジデントのターシャンカ・ラヒリ氏だ。
この機能を使うことで、JSONのドキュメント・モデルとリレーショナル・モデルのデータを統合化して利用できる。これにはどのようなメリットがあるのか。たとえば、大学など学生が講義のスケジュールを管理するアプリケーションの開発をするとする。この場合、全ての学生が受講するコースのリストがある。個々の講義には時間、教室、講師の情報がある。このアプリケーションをリレーショナル・データベースで構築すると、学生、講師、コース、そして学生とコースをマッピングしたものという、4つの正規化した表にデータを格納することになる。
ここで開発者はオブジェクトの読み書きをするのに「4つのSQLのクエリを書かずに、1回の操作でそれをやりたいと考えるでしょう」とラヒリ氏。このとき、学生のスケジュールをJSONドキュメントとして保存することで、この問題を解決できる。「JSONで保存すればGET/PUTのAPI処理で行えます」と言う。
OracleではJSONドキュメントに以前から対応しており、ドキュメントネイティブAPIのSimple Document Access APIをサポートして、MongoDB互換APIも提供している。さらにドキュメントのために標準SQLの拡張も行っており、これにはパラレルSQLも含まれている。その上でドキュメント間の完全な一貫性も担保される。
とはいえ、JSONドキュメントでデータを格納すると新たな問題も発生する。その1つがデータの重複だ。たとえば学生のスケジュールのところに時間、教室のデータがあり、講師のスケジュールにも同様に時間と教室のデータが格納される。複数の学生がいれば、その分だけデータは重複することとなる。データの格納を考えると、こういった重複は効率が悪い。コストもかかり、さらに最も問題なのがデータの一貫性を保つのが難しいことだ。
「アプリケーションが複雑になれば、こういった問題もさらに複雑になります」とラヒリ氏。新しいユースケースが追加されればさらに重複が増えることになると指摘する。