SimpleModelingと呼んでいるモデリング手法をクラウド向けに拡張する作業を行っています。
その一つの柱がドメインモデルの拡張です。ドメインモデルの拡張の一つのアプローチは、オブジェクト種別ごとの実現方法の確立です。モデルから設計/実装へ落し込むときの指針が一つも目標ですが、最終的にはDSLコンパイラによる自動コーディングをターゲットにしています。
SimpleModelingではドメインモデルを構成するオブジェクトに対して用途に応じた分類行い、プロファイルとして定義しています。代表的なオブジェクトは以下のものです。
データストアの種類として以下のものを想定しています。
クラウドプラットフォームでは、プログラムがシステム上に多数存在する物理マシンに配備されるわけですが、この配備のメカニズムに乗って同時にデータも配備できるというメリットがあります。また、DSLコンパイラを使うと、プログラム開発とデータ定義を別々に行い、配備の段階で集約するといったことも可能になるので、データをプログラム内に埋め込むことのデメリットを緩和することができます。
この他のデータストアとしてはCDN(Content Dlivery Network)が考えられますが、HTMLページなどの静的な成果物の配備が主な用途なので考慮の対象外にしています。(場合によっては対象に加えるかもしれません。)
詳細は後日。
その一つの柱がドメインモデルの拡張です。ドメインモデルの拡張の一つのアプローチは、オブジェクト種別ごとの実現方法の確立です。モデルから設計/実装へ落し込むときの指針が一つも目標ですが、最終的にはDSLコンパイラによる自動コーディングをターゲットにしています。
SimpleModelingではドメインモデルを構成するオブジェクトに対して用途に応じた分類行い、プロファイルとして定義しています。代表的なオブジェクトは以下のものです。
- Actor
- システム外に存在する(リアル)オブジェクトの代理オブジェクト。(例:利用者)
- Event
- システムで発生する出来事。
- Resource
- システムが管理するリソース。
- Powertype
- ドメインオブジェクトのパワータイプ。(実装時には区分コードなどで実現される)
- Rule
- ドメインで使用される規則。
データストアの種類
SimpleModelingのドメインモデル拡張での一つのアイデアは、ドメインモデルのオブジェクト種別ごとにデータストアとのマッピングの相性を定義することが有効ではないかということです。設計の指針にもなりますし、DSLコンパイラでのコード生成でも活用できます。データストアの種類として以下のものを想定しています。
- RDBMS
- 汎用的なデータストア。トランザクション。SQLによる高度な問合せ。複雑なデータ構造。スケーラビリティは低い。
- 分散ディレクトリ
- システムデータ管理向け。利用者情報などシステム管理データにアプリケーションが相乗りする使用方法。ほとんど参照でまれに更新されるデータに使用。トランザクション、SQL的な高度な問合せ、複雑なデータ構造はない。スケーラビリティは高い。
- 分散キャッシュ
- キャッシュデータの格納向け。ほとんど参照でまれに更新されるデータに使用。永続性はない。トランザクション、SQL的な高度な問合せ、複雑なデータ構造はない。スケーラビリティは高い。
- KVS
- 汎用的なデータストア。トランザクション、SQLによる高度な問合せ、複雑なデータ構造はない。スケーラビリティは高い。
- カラムナDB
- 分析処理向け。全件走査に強い。スケーラビリティは高い。トランザクション、SQLによる高度な問合せ、複雑なデータ構造については要調査。
- 文書DB
- 半構造データの格納。その他の特性は要調査。
- プログラム埋込み
- データをプログラムに埋込んで配備。高速動作。エラー要因、配備の複雑度を低減。データとアプリケーションのライフサイクルが一致する場合、特に有効。
クラウドプラットフォームでは、プログラムがシステム上に多数存在する物理マシンに配備されるわけですが、この配備のメカニズムに乗って同時にデータも配備できるというメリットがあります。また、DSLコンパイラを使うと、プログラム開発とデータ定義を別々に行い、配備の段階で集約するといったことも可能になるので、データをプログラム内に埋め込むことのデメリットを緩和することができます。
この他のデータストアとしてはCDN(Content Dlivery Network)が考えられますが、HTMLページなどの静的な成果物の配備が主な用途なので考慮の対象外にしています。(場合によっては対象に加えるかもしれません。)
マッピング
ドメインオブジェクトとデータストアのマッピングは以下の図のものを考えています。用途を問わずすべてのデータをRDBMSを入れるというアプローチも当然あるわけですが、ここでは用途別により適したデータベースという視点で分類しています。詳細は後日。
0 件のコメント:
コメントを投稿