OutSystemsでDB(データベース)を扱う際のポイントとは?(vol.10)

  • 公開日:2023年01月23日(月)

アプリケーションを開発する上で、「データベース設計」は最も重要なフェーズと言っても過言ではありません。なぜなら、開発におけるロジック設計・実装、運用開始前のデータ移行、運用後のアプリケーションのパフォーマンス・データメンテナンス、DWHやBIによるデータの蓄積・分析など、アプリケーションのライフサイクルすべてに影響するからです。

OutSystemsは、一般的なデータベース設計と同じ概念を用いて、OutSystems上でデータベース設計・開発をすることができます。また、パワフルな標準コネクターによって、主要なRDBMSと連携し、データ参照・更新を実装することが可能です。

本ブログ記事では、OutSystemsにおける「データベースの基本的な利用方法」をご理解いただいたうえで、後半では、データの保守性や将来の拡張性を見据えた「データベース設計のポイント」や、AggregateとSQLの使い分けなど「実装上のTips」を解説します。さらに、「既存のデータベースとOutSystemsを連携する方法」について、具体的な手順も解説します。

OutSystemsにおけるDB(データベース)の基本 ~内部DBと外部DB~

OutSystemsでは、アプリケーションで扱うデータを管理する「データベース」について、2通りの利用方法があります。
本記事では便宜上、この2つを「内部DB」と「外部DB」ということにします。

内部DB

OutSystems内で設計・実装したデータベースを利用することを、便宜上「内部DB」といいます。
OutSystemsによるアプリケーション開発では、「Entity(=テーブル)」を作成し、Publish(=サーバにアップロード)すると、OutSystemsが管理するデータベースに自動的にテーブル定義が生成されます。
開発者は、「Service Studio」と呼ばれるOutSystemsの開発環境で、ER図(Entity Relationship Diagram)を作成しながらEntityを定義するだけでデータベースの実装ができるため、SQL(Create TableなどのDDL)の知識がなくてもスムーズに実装を進められます。

外部DB

OutSystems外で設計・実装したデータベースを利用することを、便宜上「外部DB」といいます。
OutSystemsによるアプリケーション開発では、あらかじめ準備したデータベース・テーブル・ビューを、OutSystemsと連携させることが可能です。
例えば、既に稼働している他システムのデータベースにアクセスしたいときに便利です。

内部DBと外部DBの違い

内部DBは、OutSystemsがリポジトリ管理やログ記録に利用するデータベースサーバと同じサーバを利用します。そのため、RDBMS製品として「Microsoft SQL Server」もしくは「Oracle Database」のいずれかを環境構築時に選ぶ必要があります。
外部DBは、上記に加えて、「MySQL」 「PostgreSQL」 「DB2」 に対応しています。
※上記に挙げた5種類のRDBMS製品以外でも、Forgeと呼ばれるOutSystemsの公開ライブラリ部品を利用することで、様々なNoSQLやDWH製品、SaaSと連携することが可能です。
アプリケーション内で扱うデータの場合は内部DBでデータベース実装まで行ってから外部に公開する、既存のデータベースにアクセスする場合には外部DBを選択する、といった使い分けが可能です。

OutSystemsにおけるDB(データベース)設計・実装のポイント

OutSystemsは、内部で利用するデータベースが「Microsoft SQL Server」もしくは「Oracle Database」のいずれかであるため、データモデル設計に制約が少なく、一般的なデータベース設計の経験者にとって非常に馴染みやすいことが大きな特徴です。
また、テーブル自動生成や、参照用SQLの自動生成(=Aggregate)と標準SQLのコンパイル機能によって、RDBMS製品の差異(SQLの方言)を吸収してくれます。
これによって、実装や将来のデータベース移行にも強力な生産性を発揮することを期待できます。

本章では、設計に必要となるデータベースの概念をOutSystemsの用語とマッピングさせながら解説します。さらに、設計や実装のポイントもご紹介します。

基本用語

OutSystemsでは、一般的なデータベースと同じような概念で、データベースの設計を進めます。基本となる用語は次の通りです。

OutSystems用語 一般的な呼び方 説明
Entity テーブル(表) 複数のAttributeが集まったデータの単位。
OutSystems上では、1度定義すると、1つのデータ型として扱える。
Attribute カラム(列) Entityの中の1つの項目。
名前とデータ型(数値、文字列、日付など)を設定する。
Identifier プライマリーキー(主キー)
フォーリンキー(外部キー)
Entityの中で、あるレコード(行)を一意に識別するために利用するAttribute。デフォルト設定では自動的に1ずつ加算される整数値。
これを利用してEntityどうしの関係性を表現する。
Index インデックス データの検索時に利用する列や、ユニーク制約を入れたい列を指定する。複数列からなるインデックスを作成することも可能。

設計のポイント

OutSystemsでデータを扱うためには、1つのAttribute(=列)で構成されるIdentifier(=主キー)を設けておくと便利です。
「クラス番号+出席番号」のような、2つ以上の項目を主キーとするような設計にすると、OutSystemsによって自動生成されるCRUD操作アクションの一部が使えないためです。
なお、上記のような複合キーを設定したい場合も、ユニークインデックスを作成しておくことで、データの整合性を保持しておくことが可能です。

実装のポイント

OutSystemsでデータを参照する方法として「Aggregate」と「SQL」の2通りの手段があります。

Aggregateは、ローコードでデータを組み合わせたり、条件を指定したりできる仕組みです。「結合(ジョイン)」 「集計(グルーピング)」 「条件指定」 「並び替え(ソート)」 を指定することができ、画面上でクエリ結果を確認することができます。Screen(画面)に紐づけて、Aggregateを作成すると、画面上で利用する項目のみを参照するように、クエリを自動的に最適化するなど、パフォーマンスチューニングも自動でできるため、非常に便利な仕組みです。

一方、SQLは、その名の通り、SQLを記述し、実行させることができます。Aggregateでは実現できないような参照操作(サブクエリなど)や、データの一括更新の際に利用することが推奨されています。その他、既存システムをOutSystemsでモダナイズする際に、複雑なSQLをそのまま移行することも可能でしょう。

OutSystemsと外部DB(データベース)との連携(接続・参照・更新)方法

最後に、OutSystemsと既存のデータベースを連携する方法を解説します。

  1. データベースコネクションを作成する
    Service Centerと呼ばれるWebブラウザからアクセスできるコンソール画面より、「Database Connection」を作成します。
    サーバー名や認証に用いるユーザー名・パスワードを入力して、「Save」ボタンをクリックすれば作成完了です。
  2. Integration Studioでテーブル・ビューとEntityをマッピングする
    次にデスクトップで、Integration Studioを起動(※)します。
    ※Service Studioより、アプリケーションを作成し、「Extension」の新規作成をすることで、Integration Studioが起動します。
    先ほど作成したコネクションを選び、OutSystemsと連携したいテーブル・ビューを選びます。
    選択したテーブル・ビューが自動でエンティティとして取り込まれるので、必要に応じて、ID列の設定、データ型のマッピングなどの設定を調整します。
    設定が完了したら、Publishをして、Integration Studioを終了してください。
  3. モジュールから参照する
    最後に、データ操作をさせたいモジュールをService Studioから開きます。
    「Add Dependencies」メニューより、先ほど作成したExtensionを検索すると、次の画像のように、Entityがリストアップされるので、必要なものにチェックを入れます。

これで、OutSystemsからデータ参照や更新の操作を実装できるようになりました。

まとめ

さて、これまでローコード開発において重要なポイントであるデータベースについて、OutSystemsにおける「データベースの基本的な利用方法(内部DB/外部DB)」や、データの保守性や将来の拡張性を見据えた「データベース設計・実装のポイント」、「既存のデータベースとOutSystemsを連携する方法」を解説して参りました。

OutSystemsを利用することで、SQLやデータベース製品に関する知識がなくても、データモデルを設計し、スムーズにアプリケーション開発を進めることができます。また、主要なRDBMS製品に標準対応しているので、既存システムのデータベースとの連携処理もローコードで実現することができます。ぜひ、OutSystemsの強力なデータ参照機能(Aggregate)と、標準コネクタ機能を活用して、ローコード開発を体験してみてください。

弊社電通総研は、ローコード開発プラットフォーム:OutSystemsの導入/活用を支援する様々なサービスメニューをご用意しております。
ローコード開発のはじめの一歩を、電通総研と一緒に踏み出してみませんか?

電通総研のOutSystems関連サービスページ:https://itsol.dentsusoken.com/outsystems/concept/

本ブログは、2022年12月1日時点の情報をもとに作成しています。
OutSystemsに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。
https://itsol.dentsusoken.com/outsystems/inquiry/