(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-15
(54)【発明の名称】クロス-マイクロサービスクエリ最適化を提供するシステム及び方法
(51)【国際特許分類】
G06F 16/9032 20190101AFI20241108BHJP
【FI】
G06F16/9032
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024527236
(86)(22)【出願日】2021-12-21
(85)【翻訳文提出日】2024-05-08
(86)【国際出願番号】 US2021064528
(87)【国際公開番号】W WO2023086111
(87)【国際公開日】2023-05-19
(32)【優先日】2021-11-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ドン,ニン
(72)【発明者】
【氏名】水田 健一
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA10
5B175GB03
(57)【要約】
一実施形態に従って、クロス-マイクロサービスクエリ処理を提供するシステムおよび方法が記載されている。そのシステムは、疎結合されているかもしれないが何らかの形で関連しているかもしれず、たとえばクエリを処理するためにマイクロサービスが相互に作用するか又は互いのデータへのアクセスを要求するという点で関連しているかもしれないマイクロサービスの使用をサポートするオブジェクトサービスフレームワークを提供する。各マイクロサービスは、独立して発展、展開、および、進化することが可能であり、パブリックAPIsとして定義され、かつ、そのフレームワークを通じて晒されるコントラクト及びインターフェースを通して他のマイクロサービスと相互に作用する。そのオブジェクトサービスフレームワークは、たとえば、異なるマイクロサービスのオブジェクトを結合するクエリを、そのデータベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、クロス-マイクロサービス層を提供するのに使用され得る。
【特許請求の範囲】
【請求項1】
クロス-マイクロサービスクエリ処理を提供するシステムであって、
クラウドコンピューティング環境と、前記クラウドコンピューティング環境において動作する複数のマイクロサービスとを提供する1つ以上のプロセッサを含むコンピュータと、
オブジェクトサービスフレームワークと、を備え、
各マイクロサービスオブジェクトは、内部の実装定義及びパブリックコントラクト定義を提供するメタデータと関連付けられており、
各マイクロサービスのために、前記実装定義は、プロパティを有したマイクロサービスオブジェクトと、データベーステーブル/ビューとの間のマッピングを提供し、
前記複数のマイクロサービスおよびそれらのオブジェクトと関連付けられたコレクティブビューは、クロス-サービスビューを前記データベースに入力するのに使用され、
各マイクロサービスは、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限するデータベーススキーマ又はデータベースロールと関連付けられており、
前記複数のマイクロサービスに渡って結合されるクエリに応答して、前記クロス-サービスビューに基づくクエリを受け取り、且つ、前記クエリを1つ以上のデータベースクエリに変換する、クロス-マイクロサービス層が提供される、システム。
【請求項2】
前記オブジェクトサービスフレームワーク及び前記クロス-マイクロサービス層は、異なるマイクロサービスのオブジェクトを結合するクエリを、前記データベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、請求項1に記載のシステム。
【請求項3】
前記オブジェクトサービスフレームワークは、疎結合されているが関連しているマイクロサービスの使用をサポ-トするクラウドサービスとしてアクセス可能である、請求項1に記載のシステム。
【請求項4】
前記クロス-サービスビューに基づく前記オブジェクト-レベルクエリは、クエリを、前記データに渡るかさもなければ様々な前記マイクロサービスによって独立して所有される1つ以上のデータベースSQLクエリに変換する、請求項1に記載のシステム。
【請求項5】
クロス-マイクロサービスクエリ処理を提供する方法であって、
1つ以上のプロセッサを含むコンピュータにおいて、クラウドコンピューティング環境と、前記クラウドコンピューティング環境において動作する複数のマイクロサービスとを提供することと、
各マイクロサービスオブジェクトを、内部の実装定義及びパブリックコントラクト定義を提供するメタデータと関連付けることとを備え、各マイクロサービスのために、前記実装定義が、プロパティを有する前記マイクロサービスオブジェクトとデータベーステーブル/ビューとの間のマッピングを提供しており、
クロス-サービスビューを前記データベースに入力するために前記複数のマイクロサービスと関連付けられたコレクティブビューを使用することをさらに備え、各マイクロサービスは、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限するデータベーススキーマ又はデータベースロールと関連付けられており、
クロス-マイクロサービス層を提供することをさらに備え、前記クロス-マイクロサービス層は、前記複数のマイクロサービスに渡って結合されるクエリに応答して、前記クロス-サービスビューに基づくクエリを受け取り、且つ、前記クエリを1つ以上のデータベースクエリに変換する、方法。
【請求項6】
前記オブジェクトサービスフレームワーク及び前記クロス-マイクロサービス層は、異なるマイクロサービスのオブジェクトを結合するクエリを、前記データベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、請求項5に記載の方法。
【請求項7】
前記オブジェクトサービスフレームワークは、疎結合されているが関連しているマイクロサービスの使用をサポ-トするクラウドサービスとしてアクセス可能である、請求項5に記載の方法。
【請求項8】
前記クロス-サービスビューに基づく前記オブジェクト-レベルクエリは、クエリを、前記データに渡るかさもなければ様々な前記マイクロサービスによって独立して所有される1つ以上のデータベースSQLクエリに変換する、請求項5に記載の方法。
【請求項9】
1つ以上のプロセッサを含むコンピュータによって読まれて実行された時に前記コンピュータに方法を実行させる指令を有した非一時的なコンピュータ読み取り可能なストレージ媒体であって、前記方法は、
1つ以上のプロセッサを含むコンピュータにおいて、クラウドコンピューティング環境、及び、そこで動作する複数のマイクロサービスを提供することと、
各マイクロサービスオブジェクトを、内部の実装定義及びパブリックコントラクト定義を提供するメタデータと関連付けることとを備え、各マイクロサービスのために、前記実装定義が、プロパティを有する前記マイクロサービスオブジェクトとデータベーステーブル/ビューとの間のマッピングを提供しており、
クロス-サービスビューを前記データベースに入力するために前記複数のマイクロサービスと関連付けられたコレクティブビューを使用することをさらに備え、各マイクロサービスは、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限するデータベーススキーマ又はデータベースロールと関連付けられており、
クロス-マイクロサービス層を提供することをさらに備え、前記クロス-マイクロサービス層は、前記複数のマイクロサービスに渡って結合されるクエリに応答して、前記クロス-サービスビューに基づくクエリを受け取り、且つ、前記クエリを1つ以上のデータベースクエリに変換する、非一時的なコンピュータ読み取り可能なストレージ媒体。
【請求項10】
前記オブジェクトサービスフレームワーク及び前記クロス-マイクロサービス層は、異なるマイクロサービスのオブジェクトを結合するクエリを、前記データベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、請求項9に記載の非一時的なコンピュータ読み取り可能なストレージ媒体。
【請求項11】
前記オブジェクトサービスフレームワークは、疎結合されているが関連しているマイクロサービスの使用をサポ-トするクラウドサービスとしてアクセス可能である、請求項9に記載の非一時的なコンピュータ読み取り可能なストレージ媒体。
【請求項12】
前記クロス-サービスビューに基づく前記オブジェクト-レベルクエリは、クエリを、前記データに渡るかさもなければ様々な前記マイクロサービスによって独立して所有される1つ以上のデータベースSQLクエリに変換する、請求項9に記載の非一時的なコンピュータ読み取り可能なストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(優先の主張)
この出願は、出願番号No.17/525,653、2021年11月12日に庁提出された「クロス-マイクロサービスクエリ最適化を提供するシステム及び方法」というタイトルの米国特許出願に対する優先権を主張するものであり、上記出願及びその内容は、ここでは参照によって援用される。
【0002】
ここに記載されている実施形態は、一般的に、クラウドコンピューティング環境、クラウドサービス、および、マイクロサービスに関連しており、特に、クロス-マイクロサービスクエリ処理を提供するシステム及び方法に向けられている。
【背景技術】
【0003】
高速で変化するソフトウェア要求に対処するために、企業は、急速に発展および展開可能で、維持が容易で、かつ、高可用性に生成され得るソフトウェアアプリケーションを提供するマイクロサービスのような技術に益々関心を向けている。
【0004】
マイクロサービス指向のアーキテクチャーでは、各マイクロサービスは、各自のデータモデルを所持することや各自のデータを管理することを含めて、パブリックインターフェースのみを通じて外部の独立体にアクセス可能な内部のオペレーションを用いて比較的に独立して動作することができる。
【0005】
しかしながら、エンタープライズアプリケーションのような、相互作用したりデータ共有する複雑なソフトウェアアプリケーションと共に使用された場合、マイクロサービス同士の間の依存性を管理することが特に困難となる。たとえば1つのマイクロサービスは、適切に機能するために、1つ以上の他のマイクロサービスからデータを受け取る必要があるかもしれない。
【0006】
一実施形態に従って、クロス-マイクロサービスクエリ処理を提供するシステムおよび方法が記載されている。そのシステムは、疎結合されているかもしれないが何らかの形で関連しているかもしれない、たとえばクエリを処理するために、マイクロサービスが相互に作用するか又は互いのデータへのアクセスを要求するという点で関連しているかもしれないマイクロサービスの使用をサポートするオブジェクトサービスフレームワークを提供する。各マイクロサービスは、独立して発展、展開、および、進化することが可能であり、パブリックAPIsとして定義され、かつ、そのフレームワークを通じて晒されるコントラクト及びインターフェースを通して他のマイクロサービスと相互に作用する。そのオブジェクトサービスフレームワークは、たとえば、異なるマイクロサービスのオブジェクトを結合するクエリを、そのデータベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、クロス-マイクロサービス層を提供するのに使用され得る。
【図面の簡単な説明】
【0007】
【
図1】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムを示す図である。
【
図2】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図3】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図4】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図5】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図6】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図7】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図8】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図9】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示す図である。
【
図10】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムの使用例を示す図である。
【
図11】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムの使用例をさらに示す図である。
【
図12】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムの使用例をさらに示す図である。
【
図13】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムの使用例をさらに示す図である。
【
図14】一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムの使用例をさらに示す図である。
【
図15】一実施形態に従うクロス-マイクロサービスクエリ処理を提供する方法を示す図である。
【発明を実施するための形態】
【0008】
(詳細な説明)
高速で変化するソフトウェア要求に対処するために、企業は、急速に発展および展開可能で、維持が容易で、かつ、高可用性に生成され得るソフトウェアアプリケーションを提供するマイクロサービスのような技術に益々関心を向けている。
【0009】
マイクロサービス指向のアーキテクチャーでは、各マイクロサービスは、各自のデータモデルを所持することや各自のデータを管理することを含めて、パブリックインターフェースのみを通じて外部の独立体にアクセス可能な内部のオペレーションを用いて比較的に独立して動作することができる。
【0010】
しかしながら、エンタープライズアプリケーションのような、相互作用したりデータ共有する複雑なソフトウェアアプリケーションと共に使用された場合、マイクロサービス同士の間の依存性を管理することが特に困難となる。たとえば1つのマイクロサービスは、適切に機能するために、1つ以上のマイクロサービスからデータを受け取る必要があるかもしれない。
【0011】
たとえば、販売志向のエンタープライズアプリケーションでは、セールスオーダーは第1のマイクロサービスによって管理されてもよく、そして製品は第2のマイクロサービスによって管理されてもよい。セールスオーダーのマイクロサービスは、その検証ロジックを適切に動作させるためにプロダクトデータを必要とするかもしれず、それにより、たとえば特定のベンダーによって供給される製品のためのセールスオーダーを取得するために、異なるマイクロサービスに渡るデータのためのクエリを結合することが必要となるかもしれない。
【0012】
上記の例では、異なるマイクロサービスによって所有される対応のデータオブジェクトはそれら独自の独立したデータベース内において管理されてもよいので、マイクロサービスアーキテクチャによって提供される利益を犠牲にすることなく、最適化された方法でそのようなクエリをどのように実行するかという問題に対してチャレンジングになり得る。
【0013】
一実施形態に従って、クロス-マイクロサービスクエリ処理を提供するシステムおよび方法がここに記載されている。そのシステムは、疎結合されているかもしれないが何らかの形で関連しているかもしれない、たとえばクエリを処理するために、マイクロサービスが相互に作用するか又は互いのデータへのアクセスを要求するという点で関連しているかもしれないマイクロサービスの使用をサポートするオブジェクトサービスフレームワークを提供する。各マイクロサービスは、独立して発展、展開、および、進化することが可能であり、パブリックAPIsとして定義され、かつ、そのフレームワークを通じて晒されるコントラクトまたはインターフェースを通して他のマイクロサービスと相互に作用する。
【0014】
一実施形態に従って、そのオブジェクトサービスフレームワークは、たとえば、異なるマイクロサービスのオブジェクトを結合するクエリを、そのデータベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、クロス-マイクロサービス層を提供するのに使用され得る。
【0015】
一実施形態に従って、記載されたアプローチは、マイクロサービスアーキテクチャによって提供される利益、たとえば、マイクロサービスは、高速に発展され、かつ、比較的独立して動作され得るという利益を保持し、一方で、利用可能なデータベース(たとえばSQL)最適化を利用する結合されたクエリ動作のような特徴に対するサポートを提供する。
【0016】
様々な実施形態では、たとえば、そこに記載されているシステム及び方法の様々な技術的特徴及び利点が含まれ得る。
【0017】
一実施形態に従って、オブジェクトサービスフレームワークは、発展および展開というマイクロサービスの仕事を簡易化するために、複数の関連したマイクロサービスを管理するのに使用され得る。各マイクロサービスオーナーは、その独自のオブジェクト、アプリケーションロジック、及び、データベースアーティファクトを定義する責任がある。通常のタスクは、たとえば、管理されたクラウドサービスとしての外部システムにアクセス可能なステートレスAPIsを提供する際に、オブジェクトサービスフレームワークによって提供され得る。
【0018】
一実施形態に従って、様々なマイクロサービスによって所有されるオブジェクトの画一的な管理は、開発者及びユーザにクラウド-ネイティブマインドを発達させるために使用され得る。各オブジェクトは、内部の実装、及び、パブリックコントラクト定義と関連付けられており、このことは、後方互換方法によって構成要素が維持されるのを促進する。
【0019】
一実施形態に従って、マイクロサービスオブジェクトのパブリックコントラクトは、一貫性のある方法で消費者に晒され得る。オブジェクトサービスフレームワークは、オブジェクトの定義を管理するので、様々な形態、たとえばオープンAPIまたはグラフQLスキーマとしての形態においてパブリックコントラクトを晒すことができる。そのオブジェクト定義は、発見及び文書化の目的のためにリポジトリとして役立ち、そして、オブジェクトカタログのようなツールによって利用され得る。
【0020】
一実施形態に従って、記載されたアプローチは、インフラストラクチャーレベルのマイクロサービスに境界を提供する。各マイクロサービスは、オブジェクトサービスフレームワークを通してデータベース及び他のマイクロサービスと相互に作用する。一方で、オブジェクトサービスフレームワークは、各オブジェクトがそのビジネスロジックを実行するように共通のAPIsを提供する。
【0021】
一実施形態に従って、記載されたアプローチによれば、複数のマイクロサービスによって単一のデータベースクラスターを利用することが可能になる。全ての相互作用が、オブジェクトサービスフレームワークを通じて実行され、各マイクロサービスの境界を確かなものにするので、複数のマイクロサービスは、保持及びバックアップ/修復がより容易で、オペレーションコストを低減し、且つ、存在するモノリスシステムからマイクロサービスアーキテクチャーへの移行を単純化する単一のデータベースクラスタ―を利用することが可能である。
【0022】
一実施形態に従って、記載されたアプローチは、クエリ最適化を自動的に実行するのに使用され得る。オブジェクトサービスフレームワークは、オブジェクト定義、及び、他のマイクロサービスや外側のシステムとの相互作用を管理するので、複数のマイクロサービスに作用する最適化を追加することができる。たとえば、異なるマイクロサービスのオブジェクトが含まれているが同じデータベースインスタンスを共有している結合クエリケースでは、オブジェクトサービスフレームワークは、どのデータベースオブジェクトが含まれているかを特定し、そして、結合されたクエリを単一のデータベースSQLクエリに変更することが可能であり、その結果、結合されたクエリはマイクロサービスオーナーにとって透過的な最適化された方法で役割を果たし得る。さらに、マイクロサービスは独自のデータベースインスタンスを所有し続けるので、その最適化を活用するためのオブジェクトコードをリライトする必要がなく、その代わりにインフラストラクチャーは、結合されたクエリを、異なる形になるように単純に変形するだろう。
[クロス-マイクロサービスクエリ]
上記のように、エンタープライズアプリケーションのような、相互作用したりデータ共有する複雑なソフトウェアアプリケーションと共に使用された場合、マイクロサービス同士の間の依存性を管理することが特に困難となる。たとえば1つのマイクロサービスは、適切に機能するために、1つ以上のマイクロサービスからデータを受け取る必要があるかもしれない。
【0023】
この困難への様々なアプローチは、データのレプリケーション及びデータのマッシュアップを含む。マイクロサービスはデータのレプリケーションを用いて他のマイクロサービスによってローカルで所有されているデータをレプリケーションし、その結果、そのような結合はより高性能なローカルデータベース結合に変化し得る。しかしながら、このアプローチでは、データをレプリケーションするメンテナンスコストを被り、レプリケーションされたデータに同期のずれが生じ得るためクエリの結果が正しくなくなり得る。
【0024】
複数の個別のクエリは、データのマッシュアップを用いて、含まれている各マイクロサービスに対して発行された可能性があるので、クエリの結果をデータベースの外側において結合するために、可能な後処理が必要とされる。しかしながら、各マイクロサービスから引き出されたそのデータセットがとても大きくなり得るので、マッシュアップ結合がとても非効率にもなり得る。
【0025】
一実施形態に従って、クロス-マイクロサービスクエリ処理を提供するシステムおよび方法が記載されている。そのシステムは、疎結合されるが関連しているマイクロサービスの使用をサポートするクラウドサービスとしてアクセス可能なオブジェクトサービスフレームワークを提供する。各マイクロサービスは、独立して展開されかつ進化し得るとともに、パブリックAPIsとして定義され、かつ、そのフレームワークを通じて晒されるコントラクトまたはインターフェースを通じた他のマイクロサービスとの相互作用のみを実行する。そのフレームワークは、たとえば、異なるマイクロサービスのオブジェクトを結合するクエリを、そのデータベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、クロス-マイクロサービス層を提供するのに使用され得る。
【0026】
図1は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムを示している。
【0027】
一実施形態に従って、
図1に示される構成及び処理、及び、様々な実施形態に関してここにさらに記載されていることは、コンピュータシステム又は他の種類の処理装置によって実行可能なソフトウェア又はプログラムコードとして提供され得る。
【0028】
たとえば、一実施形態に従って、ここに記載される構成及び処理は、クラウドコンピューティングシステム、又は他の適切にプログラムされたコンピュータシステムによって提供され得る。
【0029】
図1に示されるように、一実施形態に従って、クラウドコンピューティング環境100は、ハードウェア(たとえばプロセッサ、メモリ)と、ソフトウェアリソースとを備えるクラウドコンピューティングインフラストラクチャー102において動作することが可能であり、クラウドコンピューティングインフラストラクチャー102はさらに、たとえば、1つ以上のロードバランサーA106およびB108を通じて共用のクラウドインフラストラクチャーリソースへのアクセスを提供する、1つ以上のクラウドインターフェース104又は他のアプリケーションプログラムインターフェース(API)を備える。
【0030】
一実施形態に従って、可用性ドメイン131は、1つ以上のクラウドサービスインスタンス又はマイクロサービスへのアクセスを、含むか又は提供することができる。
【0031】
たとえば、一実施形態に従って、データの要求は、マイクロサービス122、132そのものによる処理のために、1つ以上の可用性ドメインA120、B130において受け取られる可能性がある。クラウドテナントA142およびB144には、テナントがそれらのクラウドリソースにアクセスすることが可能なクラウドインフラストラクチャー環境内におけるパーティションが設けられ得る。
【0032】
一実施形態に従って、たとえば、デバイスハードウェア162(たとえばプロセッサ、メモリ)を有するコンピューティングデバイス160、及び、グフィカルユーザインターフェース166のようなクライアントデバイスは、クラウドサービスの生成又はアップデートのために、たとえばワイドエリアネットワーク、ローカルエリアネットワーク、又はインターネットのようなネットワークを通じたクラウドコンピューティング環境との通信をユーザ168又は管理者が行うことを可能にする。
【0033】
一実施形態に従って、クラウドサービスとしてアクセス可能なオブジェクトサービスフレームワーク202は、疎結合されているが関連しているマイクロサービスの使用をサポートする。各マイクロサービス(たとえばマイクロサービスA210)は、マイクロサービス実装212を含めて、独立して展開され且つ進化することが可能であり、そして、マイクロサービスライフサイクルオペレーションに、たとえばデータベース204又はストレージサービスにおいてア-ティファクトを生成/アップデートすることを許可する1つ以上のAPIsを(たとえば、REST218及びgRPC216を通じて)晒すことが可能である。
【0034】
図2は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0035】
図2に示されるように、一実施形態に従って、マイクロサービス実装は、マイクロサービスのロジック又は機能性を提供する、1つ以上のマイクロサービスオブジェクトA1,A2、又は、(ロジック、ビジネス)オブジェクトを含み得る。
【0036】
図3および
図4は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0037】
図3および
図4に示されるように、一実施形態に従って、各マイクロサービス(たとえばマイクロサービスB220、N230)は、REST228及びgRPC226を通じて晒される独自のマイクロサービス実装222,232を有すること、及び、そのデータベースのアーティファクトにアクセスすることを含めて、同様に、独立して展開されかつ進化し得る。特定のマイクロサービスは、疎結合されているが何らかの方法で関連しているかもしれず、たとえば、(ロジック、ビジネス)オブジェクト-レベルリクエスト217、227又はクエリを処理するために、マイクロサービスが相互に作用するか又は互いのデータへのアクセス229、239を要求するという点で、関連しているかもしれない。
【0038】
図5は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0039】
図5に示されるように、一実施形態に従って、各マイクロサービスオブジェクトは、(a)内部実装定義213と、(b)パブリックコントラクト定義214とを提供するメタデータに関連付けられており、パブリックコントラクト定義は、外部システムによってアクセス可能となるマイクロサービスオブジェクトのプロパティと行動とを含む。各マイクロサービスに対して、実装定義は、プロパティを有するマイクロサービスオブジェクトと、たとえば、テーブル、コラム、及び、必要に応じて他の検証又は導出ビジネスロジックを含むデータベーステーブル/ビューとの間のマッピングを提供する。
【0040】
一実施形態に従って、各マイクロサービスのパブリックコントラクト定義によって定義されるパブリックプロパティ及び動作は、たとえばRESTおよびgRPCのようなパブリックAPIs及びプロトコルを通じて外部システムにアクセス可能にされる。
【0041】
図6は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0042】
図6に示されるように、一実施形態に従って、マイクロサービス及びそれらのオブジェクトと関連付けられたコレクティブビューは、クロスサービスビュー250をそのデータベースに入力(262、264)するのに使用される。この一例は、一実施形態に従う下記の例1に示されている。例1では、クロス-サービスビューは、オブジェクトレベルクエリを処理する際に使用される。
【0043】
図7は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0044】
図7に示されるように、一実施形態に従って、各マイクロサービスは、データベーススキーマ又はデータベースロールと関連付けられ、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限する。異なるマイクロサービスは、REST及びgRPCを通じてアクセス可能なビジネスオブジェクトAPIsを通して相互に作用してもよい。そのようなビジネスオブジェクトAPIsは、リモートコールレイテンシ及びシリアライザーション/デシリアライゼーションのコストなしに最適化を提供する。
【0045】
一実施形態に従って、クロスマイクロサービス層260が提供され、そこでは複数のマイクロサービスに渡って結合されるクエリに応答して、クロスマイクロサービス層は、クロス-サービスビューに基づくオブジェクト-レベルクエリを受け取り、且つ、リード/オンリースキーマ272を用いて、そのクエリを1つ以上のフィジカルデータベース(たとえばSQL)クエリ270に変換する。ネイティブデータベース(たとえばSQL)最適化は、それから、そのデータベースクエリを処理するのに活用され得る。
【0046】
一実施形態に従って、クロス-マイクロサービス層は、各オブジェクトのパブリックコントラクト、すなわち、オブジェクトが環境の外側からどのようにアクセスされ得るか、及び、各オブジェクトの内部の実装、たとえばどのテーブル及びコラムを使用するかなど、を含めて、オブジェクトサービスフレームワークによってサポートされるオブジェクトのカタログをメタデータを通じて管理する。
【0047】
さらに、一実施形態に従って、クロス-マイクロサービス層は、たとえばREST又はgRPCインターフェイスを介して、クライアントからのリクエストを受け取るとともに受け取ったリクエストをオブジェクト-レベルクエリからフィジカルデータベース(たとえばSQL)クエリに変換するのに適応したルーチンを提供する。
【0048】
たとえば、一実施形態に従って、最適なクエリパフォーマンスは、関係のあるマイクロサービスが同じデータベースインスタンスを共有している場合に、クロス-マイクロサービスが結合されたクエリを単一の/最適化されたデータベースSQLクエリに変換するインフラストラクチャーによって達成され得る。
【0049】
図8は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0050】
一実施形態に従って、マイクロサービス間の相互作用を管理するインフラストラクチャーを適用することにより、且つ、下層のデータベースを用いて、そのシステムは、複数のマイクロサービスにおいて同じデータベースクラスタを利用することを可能とし、同時に、マイクロサービスの分離が保証される。単一のデータベースクラスターを利用することにより、各マイクロサービスが独自のデータベースインスタンスを有することを強制されるかわりに、オペレーションコストが最小化される。
【0051】
図8に示されるように、一実施形態に従って、各データベースアーティファクトは、そのオーナーとして動作する単一の/特有のマイクロサービスと関連付けられる。異なるマイクロサービスは、単一のデータベースオブジェクトへのアクセスを共有しない。これは、所与のマイクロサービスが、異なるマイクロサービスによって所有されるデータベースアーティファアクトに直接的にアクセスすることが制限されることを意味する。
【0052】
たとえば、一実施形態に従って、マイクロサービスAは、どのデータベースアーティファクトがロールを通じて(マイクロサービスAによって)アクセス可能かを制限するデータベーススキーマ又はデータベースロール274と関連付けられていてもよい。
【0053】
図9は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムをさらに示している。
【0054】
たとえば、一実施形態に従って、マイクロサービスBは、どのデータベースアーティファクトがロールによって(マイクロサービスBによって)アクセス可能かを制限するデータベーススキーマ又はデータベースロール276と関連付けられていてもよい。
【0055】
上で説明したように、一実施形態に従って、クロス-マイクロサービス層が複数のマイクロサービスに渡って結合されるクエリに応答して使用される際に、クロス-マイクロサービス層は、クロス-サービスビューに基づくオブジェクト-レベルクエリを受け取ることが可能であり、そして、そのクエリを、1つ以上の、データに跨がるかさもなければ独立して各種マイクロサービスによって所有されるフィジカルデータベース(たとえばSQL)クエリに変換することが可能である。
【0056】
一実施形態に従って、そのシステムは、存在するコードを書き直す必要がなく、さらに、機能性やパフォーマンス、特に複数のマイクロサービスに関与する結合されたクエリを犠牲にすることなく、マイクロサービスに、そのデータベースストラテジーを変化させる柔軟性を与える。
[使用例]
図10-13は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供するシステムの使用例を示している。
【0057】
図10-13に示されるように、一実施形態に従って、各マイクロサービス(たとえばオーダーマイクロサービス310、プロダクトマイクロサービス32)は、REST318、328及びgRPC316、325を通じて晒される独自のマイクロサービス実装を所有すること、及び、データベースにおけるアーティファクトにアクセスすることを含めて同様に、独立して展開され且つ進化することが可能である。
【0058】
一実施形態に従うこの例においては、オブジェクト-レベルクエリは、たとえば、クロス-サービスビューを用いて、オーダーオブジェクトに対して作成され得る。
【0059】
【0060】
上で説明されているJSON例は、オーダーのトータルアマウントが1000を超えるか又は10を超えるプロダクトプライスでラインを有しているというオーダーレベルの条件で、オーダー及びラインを返すクエリを表している。
【0061】
一実施形態に従って、オブジェクトサービスフレームワークは、テーブル及びコラムマッピングを含むビジネスオブジェクト定義を維持しているので、オブジェクトサービスフレームワークは、そのようなクエリをたとえば1つ以上のフィジカルデータベースクエリに変換することが可能である。
【0062】
【0063】
一実施形態に従って、そのシステムは、たとえば、上で説明されたデータベースクエリを、JSONドキュメントを直接的に返す1つのクエリに変換するために、データベースクエリ最適化を適用することが可能である。
【0064】
【0065】
一実施形態に従って、1つのマイクロサービスのスキーマ/ロールは他のマイクロサービスのテーブル/ビューにアクセスすることができないので、グローバル読み取り専用スキーマ/ロールは、そのようなクエリを実行するのに使用される。オブジェクトサービスフレームワークは、異なるマイクロサービス間の結合が要求された時のみ、このグローバル読み取り専用スキーマ/ロールに自動的に切り替える。
【0066】
図14は、一実施形態に従ってクロス-マイクロサービスクエリ処理を提供するシステムの使用例をさらに示している。
【0067】
図14に示されるように、一実施形態に従って、そのシステムによって、必要に応じて利用可能なデータベースクエリ最適化を使用することを含めて、オブジェクト-レベルリクエスト又はクエリ(たとえば上の例1に示された例)を処理する際、及び、データベースクエリ336(たとえば上の例2および例3に示される例)を準備する際に、クロス-サービスビュー332を使用することが可能となる。
[クロス-マイクロサービスクエリ処理]
図15は、一実施形態に従うクロス-マイクロサービスクエリ処理を提供する方法を示している。
【0068】
図15に示されるように、一実施形態に従って、ステップ340において、各マイクロサービスオブジェクトは、(a)内部の実装定義、および(b)パブリックコントラクト定義を提供するメタデータと関連付けられており、パブリックコントラクト定義は、外部システムによってアクセス可能となるマイクロサービスオブジェクトのプロパティ及び動作を含む。
【0069】
ステップ342では、各マイクロサービスに対して、実装定義は、プロパティを有するマイクロサービスオブジェクトと、たとえば、テーブル、コラム、及び、必要に応じて他の検証又は導出ビジネスロジックを含むデータベーステーブル/ビューとの間のマッピングを提供する。
【0070】
ステップ344では、マイクロサービス及びそのオブジェクトと関連付けられているコレクティブビューは、クロス-サービスビューをデータベースに入力するのに使用される。
【0071】
ステップ346では、各マイクロサービスは、データベーススキーマ又はデータベースロールと関連付けられており、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限する。
【0072】
ステップ348では、各マイクロサービスのパブリックコントラクト定義によって定義されるパブリックプロパティ及び動作は、たとえばRESTおよびgRPCのようなパブリックAPIs及びプロトコルを通じて外部システムにアクセス可能にされる。
【0073】
ステップ350では、クロスマイクロサービス層が提供され、複数のマイクロサービスに渡って結合されるクエリに応答して、クロスマイクロサービス層は、クロス-サービスビューに基づくオブジェクト-レベルクエリを受け取り、且つ、そのクエリを1つ以上のフィジカルデータベース(たとえばSQL)クエリに変換する。ネイティブデータベースSQL最適化はその結果、希望されたクエリ最適化を達成するように活用され得る。
【0074】
様々な実施形態に従って、ここでの教示は、1つ以上の従来の汎用の、又は、特化されたコンピュータ、コンピューティングデバイス、マシーン、又は、1つ以上のプロセッサを含んだマイクロプロセッサ、メモリ、及び/又は本開示の教示に従ってプログラムされたコンピュータ読み取り可能ストレージメディアを用いて都合よく実現されてもよい。ソフトウェア分野における当業者にとって明らかなように、適切なソフトウェアコーディングは、技術力のあるプログラマーによって本開示の教示に基づき容易に準備され得る。
【0075】
いくつかの実施形態では、ここでの教示は、本教示のいずれかの処理を実行するようにコンピュータをプログラムするのに使用され得る記憶された指令を有する非一時的なコンピュータ読み取り可能ストレージメディアム(メディア)であるコンピュータプログラムプロダクトを含み得る。そのようなストレージミディアムの例は、以下に限定されないが、ハードディスクドライブ、ハードディスク、ハードドライブ、固定ディスク、又は、他の電気機械的なデータストレージデバイス、フロッピーディスク、光学ディスク、DVD、CD-ROM、マイクロドライブ、及び、光磁気ディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気的又は光学的カード、ナノシステム、又は他のタイプのストレージメディア、又は、指令及び/又はデータの非一時的ストレージにとって適したデバイスを含み得る。
【0076】
前述の記載は、図面および説明のために提供されている。その記載は、すべてを網羅することを意図されたものでなく、又は、保護の範囲を開示された形そのものに制限するものではない。多くの修正及び変形が当業者にとって容易であるだろう。
【0077】
その実施形態は、本教示の原理及びそれらの実用的な適用を最も良く説明するために選択及び説明された。それにより、その当業者が様々な実施形態を理解できるようになり、特定の使用にとって適した様々な修正が熟考されるようになる。以下のクレーム及びそれらと均等のものによって範囲が定義されることが意図される。
【手続補正書】
【提出日】2024-07-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
クロス-マイクロサービスクエリ処理を提供するシステムであって、
クラウドコンピューティング環境と、前記クラウドコンピューティング環境において動作する複数のマイクロサービスとを提供する1つ以上のプロセッサを含むコンピュータと、
オブジェクトサービスフレームワークと、を備え、
各マイクロサービスオブジェクトは、内部の実装定義及びパブリックコントラクト定義を提供するメタデータと関連付けられており、
各マイクロサービスのために、前記実装定義は、プロパティを有したマイクロサービスオブジェクトと、データベーステーブル/ビューとの間のマッピングを提供し、
前記複数のマイクロサービスおよびそれらのオブジェクトと関連付けられたコレクティブビューは、クロス-サービスビュー
をデータベースに入力するのに使用され、
各マイクロサービスは、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限するデータベーススキーマ又はデータベースロールと関連付けられており、
前記複数のマイクロサービスに渡って結合されるクエリに応答して、前記クロス-サービスビューに基づくクエリを受け取り、且つ、前記クエリを1つ以上のデータベースクエリに変換する、クロス-マイクロサービス層が提供される、システム。
【請求項2】
前記オブジェクトサービスフレームワーク及び前記クロス-マイクロサービス層は、異なるマイクロサービスのオブジェクトを結合するクエリを、前記データベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、請求項1に記載のシステム。
【請求項3】
前記オブジェクトサービスフレームワークは、疎結合されているが関連しているマイクロサービスの使用をサポ-トするクラウドサービスとしてアクセス可能である、請求項1または
2に記載のシステム。
【請求項4】
前記クロス-サービスビューに基づく前記オブジェクト-レベルクエリは、クエリを、前記データに渡るかさもなければ様々な前記マイクロサービスによって独立して所有される1つ以上のデータベースSQLクエリに変換する、請求項1
~3のいずれか1項に記載のシステム。
【請求項5】
クロス-マイクロサービスクエリ処理を提供する方法であって、
1つ以上のプロセッサを含むコンピュータにおいて、クラウドコンピューティング環境と、前記クラウドコンピューティング環境において動作する複数のマイクロサービスとを提供することと、
各マイクロサービスオブジェクトを、内部の実装定義及びパブリックコントラクト定義を提供するメタデータと関連付けることとを備え、各マイクロサービスのために、前記実装定義が、プロパティを有する前記マイクロサービスオブジェクトとデータベーステーブル/ビューとの間のマッピングを提供しており、
クロス-サービスビュー
をデータベースに入力するために前記複数のマイクロサービスと関連付けられたコレクティブビューを使用することをさらに備え、各マイクロサービスは、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限するデータベーススキーマ又はデータベースロールと関連付けられており、
クロス-マイクロサービス層を提供することをさらに備え、前記クロス-マイクロサービス層は、前記複数のマイクロサービスに渡って結合されるクエリに応答して、前記クロス-サービスビューに基づくクエリを受け取り、且つ、前記クエリを1つ以上のデータベースクエリに変換する、方法。
【請求項6】
オブジェクトサービスフレームワーク及び前記クロス-マイクロサービス層は、異なるマイクロサービスのオブジェクトを結合するクエリを、前記データベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、請求項5に記載の方法。
【請求項7】
前記オブジェクトサービスフレームワークは、疎結合されているが関連しているマイクロサービスの使用をサポ-トするクラウドサービスとしてアクセス可能である、請求項5
または6に記載の方法。
【請求項8】
前記クロス-サービスビューに基づく前記オブジェクト-レベルクエリは、クエリを、前記データに渡るかさもなければ様々な前記マイクロサービスによって独立して所有される1つ以上のデータベースSQLクエリに変換する、請求項5
~7のいずれか1項に記載の方法。
【請求項9】
1つ以上のプロセッサを含むコンピュータ
に方法を実行させる
プログラムであって、前記方法は、
前記コンピュータにおいて、クラウドコンピューティング環境、及び、そこで動作する複数のマイクロサービスを提供することと、
各マイクロサービスオブジェクトを、内部の実装定義及びパブリックコントラクト定義を提供するメタデータと関連付けることとを備え、各マイクロサービスのために、前記実装定義が、プロパティを有する前記マイクロサービスオブジェクトとデータベーステーブル/ビューとの間のマッピングを提供しており、
クロス-サービスビュー
をデータベースに入力するために前記複数のマイクロサービスと関連付けられたコレクティブビューを使用することをさらに備え、各マイクロサービスは、どのデータベースアーティファクトがロールを通じてアクセス可能かを制限するデータベーススキーマ又はデータベースロールと関連付けられており、
クロス-マイクロサービス層を提供することをさらに備え、前記クロス-マイクロサービス層は、前記複数のマイクロサービスに渡って結合されるクエリに応答して、前記クロス-サービスビューに基づくクエリを受け取り、且つ、前記クエリを1つ以上のデータベースクエリに変換する、
プログラム。
【請求項10】
オブジェクトサービスフレームワーク及び前記クロス-マイクロサービス層は、異なるマイクロサービスのオブジェクトを結合するクエリを、前記データベースでの使用に最適化された単一のデータベースクエリに自動的に変換する、請求項9に記載の
プログラム。
【請求項11】
前記オブジェクトサービスフレームワークは、疎結合されているが関連しているマイクロサービスの使用をサポ-トするクラウドサービスとしてアクセス可能である、請求項9
または10に記載の
プログラム。
【請求項12】
前記クロス-サービスビューに基づく前記オブジェクト-レベルクエリは、クエリを、前記データに渡るかさもなければ様々な前記マイクロサービスによって独立して所有される1つ以上のデータベースSQLクエリに変換する、請求項9
~11のいずれか1項に記載の
プログラム。
【国際調査報告】