AIR+SQLiteで実現するGTDアプリ
――「Colabolo」から見るRIAのこれから小林聡史
2009/1/6
リアルタイムDB同期のアーキテクチャ
ColaboloのリアルタイムDB同期は、以下の2種類のサーバによって実現されています。
- DB同期サーバ
- メッセージングサーバ
バックグラウンドでDB同期処理を行う
DB同期サーバは、各メンバーのColaboloクライアントに内蔵されたSQLiteの内容を相互に同期する役割を担います。Colaboloクライアント上のユーザー操作によって何らかのデータが更新されると、DB同期サーバに対して更新データが送信される仕組みです。
この同期処理はColaboloクライアントのバックグラウンドで実行されるため、サーバのレスポンス時間がUIのレスポンスに影響を与えることはありません。このリアルタイムDB同期のメリットはほかにもあります。
例えば、DB同期サーバが「デスクトップアプリケーションのバックアップサーバ」としても機能する点。すべてのデータがサーバ側にも保存されているため、もしクライアントPCがクラッシュした場合でも、Colaboloを再インストールするだけですべてのデータをクライアントへダウンロード可能となっており、単純なWordやExcelのファイルをベースに業務を行うよりもずっと可用性が高いことが分かるでしょう。
また、AIR 1.5以降ではSQLiteのデータベースファイルは暗号化されており、かつデータ同期やメッセージングの内容も暗号化します。こうした特徴は、Webアプリケーション譲りのメリットといえるでしょう。
いまのAIR+SQLiteがまだ出していない答えと「その先」
ColaboloのリアルタイムDB同期実装には、AIR+SQLiteが「ここまで使える」という実例を示す目的もありました。ローカルDBやオフライン機能の積極的な利用は、Google Gearsを筆頭にAjax分野でも注目されているトレンドだからです。
今後は、現在のローカルDBが抱える課題と「その先」に技術的関心の焦点が移っていくだろうと筆者は考えています。
クライアントアプリ組み込み型DB開発の負担を隠ぺいするには?
その際に課題となるだろう問題の1つが、ローカルDBに対するDBプログラミングの負担です。
Webアプリケーション開発では、JavaのHibernateやRuby on RailsのActiveRecordに代表されるO/Rマッパーが市民権を得て久しく、低レベルなDBプログラミングに費やす時間は大幅に短縮されています。
→DB2でさくさく実現するRESTfulなDBアプリ(Database Expeert - @IT)
その一方で、いまAIRクライアント上でColaboloのようにSQLiteをフルに使いこなすアプリケーションを書こうとすれば、再び低レベルでリソースをいじりまわすようなDBプログラミングに拘泥されてしまいます。
例えばSQL実行をはじめ、オブジェクトとレコードの相互変換、キャッシュ管理、トランザクション管理、遅延ロードといった(Webアプリケーションではおなじみの)課題を、すべて自前のDAOクラスなどであらためて実装する必要があります。
こういった問題への回避策として、ActionScriptやJavaScriptによる本格的なO/Rマッパーの実装の登場に期待したいところです。
リアルタイムでのデータの相互同期をどう実現するか?
もう1つの問題は、AIRやAjaxなどのRIAに固有の問題である「UI―データモデル―DBの相互同期」方法です。
Webアプリケーションの場合は、HTTPリクエストが届くたびに「DB→データモデル(オブジェクト)→UI」という単方向でUIを作り直すので、相互同期を考える必要はあまりありません。
これに対しRIAでは、一度構築したUIやデータモデルを作り直すことはなく、UI内容やDB内容の変化に応じてリアルタイムに相互同期を取る必要があります。
その実現には従来のWebアプリケーションのフレームワーク(例えばStruts)とはまったく異なるMVCアーキテクチャが求められることはいうまでもありません。
2/3 |
Index | |
AIR+SQLiteで実現するGTDアプリ | |
Page1 Colaboloって? 「リアルタイムDB同期」がカギ SQLiteプログラミングは意外と簡単! SQLiteのパワーをいかに引き出すか |
|
Page2 リアルタイムDB同期のアーキテクチャ バックグラウンドでDB同期処理を行う いまのAIR+SQLiteがまだ出していない答え クライアントアプリ組み込み型DB開発の負担を隠ぺいするには? リアルタイムでのデータの相互同期をどう実現するか? |
|
Page3 RIA向けのフレームワークは群雄割拠 |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|