Asakusa Framework Advent Calendar 2019の3日目、SQLをAsakusaFWに変換するポイントについてです。
SQLをAsakusaFWに変換するに当たって、まず必要なのはテーブルですね。
AsakusaFWでテーブルに相当するのはデータモデルです。
元々AsakusaFWはWindGate JDBCでテーブルをデータモデルとして読み書きすることができるので、それに準じます。
RDBの基本的なデータ型はAsakusaFWのDMDLのデータ型に対応するものがありますが、TIMESTAMP(秒より小さい単位、すなわちミリ秒やマイクロ秒)に直接対応するデータ型はAsakusaFWには無いので、必要であればTEXT等で代用することになります。
BLOB等のバイナリーや配列(ARRAY)は使えません。
もし配列を使いたいなら、JSONにでもして、TEXTとして保持するとか…?
また、AsakusaFWに制約(NOT NULLやUNIQUE等)の機構はありません。
必要であれば、そのチェックロジックを自分でコーディングする必要があります。
テーブル(データモデル)の結合にはAsakusaFWを実行する基盤(SparkやM3BP)のシャッフル機能を使うので、テーブルのインデックスは必要ありません(インデックスのような仕組みはありません)。