ORDA – 初心者から上級者まで

ORDA とは Object Relational Data Access の略で、オブジェクト指向プログラミングとリレーショナルデータベースの利点を組み合わせたデータアクセス方法で、開発者はデータアクセスの管理よりもビジネス問題の解決に集中することができます。

ORDAを初めて使う人も、すでに使いこなして知識を増やしたい人も、このブログ記事を学習プロセスの道しるべとして考えてみてください。

このブログ記事には以下の内容が含まれています。

さて、本題に入りましょう。

なぜORDAに注目する必要があるのか?

技術的な詳細を説明する前に、ORDA の利点をいくつか挙げてみましょう。

すべてがオブジェクトになる

ORDAは、データベースを含め、すべてがオブジェクトである世界です。

このアプローチによりオブジェクト指向のアプローチで4Dデータベース全体にアクセスすることができ、データの扱いが容易になり、コードの複雑さを軽減することができます。 ORDAはデータを実世界の概念にマッピングするため、データの利用が簡単になり、リレーショナルストラクチャーを深く理解する必要性がなくなります。

クラスによるビジネス指向のコード

ORDAにはデータモデルに特化したクラスが付属しています。クラスのおかげで、データの物理的な実装の複雑さを隠すことができ、アプリケーションはサービスの公開が簡単になり、そしてより管理しやすく、保守しやすくなり、他のアプリケーションとシームレスに統合することができます。

すぐに使えるパフォーマンス

ORDAは、コンテキストや レイジーローディングなどのいくつかの最適化技術を提供することで、アプリケーションのパフォーマンスを向上させることができます。これらのテクニックは、実行する必要があるデータベースクエリの数を減らし、アプリケーションの応答時間を短縮するのに役立ちます。そしてこの最大の利点はというと、SQLやORMツールとは異なり、プログラミングが必要ないことです。

スケーラビリティの向上

ORDAは、分散データベースアーキテクチャをサポートすることにより、アプリケーションのスケーラビリティを向上させることができます。つまり、データを複数のデータベースサーバーに分散させることで、パフォーマンスを向上させ、より大量のデータを処理することができます。

オープンで拡張可能

ORDAを使用すれば、異なるシステムのシームレスな統合を実現することができます。RESTサーバーと組み合わせることで、AngularやReactなどのWebフレームワークなどの他のツール向けに制御されたAPIで(自分のクラスを通じて)ビジネスロジックを公開することができます。

ORDAの利点と、この技術がどのようにあなたのアプリケーションにプラスの影響を与えるかを学んだところで、ここからは技術的な詳細に飛び込んでみましょう。

ORDAのグローバルな概要

このスキーマは、すべてのORDAの使用に関するグローバルな概要を示しています。

  • ORDAはあなたのデータを扱うためのAPIと、ビジネスAPIとして公開される堅牢な抽象化レイヤーを提供します。
  • データへのアクセスをフィルタリングするための完全なパーミッションのシステムが利用可能です。
  • ORDAでは、リモートデータストアまたはREST APIを使用してRESTサーバーで作業することができます。
  • クライアント・サーバーモードで作業する場合、ORDAを使用することができます。
  • ORDAのコードは、Webアプリケーション(4DACTION、4Dタグ)でも使用することができます。

この図は、ORDAがどのように異なる4Dの機能と接続するかの概要を示しています。この概要を把握できたら、以下のステップに従って、学習の旅を始めましょう。

では、ラーニングジャーニーをはじめましょう!

ステップ1 – メインコンセプト

ORDAの主なコンセプトはここにまとめられてます。

まず、データストアデータクラスエンティティエンティティセレクションという用語に慣れましょう。ORDAを使用する際に頻繁に目にすることになるので、これらの概念の意味を理解することが重要です。

ステップ2 – ORDAのAPI

次に、ORDAのオブジェクト指向APIを見て、それらのAPIでどのようにデータを扱うことができるかを発見してください。

例えば、最も頻繁に使用されるAPIは、データベース上でクエリを実行するためのquery()です。

各APIについてよく知るために、実際に動作させることができるデモアプリケーションのあるブログ記事のリストを紹介します。

  1. オブジェクト指向のアプローチでデータベースにクエリを実行する
  2. 現在の選択項目をORDAに行ったり来たりする
  3. CRUDアクション
  4. 論理的な操作
  5. エンティティの処理
  6. オブジェクトとコレクションの操作
  7. 統計情報の計算
  8. 計算式による順序付け
  9. 数式を使ったクエリ
  10. 属性パスの名前付きプレースホルダー
  11. 名前付きプレースホルダー
  12. エンティティセレクション: extract() および refresh() メソッド
  13. 構造情報を取得するためのメンバーメソッド
  14. 2つのエンティティセレクションの比較
  15. 最適化されたロック機構
  16. エンティティのロック
  17. 汎用コードの記述
  18. 汎用コードの例
  19. ORDAチートシート

ORDAでリレーションの力を再発見する

先に述べたように、ORDAは オブジェクト指向プログラミングとリレーショナルデータベースの利点を組み合わせたデータアクセスの方法です

さらに進んで、ORDAを使ったリレーションから得られるすべての利点について知りたい方は、以下の動画集をご覧ください。そこでは、多くのコード行を書くことなく、ユーザーフレンドリーなインターフェースを構築する方法について学べます。

    1. エピソード1
    2. エピソード2
    3. エピソード3
    4. エピソード4

クラシック4Dコードとリンクさせる

もしあなたがまだクラシックな4Dコードを使っているなら(多くの開発者が今も使っているコードです)、必要に応じてそれをORDAコードと混ぜることができます。

これは、あなたのアプリケーションにORDAの概念を徐々に導入するのに便利です。

詳しくはこの ブログ記事をご覧ください。

ステップ3 – ORDA抽象化レイヤー。

ORDAをさらに進めるには、抽象化レイヤーを活用します。

このレイヤーでは、ORDAデータモデルクラスを通して、すべてのビジネスロジックを実装することになります。

クラスを扱うことで、オブジェクト指向プログラミングにさらに一歩踏み込むことになります。各クラスはビジネスロジックを関数で取り込むことができます。

計算属性とエイリアスの利点を是非知ってください。計算式とそのビジネスロジックを定義した計算属性を簡単に設計することができます。また、データモデル内の他の属性と同様にエイリアスを定義することもできます。

したがって、開発者は物理的な実装レイヤーを処理する代わりに、この抽象化レイヤーを利用することになります。

  1. ORDAクラスの世界へようこそ
  2. データモデルを扱うORDAクラス
  3. ORDAデータモデルクラスとREST
  4. ORDAデータモデルクラスを使ったTIPS
  5. 計算された属性によるマジックショー
  6. エイリアスにご挨拶

 

step 4 – リモートで作業する

さて、ここからはさらに楽しい時間です 🙂

クライアント・サーバー

ORDAはクライアントサーバーモードで使用することができます。dsコマンドを使用してデータストアオブジェクトを取得し、データでの作業を開始します。

ここでは、C/Sで作業するための特定の機能についての詳細を説明します。

  1. local キーワード
  2. エンティティセレクションの更新

リモートデータストア

クライアント・サーバー環境の場合、接続できるデータベースは現在のデータベースに制限されます。これには途切れることのないネットワーク接続が必要となります。

しかしリモートデータストアのおかげで、アプリケーションは4D Serverに公開されている別のリモート4Dデータベースからデータを取得すること ができます!

この機能により、多くのユースケースがカバーされます。

  • アプリケーションをオフラインで動作するように構成し、リモートデータにアクセスできるときだけローカルデータを同期させる。
  • 複数のサーバーにデータを公開し、必要に応じて切り替える。
  • データモデルを異なるデータベース(例:ローカルデータ、国際データなど)に分割する。そうすれば、データが異なる場所に分散していても、1つの4Dクライアントコード(プロジェクトメソッドとフォームオブジェクト)でアクセスすることができます。

 

詳しくは、こちらのブログ記事をご覧ください。

  1. 複数の4Dデータソースに興味はありますか?
  2. リモートデータストア、現実的な使用例

REST API

RESTサーバーAPIは、ORDAの概念に依存しています。

REST APIの使い方を学ぶための有益なブログ記事を紹介します。

    1. 4DRESTサーバーとPostman
    2. 4D RESTサーバとReactJs
    3. ORDAデータモデルクラスとREST
    4. exposedキーワード

ステップ5 – リクエストの最適化

ORDAを使用してリモートで作業する場合、必要な属性のみをサーバーに問い合わせるために、リクエストが自動的に最適化されることに留意してください。その上、あなたはパフォーマンスを向上させるために独自の最適化ルールをカスタマイズすることもできます。

ステップバイステップで詳しく学ぶには、こちらのブログ記事のリストをご覧ください。

  1. ORDAを使用してパフォーマンスを向上させる
  2. RESTリクエストの完全制御
  3. リクエストの最適化とデモ
  4. リクエストのログを取る

 

そして、Summit 2020で行われたライブ動画デモをご紹介します。

step 6 – データへのアクセスをフィルタリングするパーミッションシステム

データへのアクセスをフィルタリングすることは、アプリケーションへの悪意のあるアクセスを防ぐために必須の機能です。

v19R8以降では、不正なユーザーからデータを保護するための強力で完全にカスタマイズ可能なシステムを利用することができます。これは、誰がアクセスするか、どのデータにアクセスするかによって、データを保護するシステムです。

RESTリクエストリモートデータストアで受け取ったリクエスト、4DACTIONや4DタグのようなWebプロセスなど、すべてのWebプロセスを対象としています。

詳しくは、こちら のブログ記事をご覧ください。

ステップ7 – プロセス間のデータ共有

共有オブジェクトや共有コレクションを扱ったことがあるかと思います。また、複数のプロセス間でエンティティセレクションを共有することで、パフォーマンスを向上させることができます。

詳しくは、こちらのブログ記事をご覧ください。

  1. プロセス間でエンティティセレクションを共有する
  2. 共有可能なエンティティセレクションへの移行がスムーズに

ウェブアプリケーション

スケーラブルなウェブセッションを扱う場合にも、これを使うことができます。それらはプリエンプティブモードで複数のプロセスを処理することができます。つまり、スケーラブルなウェブセッションは同時に複数のユーザーエージェントのリクエストを受けることができます。

これらの新しいスケーラブルなウェブセッションは、これらのプロセス間でデータを共有すること可能であり、エンティティセレクションの共有も可能です。

これらのブログ記事は、Webプロセスでエンティティセレクションを扱う場合に役立つと思います。

    1. 高度なウェブアプリケーションのためのスケーラブルなウェブセッション
    2. 共有がパフォーマンスにつながる
    3. 4Dタグを使ったORDAイージーループ

最後に

ORDAは、開発プロセスやデータアクセスをより速く、より効率的にすることができる強力なツールであることを忘れないでください。

このブログ記事があなたのお役に立てれば幸いです。フォーラムで遠慮なく質問してください。

ORDAでお役に立てることをうれしく思います。

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。