特許第6046523号(P6046523)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許6046523インメモリ型分散データベース、データ分散方法及びプログラム
<>
  • 特許6046523-インメモリ型分散データベース、データ分散方法及びプログラム 図000002
  • 特許6046523-インメモリ型分散データベース、データ分散方法及びプログラム 図000003
  • 特許6046523-インメモリ型分散データベース、データ分散方法及びプログラム 図000004
  • 特許6046523-インメモリ型分散データベース、データ分散方法及びプログラム 図000005
  • 特許6046523-インメモリ型分散データベース、データ分散方法及びプログラム 図000006
  • 特許6046523-インメモリ型分散データベース、データ分散方法及びプログラム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6046523
(24)【登録日】2016年11月25日
(45)【発行日】2016年12月14日
(54)【発明の名称】インメモリ型分散データベース、データ分散方法及びプログラム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20161206BHJP
   G06F 13/10 20060101ALI20161206BHJP
【FI】
   G06F12/00 545A
   G06F13/10 340A
【請求項の数】8
【全頁数】11
(21)【出願番号】特願2013-44074(P2013-44074)
(22)【出願日】2013年3月6日
(65)【公開番号】特開2014-174597(P2014-174597A)
(43)【公開日】2014年9月22日
【審査請求日】2015年8月27日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100092772
【弁理士】
【氏名又は名称】阪本 清孝
(74)【代理人】
【識別番号】100119688
【弁理士】
【氏名又は名称】田邉 壽二
(72)【発明者】
【氏名】西谷 明彦
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 国際公開第2012/017529(WO,A1)
【文献】 特開2012−190377(JP,A)
【文献】 特開2003−308233(JP,A)
【文献】 特開2011−186810(JP,A)
【文献】 特開2004−86721(JP,A)
【文献】 特開2006−79389(JP,A)
【文献】 特開2003−140838(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
データを複数のノードに分散して記憶するに際し、前記各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、
ーザアプリケーションからの入出力命令を前記ノードに転送する場合に前記リソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータと、を有するインメモリ型分散データベースにおいて、
前記各ノードは、前記分散DBルータからの入出力命令を受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、前記入出力命令を他のノードに転送する転送手段を備えたことを特徴とするインメモリ型分散データベース。
【請求項2】
前記転送手段は、前記閾値を超える空きメモリ容量があるノードを選択する転送先決定手段を備える請求項1に記載のインメモリ型分散データベース。
【請求項3】
前記分散DBルータ内にキャッシュを構成し、ノードのメモリ使用量超過が解消されるまで入出力命令を前記キャッシュにて保持する請求項1に記載のインメモリ型分散データベース。
【請求項4】
ドキュメントの属性と重視するか否かの対応関係は運用者が予め定め、
前記分散DBルータ内に構成されたキャッシュは、前記ユーザアプリケーションからの重要度の属性を重視するドキュメントの入力命令に対して
信頼性の高いサーバ機器で構成されたノードへの書き込みを行う
ことで前記重視に応じた処理応答を行う請求項3に記載のインメモリ型分散データベース。
【請求項5】
ドキュメントの属性と重視するか否かの対応関係は運用者が予め定め、
前記分散DBルータ内に構成されたキャッシュは、前記ユーザアプリケーションからの応答性能の属性を重視するドキュメントの入力命令に対して
ノードへの書き込みが実施される前に前記ユーザアプリケーションへのレスポンスを返す処理を行う
ことで前記重視に応じた処理応答を行う請求項3に記載のインメモリ型分散データベース。
【請求項6】
ドキュメントの属性と重視するか否かの対応関係は運用者が予め定め、
前記分散DBルータ内に構成されたキャッシュは、前記ユーザアプリケーションからの優先度の属性を重視するドキュメントの入力命令に対して
処理待ちキューにおいて処理順番を優先させる処理を行う
ことで前記重視に応じた処理応答を行う請求項3に記載のインメモリ型分散データベース。
【請求項7】
データを複数のノードに分散して記憶するに際し、前記各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、
ーザアプリケーションからの入出力命令を前記ノードに転送する場合に前記リソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータと、を有するインメモリ型分散データベースのデータ分散方法において、
前記分散DBルータからの入出力命令を前記各ノードが受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、前記入出力命令を他のノードに転送する手順を備えたことを特徴とするデータ分散方法。
【請求項8】
データを複数のノードに分散して記憶するに際し、前記各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、
ユーザアプリケーションからの入出力命令を前記ノードに転送する場合に前記リソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータと、を有するインメモリ型分散データベースのデータ分散プログラムにおいて、
前記分散DBルータからの入出力命令を前記各ノードが受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、前記入出力命令を他のノードに転送する手順をコンピュータに実行させるデータ分散プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを複数のノードに分散して記憶して管理するインメモリ型分散データベースに関し、特に、各ノードに対するデータの負荷分散を工夫したインメモリ型分散データベース、データ分散方法及びプログラムに関する。
【背景技術】
【0002】
近年の情報システムにおいては、取り扱うデータが激増することにより、サーバ1台で処理することが困難となっている。そのため、大容量データを保存し、高速に処理するために、複数のノードに対してデータを分散させて管理するインメモリ型分散データベースが普及してきている。
インメモリ型分散データベース(例えば、MongoDB)は、ハードディスクでデータを管理するデータベースシステムに対比して高速なデータの入出力を実現するため、主にメインメモリ上でデータを管理するよう設計されたものである。
すなわち、インメモリ型分散データベースは、データを複数のノードに分散して記憶するに際し、各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、各ノードとユーザアプリケーションとの間に位置しユーザアプリケーションからの入出力命令をノードに転送する場合にリソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータを有して構成されている。
【0003】
インメモリ型分散データベースを使用した管理制御システムでは、例えば特許文献1及び特許文献2に記載されるように、各ノードのリソース状況を監視し、リソースに対するアクションの実行の可否を判断する手法が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2012−089109号公報
【特許文献2】特許第4811830号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述したインメモリ型データベースによれば、データを書き込む先のノードのメモリに空きが無い場合には、ハードディスクにデータが書き込まれるので、例えば高負荷なデータの入力命令によりノードのメモリから書込みデータがオーバーフローしてディスクI/Oが発生した場合には、応答性能が極端に劣化するという課題が存在した。
【0006】
本発明は上記実情に鑑みて提案されたもので、データを複数のノードに分散して記憶して管理するシステムにおいて、応答性能が極端に劣化する状況を回避可能となるようノードに対するデータの負荷分散を行う機能を備えたインメモリ型分散データベースを提供することを目的としている。
【課題を解決するための手段】
【0007】
上記目的を達成するため本発明は、データを複数のノードに分散して記憶して管理する場合に、各ノードのメモリの利用状況を一元的に管理するリソース監視サーバからの情報のみならず、必要に応じてノード間転送を可能とした構成に特徴を有する。
【0008】
すなわち、請求項1の発明は、データを複数のノードに分散して記憶するに際し、前記各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、ユーザアプリケーションからの入出力命令を前記ノードに転送する場合に前記リソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータと、を有するインメモリ型分散データベースにおいて、次の構成を含むことを特徴としている。
前記各ノードは、前記分散DBルータからの入出力命令を受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、前記入出力命令を他のノードに転送する転送手段を備える。
【0009】
請求項2の発明は、請求項1のインメモリ型分散データベースにおいて、前記転送手段は、前記閾値を超える空きメモリ容量があるノードを選択する転送先決定手段を備えることを特徴としている。
【0010】
請求項3の発明は、請求項1のインメモリ型分散データベースにおいて、前記分散DBルータ内にキャッシュを構成し、ノードのメモリ使用量超過が解消されるまで入出力命令を前記キャッシュにて保持することを特徴としている。
【0011】
請求項4の発明は、請求項3のインメモリ型分散データベースにおいて、
ドキュメントの属性と重視するか否かの対応関係は運用者が予め定め、
前記分散DBルータ内に構成されたキャッシュは、前記ユーザアプリケーションからの重要度の属性を重視するドキュメントの入力命令に対して
信頼性の高いサーバ機器で構成されたノードへの書き込みを行う
ことで前記重視に応じた処理応答を行うことを特徴としている。
請求項5の発明は、請求項3のインメモリ型分散データベースにおいて、
ドキュメントの属性と重視するか否かの対応関係は運用者が予め定め、
前記分散DBルータ内に構成されたキャッシュは、前記ユーザアプリケーションからの応答性能の属性を重視するドキュメントの入力命令に対して、
ノードへの書き込みが実施される前に前記ユーザアプリケーションへのレスポンスを返す処理を行う
ことで前記重視に応じた処理応答を行うことを特徴としている。
請求項6の発明は、請求項3のインメモリ型分散データベースにおいて、
ドキュメントの属性と重視するか否かの対応関係は運用者が予め定め、
前記分散DBルータ内に構成されたキャッシュは、前記ユーザアプリケーションからの応答性能の属性を重視するドキュメントの入力命令に対して、
処理待ちキューにおいて処理順番を優先させる処理を行う
ことで前記重視に応じた処理応答を行うことを特徴としている。
【0012】
請求項7の発明は、データを複数のノードに分散して記憶するに際し、前記各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、ユーザアプリケーションからの入出力命令を前記ノードに転送する場合に前記リソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータと、を有するインメモリ型分散データベースのデータ分散方法において、
前記分散DBルータからの入出力命令を前記各ノードが受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、前記入出力命令を他のノードに転送する手順を備えたことを特徴としている。
【0013】
請求項8の発明は、データを複数のノードに分散して記憶するに際し、前記各ノードのメモリの利用状況を一元的に管理するリソース監視サーバと、
ユーザアプリケーションからの入出力命令を前記ノードに転送する場合に前記リソース監視サーバの情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する分散DBルータと、を有するインメモリ型分散データベースのデータ分散プログラムにおいて、
前記分散DBルータからの入出力命令を前記各ノードが受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、前記入出力命令を他のノードに転送する手順をコンピュータに実行させることを特徴としている。
【発明の効果】
【0014】
本発明によれば、各ノードに転送手段を設け、ユーザアプリケーションからの入出力命令を他のノードに転送可能とすることにより、ノードのメモリから書込みデータがオーバーフローすることを防止でき、ディスクI/Oの発生による応答性能が極端に劣化するという現象を回避できる。
また、分散DBルータ内のキャッシュで入出力命令を保持することにより、データごとに、信頼性、応答性能、優先度等のレベルに応じた取り扱いが可能となる。
【図面の簡単な説明】
【0015】
図1】本発明のインメモリ型分散データベースの全体構成を示すモデル図である。
図2】インメモリ型分散データベースの分散DBルータがデータ転送先を選定する場合の手順を示すフローチャート図である。
図3】インメモリ型分散データベースのノードがノード間データ転送を行う場合の手順を示すフローチャート図である。
図4】ノード間データ転送を行う場合の転送先決定処理の手順を示すフローチャート図である。
図5】インメモリ型分散データベースの分散DBルータがデータ転送先を選定する場合のタイミングチャート図である。
図6】インメモリ型分散データベースの分散DBルータがキャッシュしたデータの転送先を選定する場合のタイミングチャート図である。
【発明を実施するための形態】
【0016】
本発明のインメモリ型分散データベースの実施形態の一例について、図面を参照しながら説明する。
本発明のインメモリ型分散データベースは、ユーザアプリケーション1と、ユーザアプリケーション1からのデータを分散させて管理する複数のノード2と、各ノード2のメモリの利用状況を一元的に管理するリソース監視サーバ3と、ユーザアプリケーション1からの入出力命令を各ノード2に転送する分散DBルータ4とにより構築されている。
【0017】
ユーザアプリケーション1は、例えばユーザからのアクセスに対して、ドキュメント(ノードのデータベースに入力するデータの単位)の生成時に分散DBルータ4を介してデータを各ノード2へ分散させて管理する。ドキュメントには、重要度、応答性能、優先度等の属性データが付与され、この属性データに基づいて分散DBルータ4が処理応答を行うようになっている。例えば、分散DBルータ4は、重要度の高い属性を持つドキュメントについては信頼性の高いサーバ機器で構成されたノード2に書き込み、その処理が終了するまで待つ。「信頼性の高いサーバ機器」とは、ディスクの信頼性(MTBF)等の情報から、予め運用者により定義される。
【0018】
各ノード2、リソース監視サーバ3及び分散DBルータ4は、オペレーティングシステム(OS)を含む基本プログラムやメモリ、プログラムを実行するCPU等コンピュータが有する主要な構成を備え、データ分散プログラムがインストールされることでデータ分散方法を備えたシステムとしてのインメモリ型分散データベースが構築されている。
【0019】
また、分散DBルータ4は、通常はノード2への書き込み完了後にユーザアプリケーション1へ応答を返すが、応答性能の高い属性を持つドキュメントについては、ノード2への書き込みが実施される前(分散DBルータ4内のキャッシュ4aへ保存後)にレスポンスを返す。これにより、応答性能が向上する。また、分散DBルータ4は、優先度の高い属性を持つドキュメントについては、処理待ちのキュー(処理待ちのドキュメントがスタックされているバッファ)において処理順番を優先させる。加えて、ユーザアプリケーション1からの要求は分散DBルータ4を介されるが、分散DBルータ4にキャッシュされているドキュメントと同じデータへのアクセスがユーザアプリケーション1から要求された場合、対象ドキュメントは分散DBルータ4内のキャッシュ4aから取得される。
【0020】
各ノード2は、コンピュータが有する主要な構成を備えた一般的なサーバで形成され、メモリ2aと、データベース2bと、転送手段2cを備えている。この転送手段2cは、分散DBルータ4からの入出力命令を受信した時点で、書き込むデータに対する空きメモリ容量が指定された閾値以下の場合は、入出力命令を他のノード2に転送する。
また、転送手段2cは、閾値を超える空きメモリ容量を有するノード2を選択する転送先決定手段を備えている。この転送先決定手段は、各ノード2にリソース問合せを順次行い、応答を受信することでメモリ空きが有る他のノード2を選択する。これにより、ノード2が分散DBルータ4からの入出力命令を受信した際、当該ノード2において、書き込むデータに対する空きメモリ容量が、運用者が指定した閾値以下である場合は、選択された他のノード2(リソースに空きがあるノード)に入出力命令を転送する。
各ノード2に存在するデータベース2bは、そのノード2に渡ってきたドキュメントをハードディスクに保管するためのものである。すなわち、オンメモリに存在するドキュメントを非同期にハードディスク上に保管することが行われる。これにより、仮にノード2の電源がOFFになりメモリ2a上のデータが消えたとしても、このデータベース2bからメモリ2a上にデータを復旧させることができる。
【0021】
リソース監視サーバ3は、分散DBルータ4及び各ノード2との間でデータの送受信が行われることで、データを複数のノード2に分散して記憶するに際し、各ノード2のメモリ2aの利用状況を一元的に管理する。すなわち、リソース監視サーバ3は、定期的な監視トラフィックを行うことで、各ノード2のリソース使用量についてのリソース監視(一元管理)を行うとともに、分散DBルータ4からの要求に応じてリソース情報を送信する。
各ノード2におけるメモリ2aの使用量のチェックは、ノード側から自発的に通知する方法でも良い。この場合、リソース監視サーバ3における定期的な監視トラフィックを削減することができる。
また、リソース監視サーバ3は、いずれかのノード2のメモリの利用状況が、運用者が指定した閾値を超えた場合には、運用者にアラームを通知する。
【0022】
分散DBルータ4は、各ノード2とユーザアプリケーション1との間に位置し、ユーザアプリケーション1からの入出力命令をノード2に転送する場合に、リソース監視サーバ3の情報を参照し、書き込むデータに対する空きメモリ容量が少ないノードを避けて命令を転送する。また、分散DBルータ4は、内部にキャッシュ4aを構成し、ノード2のメモリ使用量超過が解消されるまで入出力命令をキャッシュ4aにて保持するようになっている(分散DBルータ4内のキャッシュ4aを一時的な共有メモリとして利用する)。
【0023】
また、分散DBルータ4内に構成されたキャッシュ4aにより、ユーザアプリケーション1からの応答性能重視のドキュメントの入力命令に対して処理応答を行うようになっている。
また、書き込むドキュメントを分散DBルータ4にてキューイングし、優先度の高い属性を持つドキュメントは優先的に処理することが行われる。
【0024】
次に、上述したインメモリ型分散データベースを使用してデータを管理する手順について、図2図6を参照して説明する。
先ず、分散DBルータ4によりデータ転送先のノードを選定する場合の処理手順について説明する(図2)。
分散DBルータ4がユーザアプリケーション1から書込みデータを受信した場合(ステップ11)、リソース監視サーバ3に対してリソース問合せ発行を行い、リソース監視サーバ3からの応答を受信する(ステップ12)。リソース監視サーバ3では、定期的に各ノード2のメモリ2aの利用状況を一元的に管理しているので、「空きリソース有」のノード2を把握することができる。
リソース監視サーバ3からの情報が「空きリソース有」の場合(ステップ13)、空きリソース有のノード2に対して書込みデータの送信が行われる(ステップ14)。
【0025】
リソース監視サーバ3からの情報が「空きリソース無」の場合(ステップ13)、書込みデータを分散DBルータ4のキャッシュ4aに蓄積するとともに、その旨をユーザアプリケーション1へ応答する(ステップ15)。
そして時間を置いて、ステップ12及びステップ13と同様のリソース問合せ発行及び応答受信(ステップ16)及び空きリソースの有無の判断(ステップ17)を繰り返して行い、「空きリソース有」が存在した場合(ステップ17)、「空きリソース有」のノード2に対して書込みデータの送信を行う(ステップ14)。
【0026】
次に、ステップ14の分散DBルータ4から「空きリソース有」のノード2に対して書込みデータの送信が行われ以降の当該ノード2での処理手順について、図3を参照して説明する。
ノード2が、分散DBルータ4からの書込みデータを受信すると(ステップ21)、自らのメモリ2aの空きの有無のチェックを行い(ステップ22)、空きメモリの有無を判断する(ステップ23)。
空きメモリ有の場合、ノード2のメモリ2aに対してデータ書込みが行われる(ステップ24)。
【0027】
空きメモリ無しの場合、リソース監視サーバ3への通知を行い(ステップ25)、リソース問合せ発行を行う(ステップ26)。分散DBルータ4からは、「空きリソース有」のノード2に対して書込みデータの送信が行われるので、ノード2の空きメモリは通常「有り」の状態であることが多いが、リソース監視サーバ3へ各ノード2からリソース情報が報告された時期によっては、その後の処理状況により、「空きリソース有」とされたノード2のメモリ2aの空きがなくなるような場合も考えられる。
【0028】
ノード2では、リソース問合せ応答を受信し、転送先決定処理が行われる(ステップ27)。
すなわち、図4及び図5に示すように、分散DBルータ4から「空きリソース有」のノード2(ノードA)に対して書込みデータの送信51が行われ、リソース問合せ応答受信及び転送先決定処理が開始された場合(ステップ31)、各ノード2(ノードB,C)に対して順次リソースチェック52が行われ、各ノード2(ノードB,C,…)からは順次リソースチェック応答53を受信する(図5)。
転送先を決定するノード2(ノードA)では、各ノード2からの応答を受けるための応答時間が経過しているかどうかを判断する(ステップ32)。
応答時間経過前であれば、リソース問合せ応答を受信し(ステップ33)、リソース問合せ応答があったメモリ空き有(ステップ34)のノード2(ノードC)を転送先として決定する。
【0029】
転送先ノードが決定された場合は(ステップ28)、転送先ノード(ノードC)へ書込みデータの転送54が行われ(ステップ29)、分散DBルータ4へ書込み応答55が行われる(ステップ30)。
メモリ空き有のノードでない場合は(ステップ34)、リソース監視サーバ3への通知を行い(ステップ35)、応答時間経過が経過するまで、リソース問合せ応答を受信し(ステップ33)、メモリ空き有(ステップ34)のノードを転送先として決定する作業が繰り返される。
【0030】
ステップ32で応答時間経過が経過した場合は、転送先決定処理を終了する。
また、転送先ノードが無い場合は(ステップ28)は、転送先決定を行うノード2にデータ書込みが行われる(ステップ24)。すなわち、ノード2のあるノードから他のノードにドキュメントを転送しようとした場合、転送先も無い(他のノードもメモリの空きが無い)場合は、しかたなくノード2のハードディスクにデータを書込むという手段が取られる。
【0031】
次に、図2において、ノード2のメモリ2aに空きがない時に(ステップ13)、書込みデータを分散DBルータ4のキャッシュに蓄積する場合において、応答性能重視のデータに関する処理について図6を参照して説明する。
ユーザアプリケーション1からの書込みデータの送信61を分散DBルータ4が受信し、リソース監視サーバ3に対してリソース問合せ発行62を行い、リソース監視サーバ3から空きリソース無し(ノードのメモリに空きが無い)とのリソース応答63を受信した場合、書込みデータを分散DBルータ4内のキャッシュ4aに蓄積し、リソース監視サーバ3に対してはキャッシュ処理通知64を行い、アプリケーション1へは書込み応答65を行う。
そして、リソース管理サーバ3とノード2との定期的な応答処理後に、ステップ16及びステップ17で空きリソースが見つかった場合、リソース管理サーバ3は分散DBルータ4にリソース空き通知66を行い、これを受けた分散DBルータ4がキャッシュ4aに蓄積されている書込みデータをノードへ転送67する。
【0032】
上述したインメモリ型分散データベースによれば、各ノード2に転送手段2cを設け、リソース監視サーバ3からの情報により選定したノード2の空きメモリが少ないような場合においても、選定したノード2がユーザアプリケーション1からの入出力命令を他のノード2に転送(ノード間データ転送)可能とすることができる。その結果、ノード2のメモリ2aから書込みデータがオーバーフローすることをより確実に防止でき、ディスクI/Oの発生による応答性能が極端に劣化するという現象を回避することができる。
また、分散DBルータ4内にキャッシュ4aを構成し、キャッシュ4aで入出力命令を保持制御することにより、データごとに、信頼性、応答性能、優先度等のレベルに応じた応答処理を行うことが可能となる。
【符号の説明】
【0033】
1…ユーザアプリケーション、 2…ノード、 2a…メモリ、 2c…転送手段、 3…リソース監視サーバ、 4…分散DBルータ 4a…キャッシュ。
図1
図2
図3
図4
図5
図6