JP2004295364A - データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム - Google Patents

データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム Download PDF

Info

Publication number
JP2004295364A
JP2004295364A JP2003085431A JP2003085431A JP2004295364A JP 2004295364 A JP2004295364 A JP 2004295364A JP 2003085431 A JP2003085431 A JP 2003085431A JP 2003085431 A JP2003085431 A JP 2003085431A JP 2004295364 A JP2004295364 A JP 2004295364A
Authority
JP
Japan
Prior art keywords
data operation
database
service providing
data
template
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003085431A
Other languages
English (en)
Inventor
Hiroyuki Imai
弘幸 今井
Masayo Yamamoto
麻沙代 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Comware Corp
Original Assignee
NTT Comware Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Comware Corp filed Critical NTT Comware Corp
Priority to JP2003085431A priority Critical patent/JP2004295364A/ja
Publication of JP2004295364A publication Critical patent/JP2004295364A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】既存システムとのデータの整合性を失うことなく単一のインタフェースを用いて、異なるインタフェースを持つ複数のデータベースへのアクセスを提供する。
【解決手段】クライアント100−1からデータ操作の要求を受信したDBアクセスサーバ200のサービスコンテナ部230は、要求されたデータ操作を提供するDBアクセスサービス提供部240−1を起動する。DBコントローラ260は、DBアクセスサービス提供部240−1の指示を受けると、操作対象のデータを管理しているDB300−1を選択し、DB300−1が実装するインタフェースを用いてデータ操作を指示するとともに、データ操作結果を受信する。テンプレート管理部250は、テンプレート252から読み出した出力テンプレートに基づきデータ操作結果をマッピングする。ウェブアクセス部210は、マッピングされたデータ操作結果をクライアント100−1へ返送する。
【選択図】 図2

Description

【0001】
【発明の属する技術分野】
この発明は、複数の異なるインタフェースを持つデータベースへのアクセスを提供するデータベースアクセスシステム及び方法に関する。
【0002】
【従来の技術】
現在、企業では、サービス性の向上や、特定顧客の囲い込みなど、マーケティング戦略の立案や実施を行うため、顧客に関する情報を収集・分析するCRM(Customer Relationship Management)システムを導入している。そして、グループ企業間などで、各々が保有するCRMシステムのデータベースで管理している顧客情報やマーケティングに関する情報等(以下、「CRM情報」)を共有し、より顧客へのサービス性を高め、さらには、業務の効率化を図ることが望まれている。
【0003】
一方、非特許文献1には、クライアントが備えるプログラムに対して、通信プログラム(通信手順)を意識させずにサーバ側が備えるプログラムにアクセスするための技術が記載されている。
【0004】
【非特許文献1】
日本アイ・ビー・エム株式会社、「技術解説 クライアント・サーバと分散オブジェクト」、[online]、[平成15年2月27日検索]、インターネット<URL:http://www−6.ibm.com/jp/software/webservices/toutline/toutline01b.html>
【0005】
【発明が解決しようとする課題】
従来、CRMシステムにおいて、CRM情報が記憶されているデータベースと、このデータベースにアクセスし、CRM情報を管理、あるいは、利用するためのプログラムは一体であった。このため、既存のコンピュータシステムを含め、自由な組み合わせでCRM情報を管理し、利用することが困難であった。すなわち、CRM情報を管理するコンピュータシステムごとに対応するインタフェースを各CRMシステムに作りこむ必要があり、これは、人的リソース及びコストがかかるとともに、開発工期が長くなるという問題があった。
しかし、上述する非特許文献1においては、CRMシステムのプログラムが、データベース毎のインタフェースを意識せずに各種データベースにアクセスすることができるようにはなるが、既存のクライアントに応じて操作対象のデータを選択したり、補完することはできない。
【0006】
この発明は、このような事情を考慮してなされたもので、その目的は、各CRMシステムから単一のインタフェースを用い、既存システムとのデータの整合性を失うことなく、異なるインタフェースを持つ複数のデータベースへアクセスすることができるデータベースアクセスシステム及び方法等を提供することにある。
【0007】
【課題を解決するための手段】
この発明は、上記の課題を解決すべくなされたもので、請求項1に記載の発明は、アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムであって、前記サービス提供システムは、前記データベースサーバへデータ操作の要求を送信するとともに、このデータ操作の要求に対応したデータ操作結果を受信して、アプリケーションサービスを提供する手段を備え、前記データベースアクセスサーバは、前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部と、前記サービス提供システムからのデータ操作の要求を受け、前記データベースへのデータ操作の実行を指示するデータベースアクセスサービス提供部と、前記データベースアクセスサービス提供部からの指示を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求するとともに、このデータ操作の要求に対応したデータ操作結果を受信するデータベースコントローラ部と、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを前記記憶部から読み出し、該出力テンプレートを基に前記データベースコントローラが受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行うテンプレート管理部と、前記テンプレート管理部がマッピングしたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送するアクセス部とを備える、ことを特徴とするデータベースアクセスシステムである。
【0008】
請求項2に記載の発明は、アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムに用いられるデータベースアクセスサーバであって、前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部と、前記サービス提供システムからのデータ操作の要求を受け、前記データベースへのデータ操作の実行を指示するデータベースアクセスサービス提供部と、前記データベースアクセスサービス提供部からの指示を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求するとともに、このデータ操作の要求に対応したデータ操作結果を受信するデータベースコントローラ部と、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを前記記憶部から読み出し、該出力テンプレートを基に前記データベースコントローラが受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行うテンプレート管理部と、前記テンプレート管理部がマッピングしたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送するアクセス部と、を備えることを特徴とするデータベースアクセスサーバである。
【0009】
請求項3に記載の発明は、請求項2に記載のデータベースアクセスサーバであって、前記記憶部は、さらに、前記データベースへデータ操作を要求するためのパラメータへのマッピング情報を示す入力テンプレートを記憶し、前記テンプレート管理部は、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した入力テンプレートを前記記憶部から読み出し、該入力テンプレートを基に、受信したデータ操作の要求内で示されるデータ操作対象のパラメータを、前記データベースへデータ操作を要求するためのパラメータへマッピングして前記データベースアクセスサービス提供部へ出力し、前記データベースアクセスサービス提供部は、前記テンプレート管理部がマッピングしたパラメータを用いた前記データベースへのデータ操作の実行を前記データベースコントローラ部へ指示する、ことを特徴とする。
【0010】
請求項4に記載の発明は、請求項2または請求項3に記載のデータベースアクセスサーバであって、前記マッピング情報は、フィルタリングあるいは補完すべきパラメータのリストからなることを特徴とする。
【0011】
請求項5に記載の発明は、請求項2から請求項4のいずれかの項に記載のデータベースアクセスサーバであって、前記出力テンプレートが示すマッピング情報は、出力データ形式を規定することを特徴とする。
【0012】
請求項6に記載の発明は、アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムに用いられるデータベースアクセス方法であって、前記データベースアクセスサーバが、前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部を用意し、前記サービス提供システムからのデータ操作の要求を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求し、前記データベースから前記データ操作の要求に対応したデータ操作結果を受信し、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを前記記憶部から読み出し、読み出した出力テンプレートを基に、受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行い、マッピングされたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送する、ことを特徴とするデータベースアクセス方法である。
【0013】
請求項7に記載の発明は、アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムに用いられるデータベースアクセスサーバのコンピュータプロラムであって、前記サービス提供システムからのデータ操作の要求を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求するステップと、前記データベースから前記データ操作の要求に対応したデータ操作結果を受信するステップと、前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部から、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを読み出すステップと、読み出した出力テンプレートを基に、受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行うステップと、マッピングされたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送するステップと、をコンピュータに実行させることを特徴とするデータベースアクセスサーバのコンピュータプログラムである。
【0014】
【発明の実施の形態】
以下、図面を参照し、この発明の実施の形態について説明する。
図1は、この発明の一実施の形態によるデータベースアクセスシステムを用いた統合CRM(Customer Relationship Management)システムの概要を説明するための図である。
図1においては、既存の独立したCRMシステムである複数のサービス提供システムが存在している。このとき、これらのサービス提供システムが他のサービス提供システムと連携したサービスを提供したい場合に、それぞれのサービス提供システムが保有していたデータベース(以下、「DB」と記述)を共有し、さらには、新たに共通のDBを構築するといった必要性が生じる。データベースアクセサーバ(以下、「DBアクセスサーバ」と記述)200は、これら各サービス提供システムであるクライアント100−1〜i(以下、「クライアント100」と記述)に対し、単一のインタフェースを用いて、他のクライアント100(サービス提供システム)が保有していたDBや新たに構築するDBへのアクセスを提供する。
【0015】
図2は、この発明の一実施の形態によるデータベースアクセスシステムを用いた統合CRMシステムの構成を示すブロック図である。
クライアント100は、各グループ企業や企業内の各部署などが保有するサービス提供システムであり、例えば、各種会員・顧客管理サービスなどのアプリケーションサービスを提供する機能を有する。クライアント100は、TCP/IP(Transmission Control Protocol/Internet Protocol)を備え、LAN(Local Area Network)やVPN(Virtual Private Network)、専用線網などのネットワークNを介してDBアクセスサーバ200及び図示しない操作者の端末と接続される。そして、アプリケーションサービスを提供するアプリケーションプログラムに従い、HTTP(Hypertext Transfer Protocol)/POSTなどの所定のインタフェースによりDBアクセスサーバ200へアクセスし、DB300−1〜l(以下、「DB300」と記述)内のデータ操作(登録、更新、参照、削除など)の要求を送信する機能と、このデータ操作の要求に対応して返送されたデータの操作結果を基に、各種アプリケーションサービスを継続して実行する機能を備える。なお、アプリケーションプログラム内には、データ操作が必要な場合に、起動すべきDBアクセスサーバ200のDBアクセスサービス提供部240−1〜n(以下、「DBアクセスサービス提供部240」と記述)の識別と、使用すべきテンプレート252の識別が予め記述されている。
なお、データ操作の要求には、DBアクセスサーバ200のアドレス(ホスト名やIPアドレス、ポート番号など)、各種データ操作サービスを提供するDBアクセスサービス提供部240の識別、要求元クライアント100の識別、要求元クライアント100の認証コード(PIN番号など)、返却フォーマット(XML形式/csv形式など)、使用するテンプレート252の識別(テンプレート名)、入力パラメータ(データ操作の対象となるデータ等)などの情報が含まれている。
【0016】
DBアクセスサーバ200は、ネットワークNを介してクライアント100、及び、DB300と接続され、クライアント100へ各種データアクセスサービス、すなわち、各種データの登録、更新、参照、削除などのデータ操作を提供する。図2においては、本発明と関係する機能ブロックのみ抽出して示してある。
DBアクセスサーバ200は、クライアント100とのインタフェース及び内部インタフェースの変換を行うウェブアクセス部210と、異なるデータアクセスインタフェースを持つ各DB300へアクセスするための制御を行う統合メソッド220とを中心に構成される。
【0017】
ウェブアクセス部210は、OS(Operation System)がアプリケーションに対して公開しているプログラムインタフェースであるAPI(Application Program Interface)等の内部インタフェースと、クライアント100からデータ操作の要求を受信したり、クライアント100へデータ操作結果を送信したりするためのインタフェース(ここでは、HTTP)とを変換する機能を有する。
【0018】
統合メソッド220は、サービスコンテナ部230、DBアクセスサービス提供部240−1〜n、テンプレート管理部250、テンプレート252、DB(データベース)コントローラ部260、ログ管理インタフェース部270、及び、ログ管理部272を備える。
【0019】
サービスコンテナ部230は、ハンドラ(割り込み処理ルーチン)を利用し、マルチプロセスで起動される目的のDBアクセスサービス提供部240にアクセスしてスレッドを生成する機能を有する。また、トランザクションの負荷分散を行ったり、操作者からのシェルコマンドを受けて対応するDBアクセスサービス提供部240の起動や停止を行う機能を有する。
【0020】
DBアクセスサービス提供部240は、業務ロジック、すなわち、データの操作(登録、更新、参照、削除など)を指示する手順を実装しているアプリケーションである。DBアクセスサービス提供部240は業務ロジックに従い、データ操作の要求を送信したクライアント100の認証(システム認証)を実行する機能を有する。また、クライアント100からのデータ操作の要求をテンプレート管理部250へ受け渡し、テンプレート252(入力テンプレート)に従ってフィルタリング(選択)や補完などのマッピングが行われた入力パラメータを受け、この入力パラメータをDBコントローラ部260へ通知してDB300に対するデータ操作を指示する機能を有する。加えて、DB300から受けたデータ操作結果をテンプレート管理部250へ受け渡し、テンプレート252(出力テンプレート)に従ったデータ操作結果のフィルタリングや補完などのマッピングが行われたデータ操作結果を受け、このデータ操作結果をウェブアクセス部210へ通知してクライアント100への返送を指示する機能を有する。また、ログの書き込みをログ管理インタフェース部270へ指示する機能を有する。
【0021】
テンプレート管理部250は、DBアクセスサービス提供部240の起動時に、クライアント100から受けたデータ操作の要求により指定されたテンプレート252が妥当であるかを確認する機能を有する。さらに、テンプレート252から入力テンプレートを取得し、データ操作の要求に含まれる入力パラメータから登録や更新を行うデータ項目のフィルタリングや必要なデータ項目の補完などのマッピングを行う機能を有する。また、テンプレート252から出力テンプレートを取得し、クライアント100へ返送するデータ操作結果のフィルタリング、補完、成形、さらには、データ値の変換などのマッピングを行う機能とを有する。
テンプレート252は、DBアクセスサーバ200の備える記憶手段に記憶されており、DBアクセスサービス提供部240及びクライアント100毎の入力テンプレート及び出力テンプレートからなる。入力テンプレートには、クライアント100から受信したデータ操作の要求内で示される入力パラメータから、DB300へ登録あるいは更新すべきデータをフィルタリングするための入力データ項目の一覧が記述されている。また、さらに、データ操作の要求内の入力パラメータでは得られない場合に、補完すべきデータ項目が記述される。一方、出力テンプレートには、DB300から受けたデータ操作結果(データ値やデータ操作の状態情報)から、クライアント100へ返送すべきデータ項目のフィルタリングや、不足しているデータ項目の補完、さらには、所定のデータ形式への成形を行うための出力フォーマットが記述される。
【0022】
DBコントローラ部260は、各DB300に対応したデータベース操作インタフェースを有している。そして、DBアクセスサービス提供部240からの指示を受けてDB300へアクセスし、対応するデータベース操作インタフェースを用いてハッシュ探索などによりデータの操作(登録、更新、参照、削除など)を行う機能を有する。そして、DB300から読み出したデータ操作結果をDBアクセスサービス提供部240へ通知する機能を有する。
【0023】
ログ管理インタフェース部270は、DBアクセスサービス提供部240及びログ管理部272間のインタフェースを変換する。また、ログ管理部272は、各DBアクセスサービス提供部240からの指示を受け、データ操作等に係るログを外部システムに送信、あるいは、内部のメモリ等に書き込む機能を有する。
【0024】
DB300は、ODB(オブジェクト指向データベース)またはRDB(リレーショナル型データベース)であり、それぞれが、異なるデータベース操作インタフェース、すなわち、DB300内の各種データベース管理ソフトウェアに依存したインタフェースを備える。そして、各DB300は、統合CRMシステムで管理される各種CRM情報、例えば、各種サービスの会員の名前や連絡先等を示す会員情報、過去にサービスを利用したことのある顧客を管理する顧客情報、会員や顧客がどのようなサービスを利用したかの履歴を示す購買情報などを記憶する。
【0025】
次に、図3〜図8を用いて、データ操作の動作手順を説明する。なお、図3〜図8においては、ウェブアクセス部210、サービスコンテナ部230、テンプレート管理部250、ログ管理インタフェース部270及びログ管理部272は省略してある。
【0026】
図3は、図2に示す実施の形態によるクライアント100−1からのデータ登録の動作手順を示す。
クライアント100−1は、ネットワークで接続される操作者の端末(図示せず)からアプリケーションサービスの要求を受信することなどにより、対応するアプリケーションプログラムを起動する。そして、アプリケーションプログラム内において、DB300にデータを登録する必要がある場合には、HTTP/POSTによりDBアクセスサーバ200へデータ操作の要求を送信する(ステップS701)。このときのデータ操作の要求には、DBアクセスサーバ200のアドレス、データ登録サービスを実行するDBアクセスサービス提供部240−1の識別、自クライアント100−1の識別、自クライアント100−1の認証コード、返却フォーマット(XML形式)、使用するテンプレートの識別(テンプレート名)、入力パラメータ(登録を行うパラメータであるデータA,B,E等)などの情報が含まれている。
【0027】
DBアクセスサーバ200のウェブアクセス部210がクライアント100−1からHTTPによるデータ操作の要求を受信すると、これを内部インタフェース(API)に変換して、サービスコンテナ部230へ受け渡す。サービスコンテナ部230は、データ操作の要求内に示されるDBアクセスサービス提供部240−1を起動する。DBアクセスサービス提供部240−1は、データ操作の要求内で示されるクライアント100−1の識別、クライアント100−1の認証コードによりクライアントの認証を行うと、テンプレート管理部250を起動する。
【0028】
テンプレート管理部250は、データ操作の要求内で示されるDBアクセスサービス提供部240−1の識別、テンプレートの識別、及び、クライアント100−1の識別に対応したテンプレート(入力テンプレート及び出力テンプレート)がテンプレート252に存在するか否かを確認する。そして、テンプレート252が存在する場合には、対応する入力テンプレートを読み出す。ここでは、読み出した入力テンプレートには、データA,B,Eが記載されているとする。テンプレート管理部250は、読み出した入力テンプレートに従い、DBコントローラ部260に受け渡すべきデータとして、データ操作の要求内の入力パラメータ等からデータA,B,Eを抽出(フィルタリング)してDBアクセスサービス提供部240−1へ返送する(ステップS702)。DBアクセスサービス提供部240−1は、テンプレート管理部250から受信したデータA,B,Eを、これらのデータを管理するDB300に登録するようDBコントローラ部260へ指示する(ステップS703)。
【0029】
DBコントローラ部260は、DBアクセスサービス提供部240−1からデータA,B,Eを受信し、DB300へのデータ登録の指示を受けると、これらデータA,B,Eを管理しているDB300−1を選択する。そして、DB300−1が実装しているインタフェースを用いて、データA,B,Eのデータ登録の要求を送信する(ステップS704)。なお、データ操作を行うべきデータが複数のDB300にわたって記憶されている場合でも、DBコントローラ部260がデータ毎にこのデータを記憶するDB300を管理しているため、対応する各DB300へデータ操作の指示を行うことが可能である。
【0030】
DBコントローラ部260は、DB300−1からデータ登録の操作がOKであった旨の状態情報を受信すると、DBアクセスサービス提供部240−1へ受け渡す(ステップS705)。テンプレート管理部250は、DBアクセスサービス提供部240−1からこの状態情報を受けると、テンプレート252から対応する出力テンプレートを読み出す。ここでは、読み出した出力テンプレートには、Resultを返送するように記載されているとする。テンプレート管理部250は、DBアクセスサービス提供部240−1へウェブアクセス部210に受け渡すべきデータとして、データ登録の操作OKの状態情報に対応した、クライアント100−1で使用されるResultの値をXML形式により返送する(ステップS706)。ウェブアクセス部210は、DBアクセスサービス提供部240−1から受信した、データ登録の操作OKを示すXML形式のResultを、要求元のクライアント100−1へ返送する(ステップS707)。また、DBアクセスサービス提供部240−1は、ログ管理インタフェース部270を介してログ管理部272へログの書き込みを指示する。
【0031】
図4は、図2に示す実施の形態によるクライアント100−2からのデータ登録の動作手順を示す。
クライアント100−2からのデータ登録の動作手順は図3と同様であり、差分のみ記載する。
ステップS711において、クライアント100−2からのデータ操作の要求では、図3と同様に、データ登録サービスを実行するDBアクセスサービス提供部240−1の識別が設定されるが、入力パラメータとしてデータA,D等などが設定される。
また、テンプレート管理部250は、データ操作の要求内のDBアクセスサービス提供部240−1の識別、テンプレートの識別、及び、クライアント100−2の識別に対応して、データA,Dが記載された入力テンプレートを読み出す。テンプレート管理部250は、DBアクセスサービス提供部240−1へDBコントローラ部260に受け渡すべきデータとして、データ操作の要求内の入力パラメータからデータA,Dを抽出して返送する(ステップS712)。DBアクセスサービス提供部240−1は、テンプレート管理部250から受信したデータA,Dを、これらのデータを管理するDB300に登録するようDBコントローラ部260へ指示する(ステップS713)。
【0032】
DBコントローラ部260は、DBアクセスサービス提供部240−1からデータA,Dを受信してDB300へのデータ登録の指示を受けると、これらデータA,Dを管理しているDB300−1を選択し、データA,Dの登録の要求を送信する(ステップS714)。
テンプレート管理部250は、DBアクセスサービス提供部240−1からデータ登録の操作がOKであった旨を示す状態情報を受けると、Resultを返送するように記載された出力テンプレートを読み出す。テンプレート管理部250は、クライアント100−2で使用される、データ登録の操作OKに対応する値のResultをXML形式によりDBアクセスサービス提供部240−1へ返送する(ステップS716)。ウェブアクセス部210は、このResultを、要求元のクライアント100−2へ返送する(ステップS717)。
【0033】
図5は、図2に示す実施の形態によるクライアント100−2からのデータ更新の動作手順を示す。
クライアント100−2からのデータ更新の動作手順は図3に示すデータ登録と同様であり、差分のみ記載する。
まず、ステップS731において、クライアント100−2からデータ操作の要求が送信される。このデータ操作の要求では、データ更新サービスを提供するDBアクセスサービス提供部240−2の識別と、入力パラメータとして更新を行うデータa,d等の情報が含まれているとする。これにより、DBアクセスサーバ200は、DBアクセスサービス提供部240−2を起動する。テンプレート管理部250は、データ操作の要求内のDBアクセスサービス提供部240−2の識別、テンプレートの識別、及び、クライアント100−2の識別に対応して、データa,dが記載された入力テンプレートを読み出す。テンプレート管理部250は、DBアクセスサービス提供部240−2へDBコントローラ部260に受け渡すべきデータとして、データ操作の要求内の入力パラメータに設定されているデータa,dを抽出して返送する(ステップS732)。DBアクセスサービス提供部240−2は、テンプレート管理部250から受信したデータa,dを、これらのデータを管理するDB300に更新するようDBコントローラ部260へ指示する(ステップS733)。
【0034】
DBコントローラ部260は、DBアクセスサービス提供部240−2からデータa,dを受信してDB300への更新の指示を受けると、これらデータa,dを管理しているDB300−2を選択し、データa,dの更新要求を送信する(ステップS734)。
テンプレート管理部250は、DBアクセスサービス提供部240−2からデータ更新の操作がOKであった旨の状態情報を受けると、Resultを返送するように記載された出力テンプレートを読み出す。テンプレート管理部250は、クライアント200−2で使用される、データ更新の操作OKに対応する値のResultをDBアクセスサービス提供部240−2へ返送する(ステップS736)。ウェブアクセス部210は、このResultを、要求元のクライアント100−2へ返送する(ステップS737)。
【0035】
図6は、図2に示す実施の形態によるクライアント100−1からのデータ参照の動作手順を示す。
クライアント100−1は、DB300に記憶されているデータを参照する必要がある場合には、HTTP/POSTによりDBアクセスサーバ200へデータ操作の要求を送信する(ステップS801)。このときのデータ操作の要求には、DBアクセスサーバ200のアドレス、データ参照サービスを実行するDBアクセスサービス提供部240−3の識別、自クライアント100−1の識別、自クライアント100−1の認証コード(PIN番号など)、返却フォーマット(XML形式)、使用するテンプレートの識別、入力パラメータ(参照のキーとなるデータ等)などの情報が含まれる。
【0036】
DBアクセスサーバ200のサービスコンテナ部230は、データ操作の要求内に含まれるDBアクセスサービス提供部240−3を起動する。DBアクセスサービス提供部240−3がクライアント100−1の認証を行い、テンプレート管理部250がDBアクセスサービス提供部240−3の識別、テンプレートの識別、及び、クライアント100−1の識別に対応したテンプレートがテンプレート252に存在することを確認する。すると、DBアクセスサービス提供部240−3は、DBコントローラ部260へデータ取得を指示する(ステップS802)。
【0037】
DBコントローラ部260は、DBアクセスサービス提供部240−3からデータ取得の指示を受けると、取得するデータを管理しているDB300−1を選択し、DB300−1が実装しているインタフェースを用いて、データ取得の要求を送信する(ステップS803)。このとき、必要であれば、クライアント100−1から受信したデータ操作の要求内の入力データに示されるデータ参照のキーを送信する。DBコントローラ部260は、DB300−1から(データ参照のキーを用いて)読み出した全てのデータA,B,C,D,EをDBアクセスサービス提供部240−3へ受け渡す(ステップS804)。テンプレート管理部250は、DB300−1から読み出したデータをDBアクセスサービス提供部240−3より受けると、テンプレート252から出力テンプレートを読み出す。ここでは、読み出した出力テンプレートには、データA,B,Eが記載されているとする。テンプレート管理部250は、読み出したテンプレートに従い、DB300−1から読み出したデータからデータA,B,Eを選択し、この選択されたデータを通知するXML形式のデータ参照結果をDBアクセスサービス提供部240−3返送する(ステップS805)。ウェブアクセス部210は、DBアクセスサービス提供部240−3から受信したデータ参照結果をデータ操作の要求元のクライアント100−1へ返送する(ステップS806)。
【0038】
図7は、図2に示す実施の形態によるクライアント100−2からのデータ参照の動作手順を示す。
クライアント100−2からのデータ参照の動作手順のステップS811〜ステップS814は、図6のステップS801〜ステップS804と同様である。
ステップS815において、テンプレート管理部250は、DB300−1から読み出したデータの値をDBアクセスサービス提供部240−3より受けると、テンプレート252から出力テンプレートを読み出す。ここでは、読み出した出力テンプレートには、データA,B,C,Dが記載されているとする。テンプレート管理部250は、読み出したテンプレートに従い、DB300−1から読み出したデータからデータA,B,C,Dを選択し、この選択されたデータを通知するXML形式のデータ参照結果をDBアクセスサービス提供部240−3返送する(ステップS815)。ウェブアクセス部210は、このデータ参照結果をデータ操作の要求元のクライアント100−2へ返送する(ステップS816)。
【0039】
図8は、図2に示す実施の形態によるクライアント100−2からのデータ参照の動作手順を示す。
ここでは、クライアント100−2が、異なるデータ参照サービスを行うDBアクセスサービス提供部240−4を指定したデータ操作の要求を送信する(ステップS831)。
DBアクセスサーバ200のサービスコンテナ部230は、データ操作の要求内に含まれるDBアクセスサービス提供部240−4を起動する。DBアクセスサービス提供部240−4がクライアント100−2の認証を行い、テンプレート管理部250が対応するテンプレートの存在を確認すると、DBコントローラ部260は、DBアクセスサービス提供部240−4からデータ取得の指示を受ける(ステップS832)。
DBコントローラ部260は、取得するデータを管理しているDB300−2を選択し、DB300−2が実装しているインタフェースを用いて、データ取得の要求を送信する(ステップS833)。DBコントローラ部260は、DB300−2から読み出した全てのデータa,b,c,d,eをDBアクセスサービス提供部240−4へ受け渡す(ステップS834)。テンプレート管理部250は、データa,dが記載された出力テンプレートを読み出す。そして、読み出したテンプレートに従い、DB300−2から受信したデータからデータa,dを選択し、この選択されたデータa,dを通知するXML形式のデータ参照結果をDBアクセスサービス提供部240−4へ返送する(ステップS835)。ウェブアクセス部210は、このデータ参照結果をデータ操作の要求元のクライアント100−2へ返送する(ステップS836)。
【0040】
次に、入力テンプレート及び出力テンプレートを使用した具体的な動作例を説明する。
例えば、あるDB300(DB300−kとする)に、以下の項目が格納されているとする。
・DB名:会員情報
・キー項目:会員番号(MEBR_NO)
・項目1:名前(NAME)
・項目2:性別(SEX)
・項目3:生年月日(BIRTHDAY)
・項目4:郵便番号(ZIPCODE)
・項目5:住所(ADDRESS)
・項目6:電話番号(TEL)
【0041】
(1)あるクライアント100及びデータ登録のDBアクセスサービス(DBアクセスサービス提供部240)に対応し、図9に示す入力テンプレート「Input_template.xml」及び図10に示す出力テンプレート「Out_template1.xml」がテンプレート252に登録されている。
図9に示す入力テンプレート「Input_template.xml」には、「SelectData」、すなわち、キー項目としての「会員番号(MEMBER_NO)」と、「名前(NAME)」、「性別(SEX)」、「生年月日(BIRTHDAY)」、及び、「電話番号(TEL)」とが定義されている。これは、「会員番号(MEMBER_NO)」をキーに「名前(NAME)」、「性別(SEX)」、「生年月日(BIRTHDAY)」、及び、「電話番号(TEL)」の4項目をDB300−kに登録することを示している。もし、クライアント100が「郵便番号(ZIPCODE)」や「住所(ADDRESS)」を入力パラメータとして統合メソッドに渡したとしても、指定された入力テンプレートにその項目は定義されていないため、DB300−kに登録されることはない。
また、図10に示す出力テンプレート「Out_template1.xml」は、「RESULT」を通知するXML形式のデータ操作結果を、データ操作の要求の送信元クライアント100へ返送することを示している。これより、DBコントローラ部260がDB300−kにデータの登録を行った結果、正常に登録が成功した旨を示す状態情報を受信した場合は、図10に示す出力テンプレートに従って、図11に示すように、「RESULT」に登録が正常終了した旨を示すコード「0」が設定されたXML形式のデータ操作結果がクライアント100へ返送される。また、登録のデータ操作が失敗した旨を示す状態情報を受信した場合は、図12に示すように、「RESULT」に登録が異常終了した旨を示すコード「9999」が設定されたXML形式のデータ操作結果がクライアント100へ返送される。なお、データ操作正常時に返却するコードやエラー発生時に返却するコードは、統合メッソッド220及び各クライアント100間で取り決めたコードであり、DB300から返送される状態情報とこのコードとの変換が行われる。
【0042】
(2)データ参照のサービスアプリケーション(DBアクセスサービス提供部240)に対応し、図13に示す出力テンプレート「Out_template2.xml」がテンプレート252に登録されている。
図13に示す出力テンプレート「Out_template2.xml」には、「RESULT」、「会員番号(MEMBER_NO)」、「名前(NAME)」、「性別(SEX)」、「生年月日(BIRTHDAY)」、及び、「電話番号(TEL)」とをXML形式により返却するように規定されている。そのため、DBコントローラ部260を介してDB300から「名前(NAME)」、「性別(SEX)」、「生年月日(BIRTHDAY)」、「郵便番号(ZIPCODE)」、「住所(ADDRESS)」、「電話番号(TEL)」が読み出されたとしても、図14のクライアント100へ返送されるデータ操作結果に示す様に、「RESULT」、「会員番号(MEMBER_NO)」、「名前(NAME)」、「性別(SEX)」、「生年月日(BIRTHDAY)」、及び、「電話番号(TEL)」がXML形式によりクライアント100へ返送され、「郵便番号(ZIPCODE)」及び「住所(ADDRESS)」は通知されないことを示している。また、データ操作結果の「RESULT」には、正常にデータ操作が行われたことを示す旨のコード「0」が補完される。
【0043】
なお、上述のクライアント100、DBアクセスサーバ200、及び、DB300は、内部にコンピュータシステムを有している。そして、上述した動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、OSや周辺機器等のハードウェアを含むものである。
【0044】
また、「コンピュータ読み取り可能な記録媒体」とは、ROMの他に、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のシステムやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0045】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0046】
【発明の効果】
この発明によれば、複数のサービス提供システムから、データの整合性を失うことなく、異なるインタフェースを持つ複数のデータベースへのアクセスを提供することができる。また、データベースの構造が変更され、データ項目の増減等があった場合でも、テンプレートを修正するのみでよく、サービス提供システムへの影響が発生しない。また、新たなサービス提供システムからの利用が発生した場合であっても、テンプレートを追加するのみでデータベースの利用が可能となる。
【図面の簡単な説明】
【図1】この発明の一実施の形態を用いたCRMシステムの概要を説明するための図である。
【図2】この発明の一実施の形態を用いたCRMシステムの構成を示すブロック図である。
【図3】同実施の形態によるデータ登録の動作手順を示す図である。
【図4】同実施の形態によるデータ登録の動作手順を示す図である。
【図5】同実施の形態によるデータ更新の動作手順を示す図である。
【図6】同実施の形態によるデータ参照の動作手順を示す図である。
【図7】同実施の形態によるデータ参照の動作手順を示す図である。
【図8】同実施の形態によるデータ参照の動作手順を示す図である。
【図9】同実施の形態によるデータ登録の入力テンプレートの設定例を示す図である。
【図10】同実施の形態によるデータ登録の出力テンプレートの設定例を示す図である。
【図11】同実施の形態によるデータ登録結果の設定例を示す図である。
【図12】同実施の形態によるデータ登録結果の設定例を示す図である。
【図13】同実施の形態によるデータ参照の出力テンプレートの設定例を示す図である。
【図14】同実施の形態によるデータ参照結果の設定例を示す図である。
【符号の説明】
100−1〜i…クライアント(サービス提供システム)
200…DB(データベース)アクセスサーバ
210…ウェブアクセス部(アクセス部)
220…統合メソッド
230…サービスコンテナ部
240−1〜n…DB(データベース)アクセスサービス提供部
250…テンプレート管理部
252…テンプレート
260…DB(データベース)コントローラ部
270…ログ管理インタフェース部
272…ログ管理部
300−1〜l…DB(データベース)

Claims (7)

  1. アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムであって、
    前記サービス提供システムは、
    前記データベースサーバへデータ操作の要求を送信するとともに、このデータ操作の要求に対応したデータ操作結果を受信して、アプリケーションサービスを提供する手段を備え、
    前記データベースアクセスサーバは、
    前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部と、
    前記サービス提供システムからのデータ操作の要求を受け、前記データベースへのデータ操作の実行を指示するデータベースアクセスサービス提供部と、
    前記データベースアクセスサービス提供部からの指示を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求するとともに、このデータ操作の要求に対応したデータ操作結果を受信するデータベースコントローラ部と、
    前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを前記記憶部から読み出し、該出力テンプレートを基に前記データベースコントローラが受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行うテンプレート管理部と、
    前記テンプレート管理部がマッピングしたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送するアクセス部とを備える、
    ことを特徴とするデータベースアクセスシステム。
  2. アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムに用いられるデータベースアクセスサーバであって、
    前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部と、
    前記サービス提供システムからのデータ操作の要求を受け、前記データベースへのデータ操作の実行を指示するデータベースアクセスサービス提供部と、
    前記データベースアクセスサービス提供部からの指示を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求するとともに、このデータ操作の要求に対応したデータ操作結果を受信するデータベースコントローラ部と、
    前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを前記記憶部から読み出し、該出力テンプレートを基に前記データベースコントローラが受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行うテンプレート管理部と、
    前記テンプレート管理部がマッピングしたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送するアクセス部と、
    を備えることを特徴とするデータベースアクセスサーバ。
  3. 前記記憶部は、さらに、前記データベースへデータ操作を要求するためのパラメータへのマッピング情報を示す入力テンプレートを記憶し、
    前記テンプレート管理部は、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した入力テンプレートを前記記憶部から読み出し、該入力テンプレートを基に、受信したデータ操作の要求内で示されるデータ操作対象のパラメータを、前記データベースへデータ操作を要求するためのパラメータへマッピングして前記データベースアクセスサービス提供部へ出力し、
    前記データベースアクセスサービス提供部は、前記テンプレート管理部がマッピングしたパラメータを用いた前記データベースへのデータ操作の実行を前記データベースコントローラ部へ指示する、
    ことを特徴とする請求項2に記載のデータベースアクセスサーバ。
  4. 前記マッピング情報は、フィルタリングあるいは補完すべきパラメータのリストからなることを特徴とする請求項2または請求項3に記載のデータベースアクセスサーバ。
  5. 前記出力テンプレートが示すマッピング情報は、出力データ形式を規定することを特徴とする請求項2から請求項4のいずれかの項に記載のデータベースアクセスサーバ。
  6. アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムに用いられるデータベースアクセス方法であって、
    前記データベースアクセスサーバが、
    前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部を用意し、
    前記サービス提供システムからのデータ操作の要求を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求し、
    前記データベースから前記データ操作の要求に対応したデータ操作結果を受信し、
    前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを前記記憶部から読み出し、
    読み出した出力テンプレートを基に、受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行い、
    マッピングされたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送する、
    ことを特徴とするデータベースアクセス方法。
  7. アプリケーションサービスを提供するサービス提供システムと、アプリケーションサービスに係るデータを記憶しているデータベースと、前記サービス提供システムへ前記データベースへのアクセスサービスを提供するデータベースアクセスサーバとからなるデータベースアクセスシステムに用いられるデータベースアクセスサーバのコンピュータプロラムであって、
    前記サービス提供システムからのデータ操作の要求を受け、前記データベースが実装するデータベースアクセスインタフェースを用いて前記データベースへデータ操作を要求するステップと、
    前記データベースから前記データ操作の要求に対応したデータ操作結果を受信するステップと、
    前記サービス提供システムへ出力するデータ操作結果へのマッピング情報を示す出力テンプレートを記憶する記憶部から、前記データ操作の要求を送信したサービス提供システム及び要求されたデータ操作に対応した出力テンプレートを読み出すステップと、
    読み出した出力テンプレートを基に、受信したデータ操作結果から前記サービス提供システムへ出力するデータ操作結果へのマッピングを行うステップと、
    マッピングされたデータ操作結果を、データ操作の要求を送信した前記サービス提供システムへ返送するステップと、
    をコンピュータに実行させることを特徴とするデータベースアクセスサーバのコンピュータプログラム。
JP2003085431A 2003-03-26 2003-03-26 データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム Pending JP2004295364A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003085431A JP2004295364A (ja) 2003-03-26 2003-03-26 データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003085431A JP2004295364A (ja) 2003-03-26 2003-03-26 データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2004295364A true JP2004295364A (ja) 2004-10-21

Family

ID=33400357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003085431A Pending JP2004295364A (ja) 2003-03-26 2003-03-26 データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2004295364A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013101548A (ja) * 2011-11-09 2013-05-23 Hitachi Systems Ltd コンピュータシステム及びリカバリ方法
JP2015505387A (ja) * 2011-11-17 2015-02-19 ベネフィットフォーカス ドット コム インコーポレーテッドBenefitfocus.Com, Inc. 動的サービス統合システム及び方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013101548A (ja) * 2011-11-09 2013-05-23 Hitachi Systems Ltd コンピュータシステム及びリカバリ方法
JP2015505387A (ja) * 2011-11-17 2015-02-19 ベネフィットフォーカス ドット コム インコーポレーテッドBenefitfocus.Com, Inc. 動的サービス統合システム及び方法

Similar Documents

Publication Publication Date Title
JP5512215B2 (ja) ジョブ処理システム及びその方法、そのプログラム
JP5007301B2 (ja) 電子ソフトウェアダウンロード用の分割ダウンロード
US20100250730A1 (en) Automated license reconciliation for deployed applications
JP2005196767A (ja) ウェブ・サービス呼び出しをサポートするスケジューラ
US20200209823A1 (en) Flow engine for building automated flows within a cloud based developmental platform
EP2416246B1 (en) Extensibility of business process and application logic
CN103297493A (zh) 有分区意识服务质量特征
US11269858B2 (en) Information management in a decentralized database including a fast path service
US11695840B2 (en) Dynamically routing code for executing
US11418322B2 (en) Information management in a decentralized database including a fast path service
JP3307329B2 (ja) ネットワーク構成管理対象アクセスシステム及び方法
JP2017068480A (ja) ジョブ管理方法、ジョブ管理装置及びプログラム
US10291746B2 (en) Context switch of database connections
US11398895B2 (en) Information management in a decentralized database including a fast path service
WO2020153053A1 (ja) データベース管理サービス提供システム
CN114787836A (zh) 用于远程执行一个或更多个任意定义的工作流的系统和方法
US9442746B2 (en) Common system services for managing configuration and other runtime settings of applications
JP2004295364A (ja) データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム
US20220311595A1 (en) Reducing transaction aborts in execute-order-validate blockchain models
KR102659150B1 (ko) 애플리케이션 서비스 제공 장치, 애플리케이션 서비스 제공 방법 및 애플리케이션 서비스를 제공하는 컴퓨터로 실행가능한 프로그램을 저장하는 저장매체
KR102637168B1 (ko) 애플리케이션 서비스 제공 장치, 애플리케이션 서비스 제공 방법 및 애플리케이션 서비스 제공하는 프로그램이 저장된 컴퓨터가 판독 가능한 기록매체
JP5748711B2 (ja) データベースドライバおよびプログラム
US20240193307A1 (en) Integrating data privacy integration protocols across system landscapes
US20220188295A1 (en) Dynamic management of blockchain resources
US20220129304A1 (en) Systems and methods of a virtualized management operation engine of a distributed system