JP6816072B2 - 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム - Google Patents

分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム Download PDF

Info

Publication number
JP6816072B2
JP6816072B2 JP2018157983A JP2018157983A JP6816072B2 JP 6816072 B2 JP6816072 B2 JP 6816072B2 JP 2018157983 A JP2018157983 A JP 2018157983A JP 2018157983 A JP2018157983 A JP 2018157983A JP 6816072 B2 JP6816072 B2 JP 6816072B2
Authority
JP
Japan
Prior art keywords
node
storage
storage device
data
computer
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.)
Active
Application number
JP2018157983A
Other languages
English (en)
Other versions
JP2020034961A (ja
Inventor
水野 潤
潤 水野
貴志 爲重
貴志 爲重
聡一 高重
聡一 高重
晋広 牧
晋広 牧
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018157983A priority Critical patent/JP6816072B2/ja
Priority to US16/288,490 priority patent/US11204941B2/en
Publication of JP2020034961A publication Critical patent/JP2020034961A/ja
Application granted granted Critical
Publication of JP6816072B2 publication Critical patent/JP6816072B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0853Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
    • H04L41/0856Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information by backing up or archiving configuration information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mathematical Physics (AREA)

Description

本発明は、複数のノード計算機によって構成される分散データベースシステムを管理する技術に関する。
SoE(System of Engagement)市場では、SoR(System of Record)市場に比べてコスト意識が高く、高可用で高性能なだけでなく、低コストなシステムが求められる。
ITシステムを構成するソフトウェアのうち、多種多様なデータを保持するためにデータベース管理ソフトが用いられる。SoE向けのシステムでは、データ量の増減が予測困難なため、スケールアウトが容易な分散データベースが使われる。
分散データベースは、複数のノード計算機(ノードともいう)でクラスタを構成し、Write(ライト)要求が発生した場合には、複数のノードで同一のデータ(レプリカ)を保持することで可用性を担保する。
一方、各ノードの応答性能は、データを保持するI/Oデバイス(SSD(Solid State Drive)や、HDD(Hard Disk Drive)等の記憶装置)の性能に依存する。そのため、分散データベースの応答性能を高めるには、各ノードのI/Oデバイスを、例えばSSDといった高性能なものにする必要があった。高性能なI/Oデバイスは、一般的に高価であり、高性能な分散データベースを低コストで構築することは難しい。
分散データベースを低コストで構築するため、分散データベースを構成する全てのノードでSSDを使用するのではなく、一部のノードで安価なHDDを使用することが行われている。
例えば、特許文献1には、マスタスレーブ型の分散データベースにおいて、スレーブのネットワークにデータが到達した時点でデータ複製成功と判断してクライアントへ書き込み完了を通知する技術が開示されている。
このようなマスタスレーブ型の分散データベースでは、最初にマスタノードにレプリカを作成し、次にスレーブノードにレプリカを作成する。そのため、特許文献1に開示された技術を用いれば、マスタノードにSSDを使用し、スレーブノードにHDDを使用することで、分散データベースの応答性能を高性能にすることができ、また、一部のノードでHDDを使うことで、全てのノードでSSDを使用する場合に比べて、低コスト化を実現することができる。
国際公開第2013/046352号
例えば、マスタスレーブ型の分散データベースは、マスタノードが単一障害点となり、可用性に問題がある。これを回避するものとして、P2P(Peer to Peer)型の分散データベースが存在する。P2P型の分散データベースは、全てのノードが同一の機能を持ち、複数のノードで同一のデータを保持することで可用性を担保する。特定のノードが特別な役割を持たないため、ノード障害が発生しても他のノードが代役をでき、サービスを継続できる。
しかしながら、P2P型の分散データベースでは、最初のレプリカを作成するノードは動的にランダムに選択されるため、SSDを使用するノードと、HDDを使用するノードとが混在している場合、特許文献1に開示された技術を用いたとしても、最初にレプリカを作成するノードとしてHDDを使用するノードが選択されてしまうと、クライアントに対する分散データベースの応答性能が低下する。
本発明は、P2P型の分散データベースシステムにおける応答性能を向上することのできる技術を提供することにある。
上記目的を達成するため、一観点に係る分散データベースシステムは、クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムであって、記憶装置には、入出力性能の高い第1種記憶装置と、入出力性能の低い第2種記憶装置とがあり、クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報を記憶する管理情報記憶部と、クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、複数のノード計算機から、応答数情報が示す数のノード計算機であって、第1種記憶装置に対して管理対象データを格納可能なノード計算機を、管理対象データの格納先として決定する格納先決定部と、決定されたノード計算機に対して、管理対象データを格納させる格納制御部と、を備える。
本発明によれば、P2P型の分散データベースシステムにおける応答性能を向上することができる。
図1は、実施例1に係る計算機システムの全体構成図である。 図2は、実施例1に係るクライアント計算機の構成図である。 図3は、実施例1に係るノード計算機の構成図である。 図4は、実施例1に係るデータ管理テーブルの構成図である。 図5は、実施例1に係るノード情報管理表の構成図である。 図6は、実施例1に係るKeySpace管理表の構成図である。 図7は、実施例1に係る格納先管理表の構成図である。 図8は、実施例1に係るリクエスト対応処理のフローチャートである。 図9は、実施例1に係るデータ配分処理のフローチャートである。 図10は、実施例1に係るライト処理のフローチャートである。 図11は、実施例1に係るリード処理のフローチャートである。 図12は、実施例1に係る設定変更処理のフローチャートである。 図13は、実施例2に係るノード計算機の構成図である。 図14は、実施例2に係るデバイス種別取得処理のフローチャートである。 図15は、実施例2に係るデバイス種別更新処理のフローチャートである。 図16は、実施例3に係る計算機システムの全体構成図である。 図17は、実施例3に係るSDSノードの構成図である。 図18は、実施例3に係る論理ボリューム管理表の構成図である。 図19は、実施例3に係る管理サーバの構成図である。 図20は、実施例3に係るSDSノード管理表の構成図である。 図21は、実施例3に係る論理ボリューム情報管理表の構成図である。 図22は、実施例3に係る論理ボリューム情報更新処理のフローチャートである。 図23は、実施例3に係るデバイス種別取得処理のフローチャートである。 図24は、実施例4に係る管理サーバの構成図である。 図25は、実施例4に係る稼働情報管理表の構成図である。 図26は、実施例4に係る性能劣化対処処理のフローチャートである。 図27は、実施例5に係る管理サーバの構成図である。 図28は、実施例5に係るネットワーク負荷管理表の構成図である。 図29は、実施例5に係る冗長性確保方法判断処理のフローチャートである。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」、「AAA表」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」や「AAA表」を「AAA情報」と呼ぶことができる。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の動作主体が、プロセッサ部(或いは、プロセッサ部を有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。また、プログラムが実行されることによって実現される処理のうちの少なくとも一部が、ハードウェア回路(例えばASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array))によって実現されてもよい。
まず、本発明の実施例1に係る計算機システムについて説明する。
図1は、第1実施例に係る計算機システムの全体構成図である。
計算機システム1は、1以上のクライアント計算機1010と、複数のノード計算機1020とを含む。クライアント計算機1010と、複数のノード計算機1020は、業務ネットワーク1030を介して接続されている。また、複数のノード計算機1020は、クラスタネットワーク1040を介して接続されている。なお、業務ネットワーク1030と、クラスタネットワーク1040とは同一のネットワークであってもよい。
計算機システム1においては、複数のノード計算機1020により、分散データベースクラスタ(分散データベースシステム:単に分散データベースともいう)1050が構成されている。
クライアント計算機1010は、ユーザデータ(管理対象データ)を用いた各種処理を実行し、分散データベースクラスタ1050へユーザデータについてのI/O要求(Write要求(ライト要求)やRead要求(リード要求))を送信し、その応答を受信する。
ノード計算機1020は、クライアント計算機1010で使用されるユーザデータを格納可能であり、クライアント計算機1010からのI/O要求に対応するI/O処理を実行する。
次に、クライアント計算機1010について詳細に説明する。
図2は、実施例1に係るクライアント計算機の構成図である。
クライアント計算機1010は、プロセッサの一例としてのCPU(Central Processing Unit)2010と、メモリ2020と、記憶装置2030と、入力装置2040と、出力装置2050と、通信ポート2060とを備える。
通信ポート2060は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、業務ネットワーク1030を介して各ノード計算機1020と通信する。
CPU2010は、メモリ2020及び/又は記憶装置2030に格納されているプログラムに従って各種処理を実行する。
メモリ2020は、例えば、RAM(Random Access Memory)であり、CPU2010で実行されるプログラムや、必要な情報を記憶する。
記憶装置2030は、例えば、ハードディスクドライブやSSDなどであり、CPU2010で実行されるプログラムや、CPU2010に利用されるデータを記憶する。
入力装置2040は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける装置である。出力装置2050は、例えば、ディスプレイ等の各種情報を表示出力する装置である。
次に、ノード計算機1020について説明する。
図3は、実施例1に係るノード計算機の構成図である。
ノード計算機1020は、プロセッサの一例としてのCPU3010と、メモリ3020と、管理情報記憶部の一例としての記憶装置3030と、入力装置3040と、出力装置3050と、通信ポート3060とを備える。
通信ポート3060は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、業務ネットワーク1030を介して各クライアント計算機1010と通信し、クラスタネットワーク1040を介して他のノード計算機1020と通信する。
CPU3010は、メモリ3020及び/又は記憶装置3030に格納されているプログラムに従って各種処理を実行する。
メモリ3020は、例えば、RAMであり、CPU3010で実行されるプログラムや、必要な情報を記憶する。本実施例では、メモリ3020は、データ管理テーブル3025を記憶する。データ管理テーブル3025は、分散データベース管理システムのCassandraにおけるmemtableに相当する。データ管理テーブル3025は、クライアント計算機1010からのWrite要求のあったデータを一時的に保持する。なお、データ管理テーブル3025の詳細については後述する。
記憶装置3030は、例えば、HDDやSSDなどであり、CPU3010で実行されるプログラムや、CPU3010に利用されるデータや、クライアント計算機1010から送信されたユーザデータ等を記憶する。本実施例に係る計算機システム1では、記憶装置3030の種別がSSD(第1種記憶装置の一例)であるノード計算機1020と、記憶装置3030の種別がHDD(第2種記憶装置)であるノード計算機1020とが混在している。例えば、記憶装置3030の種別をSSDにした場合には、HDDにした場合に比して、I/Oにおける応答速度の性能(I/O性能:入出力性能)が高い。一方、記憶装置3030の種別をHDDにした場合には、SSDにした場合に比して、コストを低減することができる。
本実施例では、記憶装置3030は、ノード情報管理表3110と、KeySpace(キースペース)管理表3120と、格納先管理表3125と、を格納する。また、記憶装置3030は、CommitLog(コミットログ)記憶領域3130と、データ記憶領域3140とを有する。また、記憶装置3030は、CPU3010により実行されるプログラムとして、リクエスト受信プログラム3210と、データ配分プログラム3220と、Write処理プログラム3230と、Read処理プログラム3240と、クラスタ通信プログラム3250とを記憶する。これらプログラムは、メモリ3020にロードされてCPU3010により実行される。ここで、CPU3010がデータ配分プログラム3220を実行することにより、格納先決定部が構成される。また、CPU3010がリクエスト受信プログラム3210を実行することにより、格納制御部が構成される。
入力装置3040は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける装置である。出力装置3050は、例えば、ディスプレイ等の各種情報を表示出力する装置である。
次に、メモリ3020に格納されているデータ管理テーブル3025について詳細に説明する。
図4は、実施例1に係るデータ管理テーブルの構成図である。
データ管理テーブル3025は、管理する所定の単位のデータ(単位データ)ごとに対応するエントリを格納する。データ管理テーブル3025のエントリは、KeySpace(キースペース)3025aと、ColumnFamily(カラムファミリ)3025bと、Row(ロウ)3025cと、Name(名称)3025dと、Value(値)3025eと、Timestamp(タイムスタンプ)3025fとの欄(カラム)を有する。
KeySpace3025aには、単位データを保持するKeySpace(インスタンスに対応)を一意に識別する識別子(KeySpaceID)が格納される。ColumnFamily3025bには、単位データを保持するColumnFamily(テーブルに対応)を一意に識別する識別子(ColumnFamilyID)が格納される。Row3025cには、単位データを格納するRowを一意に識別する識別子(RowID)が格納される。Name3025dには、単位データを一意に識別するデータ名(Name)が格納される。Value3025eには、エントリに対応する単位データの内容(Value:値)が格納される。Timestamp3025fには、エントリに対応する単位データが書き込まれた日時(タイムスタンプ)が格納される。
次に、ノード情報管理表3110について詳細に説明する。
図5は、実施例1に係るノード情報管理表の構成図である。
ノード情報管理表3110は、分散データベースクラスタ1050を構成するノード計算機ごとのエントリを格納する。ノード情報管理表3110のエントリは、ノードID3110aと、DC(データセンタ)3110bと、Rack3110cと、I/Oデバイス種別3110dとの欄を含む。
ノードID3110aには、エントリに対応するノード計算機1020を一意に識別する識別子(ノードID)が格納される。DC3110bには、エントリに対応するノード計算機1020が配置されているデータセンタを一意に識別する識別子(DCID)が格納される。Rack3110cには、エントリに対応するノード計算機1020が配置されているラックを一意に識別する識別子(RackID)が格納される。I/Oデバイス種別3110dには、エントリに対応するノード計算機1020が使用しているI/Oデバイス(本実施例では、記憶装置3030)の種別(I/Oデバイス種別)が格納される。
次に、KeySpace管理表3120について詳細に説明する。
図6は、実施例1に係るKeySpace管理表の構成図である。
KeySpace管理表3120は、分散データベースクラスタ1050で管理しているKeySpece毎のエントリを格納する。KeySpace管理表3120のエントリは、KeySpace3120aと、冗長レベル3120bと、整合性レベル3120cとの欄を含む。
KeySpace3120aには、エントリに対応するKeySpaceのKeySpaceIDが格納される。冗長レベル3120bには、エントリに対応するKeySpaceにおいて、冗長性を確保するために必要なデータの複製(レプリカ)の数(基本的には、ノード計算機(I/Oデバイス)の数)を示す冗長レベル(冗長数情報)が格納される。整合性レベル3120cには、エントリに対応するKeySpaceにおいて、整合性を確保するために必要なデータの複製(レプリカ)の数(ノード計算機(I/Oデバイス)の数)を示す整合性レベル(応答数情報)が格納される。具体的には、クライアント計算機1010からRead要求があった場合に、整合性レベルのノード計算機1020から読み出したデータが整合していることを確認した場合に、クライアント計算機1010にデータを応答する。
次に、格納先管理表3125について詳細に説明する。
図7は、実施例1に係る格納先管理表の構成図である。
格納先管理表3125は、単位データ毎のエントリが格納される。格納先管理表3125のエントリは、KeySpace3125aと、ColumnFamily3125bと、Row3125cと、Name3125dと、ノードID3125eとの欄を有する。
KeySpace3125aには、エントリに対応する単位データを保持するKeySpaceのKeySpaceIDが格納される。ColumnFamily3125bには、単位データを保持するColumnFamilyのColumnFamilyIDが格納される。Row3125cには、単位データを格納するRowのRowIDが格納される。Name3125dには、単位データのNameが格納される。ノードID3125eには、エントリに対応する単位データを格納しているノード計算機を一意に識別する識別子(ノードID)が格納される。この格納先管理表3125によると、単位データがどのノード計算機1020に格納されているかを特定することができる。
CommitLog記憶領域3130は、Write要求があったデータの即時ログを記憶するための領域である。CommitLog記憶領域3130には、Write要求のたびに、Write要求に対応するデータのKeySpaceID、ColumnFamilyID、RowID、Name、Value、TimeStampが格納される。
データ記憶領域3140は、メモリ3020のデータ管理テーブル3025の内容のフラッシュ時の書き込み先となる領域である。データ記憶領域3140は、データ管理テーブル3025と同一のデータ形式で内容を保持する。
次に、分散データベースクラスタ1050の処理動作について説明する。
まず、リクエスト対応処理について説明する。
図8は、実施例1に係るリクエスト対応処理のフローチャートである。
リクエスト対応処理は、リクエスト受信プログラム3210をCPU3010が実行することにより実行される。リクエスト対応処理は、クライアント計算機1010からのリクエストを受信した場合に実行される。
クライアント計算機1010からリクエストを受信すると(S701)、リクエスト受信プログラム3210(正確には、リクエスト受信プログラム3210を実行するCPU3010)は、受信したリクエストが、Update(更新)、Read(読み出し)、Write(書き込み)のいずれであるかを判定する(S702)。
この結果、リクエストがUpdateの場合(S702:Update)には、リクエスト受信プログラム3210は、格納先管理表3125を参照して、Update対象のデータを保持する1以上のノード計算機1020を検索し(S703)、検索したノード計算機1020に対してUpdate対象のデータを書き込ませるWrite要求を転送し(S704)、処理をステップS709に進める。
また、リクエストがReadの場合(S702:Read)には、リクエスト受信プログラム3210は、格納先管理表3125を参照して、Read対象のデータを保持する1以上のノード計算機1020を検索し(S705)、検索したノード計算機1020に対してRead要求を送信し(S706)、処理をステップS709に進める。
また、リクエストがWrite場合(S702:Write)には、リクエスト受信プログラム3210は、データ分配プログラム3220に対して、データを分配して格納させるノード計算機1020を決定させる要求(ノード決定要求)を送信し、データ分配プログラム3220から分配させて格納させるノード計算機1020の決定結果を受信し(S707)、決定結果のノード計算機1020に対して、Write要求を送信し(S708)、処理をステップS709に進める。
ステップS709では、リクエスト受信プログラム3210は、要求を送信した各ノード計算機1020からの応答を待ち、応答が返ってきたノード計算機1020の数が、KeySpace管理表3120のリクエスト対象のデータの属するKeySpaceに対応する整合性レベルより少ないか否かを判定する(S710)。
この結果、応答が返ってきたノード計算機1020の数が整合性レベルよりも少ない場合(S710:Yes)には、整合性が確認されていないことを意味しているので、リクエスト受信プログラム3210は、処理をステップS709に進める。
一方、応答が返ってきたノード計算機1020の数が整合性レベルより少なくない、すなわち、整合性レベル以上となった場合(S710:No)には、整合性が確認されたことを意味しているので、リクエスト受信プログラム3210は、クライアント計算機1010に対して応答を返し(S711)、処理を終了する。
次に、データ分配処理について説明する。
図9は、実施例1に係るデータ配分処理のフローチャートである。
データ配分処理は、データ配分プログラム3220をCPU3010が実行することにより実行される。データ配分処理は、リクエスト受信プログラム3210からノード決定要求(図8のステップS707で送信)を受信した場合に実行される。
データ配分プログラム3220は、データ配分先のノード決定要求を受信すると、ノード決定要求に対応するKeySpaceを確認し、KeySpace管理表3120を参照して、このKeySpaceにおける冗長レベルと、整合性レベルとを取得する(S801)。
次に、データ配分プログラム3220は、ノード情報管理表3110を参照し、レプリカを作成する1つのノード計算機1020をI/Oデバイス種別がSSDのノード計算機1020の中から選択する(S802)。
次に、データ配分プログラム3220は、選択済みのノード計算機1020の数が、ステップS801で取得した整合性レベルより少ないか否かを判定する(S803)。
この結果、選択済みのノード計算機1020の数が、ステップS801で取得した整合性レベルよりも少ない場合(S803:Yes)には、整合性の確保に必要な数のSSDのノード計算機1020が選択されていないことを意味しているので、データ配分プログラム3220は、ノード情報管理表3110を参照し、レプリカを作成する別の1つのノード計算機1020をI/Oデバイス種別がSSDのノード計算機1020の中から選択し(S804)、処理をステップS803に進める。
一方、選択済みのノード計算機1020の数が、整合性レベルよりも少なくない場合、すなわち、整合性レベル以上である場合(S803:No)には、整合性の確保に必要な数のSSDのノード計算機1020が選択されていることを意味しているので、データ配分プログラム3220は、処理をステップS805に進める。
ステップS805では、データ配分プログラム3220は、選択済みのノード計算機1020の数が、ステップS801で取得した冗長レベルより少ないか否かを判定する(S805)。
この結果、選択済みのノード計算機1020の数が、ステップS801で取得した冗長レベルよりも少ない場合(S805:Yes)には、冗長性の確保に必要な数のノード計算機1020が選択されていないことを意味しているので、データ配分プログラム3220は、ノード情報管理表3110を参照し、レプリカを作成する別の1つのノード計算機1020をI/Oデバイス種別がHDDのノード計算機1020の中から選択し(S806)、処理をステップS805に進める。
一方、選択済みのノード計算機1020の数が、冗長レベルよりも少なくない場合、すなわち、冗長レベル以上である場合(S805:No)には、冗長性の確保に必要な数のノード計算機1020が選択されていることを意味しているので、データ配分プログラム3220は、処理を終了する。
このデータ配分処理によると、データのレプリカを配分するノード計算機1020として、整合性レベルに対応する数のSSDのノード計算機1020と、冗長レベルに不足している数(冗長レベル−整合性レベル)のHDDのノード計算機1020とを適切に選択することができる。
次に、ライト処理について説明する。
図10は、実施例1に係るライト処理のフローチャートである。
ライト処理は、Write処理プログラム3230をCPU3010が実行することにより実行される。ライト処理は、Write処理プログラム3230が、リクエスト受信プログラム3210からWrite要求(図8のステップS704、S708で送信)を受信した場合に実行される。
Write処理プログラム3230は、Write要求を受信すると(S901)、CommitLog記憶領域3130に、ログとして、Write要求に対応するデータのKeySpaceID、ColumnFamilyID、RowID、Name、及びValueと、Write要求に対応するTimestampを格納し(S902)、メモリ3020のデータ管理テーブル3025に、Write要求に対応するデータを反映させ(S903)、要求元に応答を返す(S904)。
次に、Write処理プログラム3230は、データ管理テーブル3025のサイズが閾値以上であるか否かを判定し(S905)、データ管理テーブル3025のサイズが閾値以上でない場合(S905:No)には処理を終了する。
一方、データ管理テーブル3025のサイズが閾値以上である場合(S905:Yes)には、Write処理プログラム3230は、データ管理テーブル3025の内容をフラッシュする、すなわち、データ管理テーブル3025の内容を記憶装置3030のデータ記憶領域3140に移動し(S906)、処理を終了する。
次に、リード処理について説明する。
図11は、実施例1に係るリード処理のフローチャートである。
リード処理は、Read処理プログラム3240をCPU3010が実行することにより実行される。リード処理は、Read処理プログラム3240が、リクエスト受信プログラム3210からRead要求(図8のステップS705で送信)を受信した場合に実行される。
Read処理プログラム3240は、Read要求を受信すると(S1001)、Read対象のデータ(この処理の説明において対象データという)がデータ管理テーブル3025に存在するか否かを判定する(S1002)。この結果、対象データがデータ管理テーブル3025に存在する場合(S1002:Yes)には、Read処理プログラム3240は、データ管理テーブル3025から対象データを読み込んで、読み込んだ対象データを含む応答を要求元に送信し(S1005)、処理を終了する。
一方、対象データがデータ管理テーブル3025に存在しない場合(S1002:No)には、Read処理プログラム3240は、データ記憶領域3140から対象データを読み込んで、読み込んだ対象データを含む応答を要求元に送信し(S1005)、処理を終了する。
次に、設定変更処理について説明する。
図12は、実施例1に係る設定変更処理のフローチャートである。
設定変更処理は、クラスタ通信プログラム3250をCPU3010が実行することにより実行される。設定変更処理は、クラスタ通信プログラム3250が、クライアント計算機1010から設定変更を受信した場合に実行される。
クラスタ通信プログラム3250は、クライアント計算機1010から設定変更を受信すると(S1101)、ノード情報管理表3110を参照し、分散データベースクラスタ1050を構成する全てのノード計算機1020に対して、受信した設定変更の内容(設定変更内容)を通知し、設定変更を自装置内のKeySpace管理表3120に反映させ(S1103)、処理を終了する。なお、このノード計算機1020から設定変更内容の通知を受けた他のノード計算機1020のクラスタ通信プログラム3250は、設定変更を各装置内のKeySpace管理表3120に反映させる。
以上説明したように、本実施例に係る分散データベースクラスタ1050においては、整合性レベルの数のSSDを有するノード計算機1020と、冗長レベルに不足している数のHDDを有するノード計算機1020とを用いて同一のデータを管理するようにしている。このため、Write処理や、Read処理においては、SSDを有するノード計算機1020によって応答性を向上することができ、HDDを有するノード計算機1020を含む冗長レベルの数のノード計算機1020により、データの冗長度を確保することができる。これにより、分散データベースクラスタ1050において、高性能且つ低コストを実現できる。
次に、本発明の実施例2に係る計算機システムについて説明する。なお、実施例2に係る計算機システムについては、実施例1に係る計算機システムと異なる点を中心に説明する。
図13は、実施例2に係るノード計算機の構成図である。
実施例2に係るノード計算機は、図3に示す実施例1に係るノード計算機に対して、記憶装置3030にI/Oデバイス種別取得プログラム12010を新たに備えるようにするとともに、クラスタ通信プログラム3250の一部の処理を変更させたものである。ここで、CPU3010がI/Oデバイス種別取得プログラム12010を実行することにより、種別取得部が構成される。
次に、実施例2に係るノード計算機1020によるデバイス種別取得処理について説明する。
図14は、実施例2に係るデバイス種別取得処理のフローチャートである。
デバイス種別取得処理は、I/Oデバイス種別取得プログラム12010をCPU3010が実行することにより実行される。デバイス種別取得処理は、I/Oデバイス取得プログラム12010が、ノード計算機1020の起動を検出した場合に実行される。
I/Oデバイス種別取得プログラム12010は、ノード計算機1020が起動されると(S1301)、自ノード計算機1020におけるCommitLog記憶領域3130と、データ記憶領域3140とを構成するI/Oデバイスの種別を自ノード計算機1020上で動作するOS(Operating System)の機能を用いて取得する(S1302)。例えば、OSがLinux(登録商標)である場合には、「lsblk -o name,rota」を実行した結果を取得し、ROTAの値が0のI/OデバイスはSSDであり、ROTAの値が1のI/OデバイスはHDDであると判別できる。また、I/Oベンチマーク技術により、CPU3010が、I/Oデバイスの実際のI/O性能を計測して、その計測結果に応じて、I/Oデバイス種別を取得してもよい。この際のCPU3010により構成される機能部が、種別特定部に相当する。
次に、I/Oデバイス種別取得プログラム12010は、ノード情報管理表3110の自ノード計算機1020のI/Oデバイス種別3110dの設定を確認し、ステップS1302で取得したI/Oデバイス種別が、保持する値と同一か否かを判定する(S1303)。この結果、取得したI/Oデバイス種別が、保持する値と同一である場合(S1303:Yes)には、I/Oデバイス種別取得プログラム12010は、処理を終了する。
一方、取得したI/Oデバイス種別が、保持する値と同一でない場合(S1303:No)には、I/Oデバイス種別取得プログラム12010は、クラスタ通信プログラム3250により、分散データベースクラスタ1050を構成する全ノード計算機1020に自ノード計算機1020のI/Oデバイス種別の変更通知を送信し(S1304)、処理を終了する。
次に、デバイス種別更新処理について説明する。
図15は、実施例2に係るデバイス種別更新処理のフローチャートである。
デバイス種別更新処理は、クラスタ通信プログラム3250をCPU3010が実行することにより実行される。デバイス種別更新処理は、他のノード計算機1020からI/Oデバイス種別の変更通知を受信した場合に実行される。
クラスタ通信プログラム3250は、他のノード計算機1020からI/Oデバイス種別の変更通知を受信すると(S1401)、ノード情報管理表3110の送信元のノード計算機1020に対応するエントリのI/Oデバイス種別3110dの値を受信した変更種別におけるI/Oデバイス種別に更新し(S1402)、処理を終了する。これにより、各ノード計算機1020におけるノード情報管理表3110にある各ノード計算機1020のI/Oデバイスの種別を最新の状態に維持することができる。
本実施例に係る計算機システムによると、ユーザがノード計算機1020毎のI/Oデバイスの種別を確認して、ノード情報管理表3110へ設定する必要がなくなる。
次に、本発明の実施例3に係る計算機システムについて説明する。なお、実施例3に係る計算機システムについては、実施例2に係る計算機システムと異なる点を中心に説明する。
まず、実施例3に係る計算機システムについて説明する。
図16は、実施例3に係る計算機システムの全体構成図である。
実施例3に係る計算機システムは、実施例2に係る計算機システムにおいて、新たに、1以上のストレージノードの一例としてのSDS(Software Defined Storage)ノード15010と、管理サーバ15030とを備える。ノード計算機1020と、SDSノード15010とは、ストレージネットワーク15040を介して接続されている。また、各SDSノード15010は、SDSクラスタネットワーク15050を介して接続されている。複数のSDSノード15010によって、SDSクラスタ15020が構成されている。管理サーバ15030と、ノード計算機1020と、SDSノード15010とは、管理用ネットワーク15060で接続される。
なお、業務ネットワーク1030と、クラスタネットワーク1040と、ストレージネットワーク15040と、SDSクラスタネットワーク15050と、管理用ネットワーク15060とは、それぞれ別のネットワークでもよく、一部もしくは全部が同一のネットワークであってもよい。また、本実施例では、SDSノードとしているが、SDSノードに代えて、専用のハードウェアで構成されたストレージノードとしてもよい。なお、計算機システム1において、分散データベースクラスタ1050と、SDSクラスタ15020と、管理サーバ15030と、を組み合わせたものが分散データベースシステムに対応する。
実施例3に係るノード計算機1020は、実施例2に係るノード計算機1020とは、I/Oデバイス種別取得プログラム12010の機能が異なっている。
次に、SDSノードについて説明する。
図17は、実施例3に係るSDSノードの構成図である。
SDSノード15010は、例えば、汎用計算機を用いて構成されたストレージノードであり、コントローラ16010と、メモリ16020と、I/Oポート16030と、管理ポート16040と、1以上のI/Oデバイス16050とを含む。
I/Oポート16030は、通信用のインターフェースであり、ストレージネットワーク15040を介して各ノード計算機1020と通信し、SDSクラスタネットワーク15050を介して他のSDSノード15010と通信する。
管理ポート16040は、通信用のインターフェースであり、管理用ネットワーク15060を介して管理サーバ15030と通信する。
コントローラ16010は、メモリ16020及び/又はI/Oデバイス16050に格納されているプログラムに従って各種処理を実行する。
メモリ16020は、例えば、RAMであり、コントローラ16010で実行されるプログラムや、必要な情報を記憶する。本実施例では、メモリ16020は、論理ボリューム管理表16110を記憶する。
I/Oデバイス16050は、例えば、HDDやSSDなどであり、コントローラ16010で実行されるプログラムや、コントローラ16010に利用されるデータや、クライアント計算機1010で利用するユーザデータを格納する。例えば、I/Oデバイス16050の種別をSSDにした場合には、HDDにした場合に比して、I/Oにおける応答速度の性能(I/O性能)が高い。一方、I/Oデバイス16050の種別をHDDにした場合には、SSDにした場合に比して、コストを低減することができる。
本実施例では、I/Oデバイス16050から切り出された記憶領域を論理ボリューム16210としてノード計算機1020に提供する。論理ボリューム16210は、複数のI/Oデバイス16050で構成されるRAID(Redundant Array of Independent (or Inexpensive Disks)グループに基づく記憶領域で構成されてもよい。
次に、論理ボリューム管理表16110について説明する。
図18は、実施例3に係る論理ボリューム管理表の構成図である。
論理ボリューム管理表16110は、SDSノード15010において管理する論理ボリューム毎のエントリを格納する。論理ボリューム管理表16110のエントリは、論理ボリュームID16110aと、接続先16110bと、I/OデバイスID16110cと、I/Oデバイス種別16110dとの欄を含む。
論理ボリュームID16110aには、エントリに対応する論理ボリュームを一意に識別する識別子(論理ボリュームID)が格納される。接続先16110bには、エントリに対応する論理ボリュームを使用するノード計算機1020のノードIDが格納される。I/OデバイスID16110cには、論理ボリュームを構成するI/Oデバイスの識別子(I/OデバイスID)が格納される。I/Oデバイス種別16110dには、エントリに対応する論理ボリュームを構成するI/Oデバイスの種別が格納される。なお、SDSノード15010は、管理サーバ15030から論理ボリューム管理表16110の情報の要求を受けると、論理ボリューム管理表16110の情報を応答として返す。
次に、管理サーバ15030について説明する。
図19は、実施例3に係る管理サーバの構成図である。
管理サーバ15030は、プロセッサの一例としてのCPU18010と、メモリ18020と、記憶装置18030と、入力装置18040と、出力装置18050と、通信ポート18060とを備える。
通信ポート18060は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、管理用ネットワーク15060を介してそれぞれのノード計算機1020及びSDSノード15010と通信する。
CPU18010は、メモリ18020及び/又は記憶装置18030に格納されているプログラムに従って各種処理を実行する。
メモリ18020は、例えば、RAMであり、CPU18020で実行されるプログラムや、必要な情報を記憶する。
記憶装置18030は、例えば、HDDやSSDなどであり、CPU18010で実行されるプログラムや、CPU18010に利用されるデータ等を記憶する。本実施例では、記憶装置18030は、SDSノード管理表18110と、論理ボリューム情報管理表18120と、論理ボリューム情報収集プログラム18210と、を格納する。論理ボリューム情報収集プログラム18210は、メモリ18020にロードされてCPU18010により実行される。
入力装置18040は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける装置である。出力装置18050は、例えば、ディスプレイ等の各種情報を表示出力する装置である。
次に、SDSノード管理表18110について説明する。
図20は、実施例3に係るSDSノード管理表の構成図である。
SDSノード管理表18110は、SDSノード15010が格納する論理ボリュームを管理するための表であり、エントリは、SDSノード18110aと、論理ボリュームID18110bとの欄を含む。SDSノード18110aには、SDSクラスタ15020を構成するSDSノード15010を一意に識別する識別子(SDSノードID)が格納される。論理ボリュームID18110bには、エントリに対応するSDSノード15010で管理されている論理ボリュームを一意に識別する識別子(論理ボリュームID)が格納される。
次に、論理ボリューム情報管理表18120について説明する。
図21は、実施例3に係る論理ボリューム情報管理表の構成図である。
論理ボリューム情報管理表18120は、論理ボリューム毎のエントリを格納する。論理ボリューム情報管理表18120のエントリは、論理ボリュームID18120aと、ノード計算機18120bと、I/Oデバイス種別18120cとの欄を含む。論理ボリュームID18120aには、エントリに対応する論理ボリュームの論理ボリュームIDが格納される。ノード計算機18120bには、エントリに対応する論理ボリュームに接続されているノード計算機1020のノードIDが格納される。I/Oデバイス種別18120cには、エントリに対応する論理ボリュームを構成するI/Oデバイスの種別が格納される。
次に、管理サーバ15030における論理ボリューム情報更新処理について説明する。
図22は、実施例3に係る論理ボリューム情報更新処理のフローチャートである。
論理ボリューム情報更新処理は、論理ボリューム情報収集プログラム18210を、CPU18010が実行することにより実行される。
論理ボリューム情報収集プログラム18210は、SDSノード管理表18110を参照し、SDSノード管理表18110に登録されている全てのSDSノード15010に対し、論理ボリューム管理表16110の情報を要求する(S2101)。この要求に対して、各SDSノード15010は、論理ボリューム管理表16110の各エントリの情報を応答することとなる。
次に、論理ボリューム情報収集プログラム18210は、要求先のSDSノード15010から応答を受信すると、論理ボリューム情報管理表18120の論理ボリュームID18120aに受信した論理ボリュームIDを格納し、ノード計算機18120bに接続先のノード計算機1020のノードIDを格納し、I/Oデバイス種別18120cにI/Oデバイスの種別の値を格納したエントリを追加し(S2102)、処理を終了する。
次に、ノード計算機1020のデバイス種別取得処理について説明する。
図23は、実施例3に係るデバイス種別取得処理のフローチャートである。
デバイス種別取得処理は、ノード計算機1020のI/Oデバイス種別取得プログラム12010をCPU3010が実行することにより実行される。
I/Oデバイス種別取得プログラム12010は、管理サーバ15030に論理ボリューム情報管理表18120の情報を要求する(S2201)。この要求に対して、管理サーバ15030は、論理ボリューム情報管理表18120の各エントリの情報を応答することとなる。
I/Oデバイス種別取得プログラム12010は、管理サーバ15030から応答を受信すると、ノード情報管理表3110の応答中のノードIDに対応するエントリのI/Oデバイス種別3110dに応答中のI/Oデバイス種別を格納し、さらに、応答中のノードID及びI/Oデバイス種別をノード情報管理表3110に保持された各ノード計算機1020に送信し、処理を終了する。これに対して、ノードID及びI/Oデバイス種別を受信したノード計算機1020は、ノード情報管理表3110のノードIDに対応するエントリのI/Oデバイス種別3110dに受信したI/Oデバイス種別を保存する。
以上説明したように、本実施例に係る計算機システム1によると、ノード計算機1020がクライアント計算機1010に提供する記憶領域として、SDSノード15010から提供される論理ボリュームを使用した場合においても、ユーザがノード計算機1020毎のI/Oデバイスの種別を確認して、ノード情報管理表3110へ設定する必要がない。
次に、本発明の実施例4に係る計算機システムについて説明する。なお、実施例4に係る計算機システムについては、実施例3に係る計算機システムと異なる点を中心に説明する。
図24は、実施例4に係る管理サーバの構成図である。
実施例4に係る管理サーバは、実施例3に係る管理サーバにおいて、記憶装置18030に、稼働情報管理表23110と、稼働情報収集プログラム23210と、分散データベース設定プログラム23220と、SDS設定プログラム23230と、性能劣化対処プログラム23240とをさらに格納する。ここで、CPU18010が性能劣化対処プログラム23240を実行することにより、ノード状態判定部が構成される。また、CPU18010がSDS設定プログラム23230を実行することにより、ボリューム設定部が構成される。また、CPU18010が分散データベース設定プログラム23220を実行することにより、応答数調整部が構成される。
稼働情報収集プログラム23210は、SDSクラスタ15020を構成するSDSノード15010へポーリングを行い、IOPS(Input/Output Per Second)と、CPU利用率と、I/Oデバイス種別と取得し、稼働情報管理表23110へ保存する。
分散データベース設定プログラム23220は、ノード計算機1020にKeySpaceを指定して整合性レベルの変更を通知する。なお、ノード計算機1020は、整合性レベルの変更の通知を受信すると、KeySpace管理表3120の変更対象のKeySpaceのエントリの整合性レベル3120cの設定を変更する。また、ノード計算機1020のクラスタ通信プログラム3250は、分散データベースクラスタ1050の他の全てのノード計算機1020に整合性レベルの変更を通知する。これにより、他の全てのノード計算機1020では、KeySpace管理表3120の変更対象のKeySpaceのエントリの整合性レベル3120cの設定が変更される。
SDS設定プログラム23230は、SDSノード15010にボリューム追加設定を通知する。SDSノード15010は、ボリューム追加設定の通知を受信すると、新たに論理ボリューム16210を作成し、ノード計算機1020が使用していた既存の論理ボリュームと新規論理ボリュームとを合わせた論理ボリュームを作成し、ノード計算機1020に利用させる。
次に、稼働情報管理表23110について説明する。
図25は、実施例4に係る稼働情報管理表の構成図である。
稼働情報管理表23110は、SDSノード15010毎のエントリを格納する。稼働情報管理表23110のエントリは、ノード23110aと、IOPS23110bと、CPU利用率23110cと、I/Oデバイス種別23110dとの欄を含む。
ノード23110aには、エントリに対応するSDSノード15010のノードIDが格納される。IOPS23110bには、エントリに対応するSDSノード15010におけるIOPSが格納される。CPU利用率23110cには、エントリに対応するSDSノード15010におけるコントローラ16010のCPUの利用率が格納される。I/Oデバイス種別23110dには、エントリに対応するSDSノード15010が使用するI/Oデバイスの種別が格納される。
次に、管理サーバ15030の性能劣化対処処理について説明する。
図26は、実施例4に係る性能劣化対処処理のフローチャートである。
性能劣化対処処理は、性能劣化対処プログラム23240をCPU18010が実行することにより実行される。
性能劣化対処プログラム23240(正確には、性能劣化対処プログラム23240を実行するCPU18010)は、各ノード計算機1020にポーリングし、分散データベースクラスタ1050のクライアント計算機1010に対するI/Oにおける応答時間を取得し、応答時間が予め定めた閾値を超過したか否か、すなわち、応答性能低下か否かを検知する(S2501)。
性能劣化対処プログラム23240は、応答性能低下を検知すると(S2501:Yes)、稼働情報管理表23110を参照し、SDSノード15010に対応するエントリのIOPS23110bのIOPSが予め定めたIOPS用の閾値を超過しているか否かを判定する(S2502)。
この結果、IOPSが閾値を超過している場合(S2502:Yes)、性能劣化対処プログラム23240は、対応するエントリのCPU利用率23110cのCPU利用率が予め定めたCPU利用率用の閾値を超過しているか否かを確認する(S2503)。
この結果、CPU利用率が閾値を超過している場合(S2503:Yes)、性能劣化対処プログラム23240は、SDSノード15010の追加を提案し(S2504)、処理を終了する。例えば、性能劣化対処プログラム23240は、出力装置18050に、SDSノード15010の追加を提案する内容の画面を表示する。一方、CPU利用率が閾値を超過していない場合(S2503:No)、性能劣化対処プログラム23240は、SDS設定プログラム23230により、SDSノード15010に、ボリュームの追加設定の通知を行い(S2505)、処理を終了する。
一方、IOPSが閾値を超過していない場合(S2502:No)、性能劣化対処プログラム23240は、対応するエントリのCPU利用率23110cのCPU利用率が予め定めたCPU利用率用の閾値を超過しているか否かを確認する(S2506)。
この結果、CPU利用率が閾値を超過している場合(S2506:Yes)、性能劣化対処プログラム23240は、整合性レベルを下げられるか否かを判定する(S2507)。整合性レベルを下げられるか否かは、整合性レベルが2以上であるか否かにより判定できる。
この結果、整合性レベルを下げられる場合(S2507:Yes)、性能劣化対処プログラム23240は、分散データベース設定プログラム23220により、ノード計算機1020に整合性レベルを下げる指示を通知し(S2508)、処理を終了する。一方、整合性レベルを下げられない場合(S2507:No)、性能劣化対処プログラム23240は、SDSノード15010の追加を提案し(S2509)、処理を終了する。
一方、CPU利用率が閾値を超過していない場合(S2506:No)、性能劣化対処プログラム23240は、応答性能低下の原因が不明というアラートを発生し(S2510)、処理を終了する。
以上説明したように、本実施例に係る計算機システムによると、分散データベースクラスタ1050の応答性能が低下した場合に、適切な対処を実行することができる。
次に、本発明の実施例5に係る計算機システムについて説明する。なお、実施例5に係る計算機システムについては、実施例4に係る計算機システムと異なる点を中心に説明する。
図27は、実施例5に係る管理サーバの構成図である。
実施例5に係る管理サーバは、実施例4に係る管理サーバにおいて、記憶装置18030に、ネットワーク負荷管理表26110と、ネットワーク負荷収集プログラム26210と、冗長性確保方法判断プログラム26220とをさらに格納する。ここで、CPU18010が冗長性確保方法判断プログラム26220を実行することにより、帯域判定部及び冗長設定部が構成される。
ネットワーク負荷収集プログラム26210は、ネットワーク(クラスタネットワーク1040、SDSクラスタネットワーク15050)を構成する図示しないネットワークスイッチに帯域利用率の問い合わせを行い、応答として得た帯域利用率を、後述するネットワーク負荷管理表26110の帯域利用率26110bに保存する。
次に、ネットワーク負荷管理表26110について説明する。
図28は、実施例5に係るネットワーク負荷管理表の構成図である。
ネットワーク負荷管理表26110は、各ネットワーク(クラスタネットワーク1040、SDSクラスタネットワーク15050)毎のエントリを格納する。ネットワーク負荷管理表26110のエントリは、ネットワーク26110aと、帯域利用率26110bとの欄を含む。ネットワーク26110aには、ネットワークを示すネットワーク名が格納される。帯域利用率26110bには、エントリに対応するネットワークにおける帯域利用率が格納される。
次に、管理サーバ15030の冗長性確保方法判断処理について説明する。
図29は、実施例5に係る冗長性確保方法判断処理のフローチャートである。
冗長性確保方法判断処理は、冗長性確保方法判断プログラム26220をCPU18010が実行することにより実行される。冗長性確保方法判断処理は、例えば、クライアント計算機1010等からKeySpace作成要求を受信した場合に実行される。KeySpace作成要求には、例えば、作成するKeySpeceのIDや、冗長レベル、整合性レベルの指定が含まれている。
冗長性確保方法判断プログラム26220は、KeySpace作成要求を受信すると(S2801)、ネットワーク負荷管理表26110を参照し、クラスタネットワーク1040の帯域利用率が予め定めた閾値を超過しているか否かを判定する(S2802)。
この結果、帯域利用率が閾値を超過している場合(S2802:Yes)、冗長性確保方法判断プログラム26220は、SDSクラスタネットワーク15050の帯域利用率が予め定めた閾値を超過しているか否かを判定する(S2803)。
この結果、SDSクラスタネットワーク15050の帯域利用率が閾値を超過している場合(S2803:Yes)、冗長性確保方法判断プログラム26220は、ネットワーク負荷のアラートを発生し(S2804)、処理を終了する。
一方、SDSクラスタネットワーク15050の帯域利用率が閾値を超過していない場合(S2803:No)、冗長性確保方法判断プログラム26220は、KeySpace作成要求の冗長レベルと整合性レベルとを確認し、HDDを使ったノード計算機1020のグループ(HDDグループ)から2つ以上のレプリカを作成するノード計算機1020として選択するか否かを確認する(S2805)。具体的には、冗長レベルと整合性レベルとの差が2以上であるか否かにより確認することができる。
この結果、2以上のHDDを使ったノード計算機1020を選択する場合、冗長性確保方法判断プログラム26220は、指定された冗長レベルを1下げた値を冗長レベルとする設定変更をノード計算機1020に通知する(S2806)。これにより、分散データベースクラスタ1050においては、新たなKeySpaceに対しては、指定された冗長レベルよりも一つ少ないノード計算機1020にレプリカが格納されることとなり、クラスタネットワーク1040での使用帯域を抑制することができる。
次いで、冗長性確保方法判断プログラム26220は、SDSノード15010に新ボリュームの作成を指示し(S2807)、SDSノード15010に、1つのレプリカを格納するボリュームを新ボリュームにミラーリングさせる設定を指示し(S2808)、処理を終了する。これにより、SDSノード15010のボリューム間で、レプリカを格納するボリュームのミラーリングが行われることとなるので、クラスタネットワーク1040の使用帯域を増加させずに、SDSクラスタネットワーク15050を利用して、レプリカの複製を作成することができる。これにより、計算機システム全体としては、指定された冗長レベルと同じ数のレプリカを保持している状態とすることができる。
一方、クラスタネットワーク1040の帯域利用率が閾値を超過していない場合(S2802:No)、又は2以上のHDDを使ったノード計算機1020を選択しない場合(S2805:No)には、冗長性確保方法判断プログラム26220は、指定された冗長レベルでの設定変更をノード計算機1020に通知し(S2809)、処理を終了する。これにより、分散データベースクラスタ1050においては、新たなKeySpaceに対しては、指定された冗長レベルのノード計算機1020にレプリカが格納されることとなる。
上記したように本実施例によると、分散データベースクラスタ1050において、SDSノードの機能(ミラーリング)を用いてレプリカの冗長性を確保でき、冗長性を確保するために使用するノード計算機1020の数を減らすことができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
また、上記した実施例では、種類の異なる記憶装置を備え、整合性レベルを満たすためのノード計算機が使用する記憶装置を入出力性能の高い記憶装置としていたが、本発明はこれに限られず、例えば、ノード計算機が使用する記憶装置の種類は同じもしくは同等のものとし、整合性レベルを満たすためのレプリカについては、非圧縮でノード計算機が使用する記憶装置に格納するようにし、冗長レベルに満たない分のレプリカについては、圧縮してノード計算機が使用する記憶装置に格納するようにしてもよい。このようにすると、非圧縮のレプリカに対する入出力を行うことにより応答性能を高くでき、一部のレプリカを圧縮して格納することよってビットコストを抑えることができる。このため、分散データベースクラスタ1050において、高性能且つ低コストを実現できる。
また、上記した各実施例では、第1種別記憶装置をSSDとし、第2種別記憶装置をHDDとする例を示していたが、本発明はこれに限られず、例えば、第1種別記憶装置を、SSDの中で高性能なSSDとし、第2種別記憶装置を、SSDの中で低性能なSSDとしてもよく、要は、入出力性能によって種類を分けることのできる記憶装置であればよい。
1…計算機システム、1010…クライアント計算機、1020…ノード計算機、1030…業務ネットワーク、1040…クラスタネットワーク、1050…分散データベースクラスタ、15010…SDSノード、15020…SDSクラスタ、15030…管理サーバ、15040…ストレージネットワーク、15050…SDSクラスタネットワーク、15060…管理用ネットワーク



Claims (12)

  1. クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムであって、
    前記記憶装置には、入出力性能の高い第1種記憶装置と、入出力性能の低い第2種記憶装置とがあり、
    前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報を記憶する管理情報記憶部と、
    前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機であって、前記第1種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先として決定する格納先決定部と、
    決定された前記ノード計算機に対して、前記管理対象データを格納させる格納制御部と、
    を備える分散データベースシステム。
  2. 前記管理情報は、前記管理対象データの可用性を確保するために前記管理対象データを格納するために必要とされるノード計算機の数を示す冗長数情報をさらに含み、
    前記格納先決定部は、前記冗長数情報が示す数と前記応答数情報が示す数との差の数のノード計算機であって、前記第2種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先に追加する
    請求項1に記載の分散データベースシステム。
  3. 前記記憶装置が前記第1種記憶装置であるか前記第2種記憶装置であるかを示す種別情報を取得する種別取得部をさらに有し、
    前記格納先決定部は、取得した種別情報に基づいて、前記ノード計算機が前記第1種記憶装置に対して管理対象データを格納可能か否かを識別する
    請求項1又は請求項2に記載の分散データベースシステム。
  4. 前記記憶装置が前記第1種記憶装置であるか前記第2種記憶装置であるかを、前記記憶装置に対する実際のデータの入出力の結果から特定する種別特定部をさらに有する
    請求項1又は請求項2に記載の分散データベースシステム。
  5. 前記記憶装置を備え、前記記憶装置の記憶領域を、前記管理対象データを格納する論理ボリュームとして前記ノード計算機に提供する1以上のストレージノードと、
    前記ストレージノードにおける前記記憶装置の論理ボリュームを提供するノード計算機と前記記憶装置の種類とを示す論理ボリューム情報を管理する管理サーバと、
    を備え、
    前記種別取得部は、前記管理サーバから、前記ノード計算機に提供される論理ボリュームを提供する記憶装置の種別を取得する
    請求項3に記載の分散データベースシステム。
  6. 前記ストレージノードの入出力処理が所定の閾値を超えているか否か、及び前記ストレージノードのプロセッサの利用率が所定の閾値を超えているか否かを判定するノード状態判定部と、
    前記ストレージノードの入出力処理が所定の閾値を超え、且つ前記ストレージノードのプロセッサの利用率が所定の閾値を超えていない場合に、前記ストレージノードに対してボリュームを追加する設定を行うボリューム設定部と
    をさらに備える
    請求項5に記載の分散データベースシステム。
  7. 前記ストレージノードの入出力処理が所定の閾値を超えているか否か、及び前記ストレージノードのプロセッサの利用率が所定の閾値を超えているか否かを判定するノード状態判定部と、
    前記ストレージノードの入出力処理が所定の閾値を超えておらず、且つ前記ストレージノードのプロセッサの利用率が所定の閾値を超えている場合に、応答数情報を低下させる応答数調整部と、
    をさらに備える
    請求項5に記載の分散データベースシステム。
  8. 前記ノード計算機同士を接続するクラスタネットワークにおける帯域利用率が所定の閾値を超過しているか否か、前記ストレージノード同士を接続するストレージノードクラスタネットワークにおける帯域利用率が所定の閾値を超過しているか否かを判定する帯域判定部と、
    前記クラスタネットワークにおける帯域利用率が閾値を超過し、且つ前記ストレージノードクラスタネットワークにおける帯域利用率が閾値を超過しない場合に、管理対象データにおける冗長数情報を下げ、前記ストレージノード間で前記管理対象データをミラーリングする設定を行う冗長設定部と、
    をさらに備える
    請求項5に記載の分散データベースシステム。
  9. 前記冗長設定部は、前記冗長数情報が示す数と前記応答数情報が示す数との差の数が2以上である場合に、前記冗長数情報を下げて、前記ストレージノード間で前記管理対象データをミラーリングする設定を行う
    請求項8に記載の分散データベースシステム。
  10. クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムであって、
    前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報と、前記管理対象データの可用性を確保するために前記管理対象データを格納するために必要とされるノード計算機の数を示す冗長数情報とを含む管理情報を記憶する管理情報記憶部と、
    前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機に対して、前記管理対象データを非圧縮で格納させ、前記冗長数情報が示す数と前記応答数情報が示す数との差の数のノード計算機に対して、前記管理対象データを圧縮して格納させる圧縮格納制御部と、
    を備える分散データベースシステム。
  11. クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムによる分散データベース管理方法であって、
    前記記憶装置には、入出力性能の高い第1種記憶装置と、入出力性能の低い第2種記憶装置とがあり、
    前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報を記憶し、
    前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機であって、前記第1種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先として決定し、
    決定された前記ノード計算機に対して、前記管理対象データを格納させる
    分散データベース管理方法。
  12. クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムにおける前記ノード計算機に実行させるための分散データベース管理プログラムであって、
    前記記憶装置には、入出力性能の高い第1種記憶装置と、入出力性能の低い第2種記憶装置とがあり、
    前記ノード計算機には、
    前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報が記憶され、
    前記ノード計算機を
    前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機であって、前記第1種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先として決定する格納先決定部と、
    決定された前記ノード計算機に対して、前記管理対象データを格納させる格納制御部と、して機能させる分散データベース管理プログラム。


JP2018157983A 2018-08-27 2018-08-27 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム Active JP6816072B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018157983A JP6816072B2 (ja) 2018-08-27 2018-08-27 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム
US16/288,490 US11204941B2 (en) 2018-08-27 2019-02-28 Distributed database system, distributed database management method, and distributed database management program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018157983A JP6816072B2 (ja) 2018-08-27 2018-08-27 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム

Publications (2)

Publication Number Publication Date
JP2020034961A JP2020034961A (ja) 2020-03-05
JP6816072B2 true JP6816072B2 (ja) 2021-01-20

Family

ID=69587070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018157983A Active JP6816072B2 (ja) 2018-08-27 2018-08-27 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム

Country Status (2)

Country Link
US (1) US11204941B2 (ja)
JP (1) JP6816072B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11120082B2 (en) 2018-04-18 2021-09-14 Oracle International Corporation Efficient, in-memory, relational representation for heterogeneous graphs
US11687363B2 (en) * 2019-07-15 2023-06-27 Micron Technology, Inc. Internal management traffic regulation for memory sub-systems
KR102476271B1 (ko) * 2020-11-30 2022-12-13 한국전자통신연구원 자율 관리(semi-managed) DHT 구성 방법 및 시스템
CN112860694B (zh) * 2021-02-04 2024-05-17 京东科技控股股份有限公司 业务数据的处理方法、装置及设备
CN113377780A (zh) * 2021-07-07 2021-09-10 杭州网易云音乐科技有限公司 一种数据库分片方法、装置、电子设备和可读存储介质
CN115499449A (zh) * 2022-07-28 2022-12-20 阿里巴巴(中国)有限公司 镜像加速系统、方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8571882B1 (en) * 2006-07-05 2013-10-29 Ronald J. Teitelbaum Peer to peer database
US20080235746A1 (en) * 2007-03-20 2008-09-25 Michael James Peters Methods and apparatus for content delivery and replacement in a network
US9448730B2 (en) * 2009-09-30 2016-09-20 International Business Machines Corporation Method and apparatus for dispersed storage data transfer
US8984027B1 (en) * 2011-07-28 2015-03-17 Symantec Corporation Systems and methods for migrating files to tiered storage systems
WO2013046352A1 (ja) 2011-09-28 2013-04-04 株式会社日立製作所 計算機システム、データ管理方法及びデータ管理プログラム
JP6131907B2 (ja) * 2014-04-24 2017-05-24 カシオ計算機株式会社 分散データベース、データ共有方法、プログラム、装置
US9454306B2 (en) * 2014-09-16 2016-09-27 Netapp, Inc. Capturing demand on storage capacity and performance capability
KR101661930B1 (ko) * 2015-08-03 2016-10-05 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템
US20180260190A1 (en) * 2017-03-10 2018-09-13 Microsoft Technology Licensing, Llc Split and merge graphs

Also Published As

Publication number Publication date
JP2020034961A (ja) 2020-03-05
US20200065316A1 (en) 2020-02-27
US11204941B2 (en) 2021-12-21

Similar Documents

Publication Publication Date Title
JP6816072B2 (ja) 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム
US10496669B2 (en) System and method for augmenting consensus election in a distributed database
US9977746B2 (en) Processing of incoming blocks in deduplicating storage system
US7506101B2 (en) Data migration method and system
WO2018001110A1 (zh) 一种基于纠删码的存储数据重构方法和装置、存储节点
US11119860B2 (en) Data profiler
US9984139B1 (en) Publish session framework for datastore operation records
Niazi et al. Size matters: Improving the performance of small files in hadoop
CN110908589A (zh) 数据文件的处理方法、装置、系统和存储介质
US20180107408A1 (en) Read and Write Load Sharing in a Storage Array Via Partitioned Ownership of Data Blocks
US9262289B2 (en) Storage apparatus and failover method
US10579433B2 (en) Storage system and information management method having a representative node and a plurality of general nodes including a plurality of resources
US20190020716A1 (en) Method and system for recovering data in distributed computing system
CN114253936A (zh) 分布式数据库的缩容方法、装置、设备和介质
WO2017168578A1 (ja) データ処理システム及びデータ処理方法
US10990313B2 (en) Multi-storage node system and capacity management method of multi-storage node system
US11579910B2 (en) Policy enforcement and performance monitoring at sub-LUN granularity
KR101980320B1 (ko) Gpu기반의 빅데이터 검색 질의 병렬 분산처리 방법
US10685046B2 (en) Data processing system and data processing method
CN110674099A (zh) 副本平衡方法、装置、存储介质及电子设备
JP7458610B2 (ja) データベースシステム、及びクエリ実行方法
US20230273728A1 (en) Storage control apparatus and method
US11861423B1 (en) Accelerating artificial intelligence (‘AI’) workflows
US20210223966A1 (en) Storage system and control method of storage system
Weng et al. The Integration of Shared Storages with the CephFS and Rados Gateway for Big Data Accessing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201223

R150 Certificate of patent or registration of utility model

Ref document number: 6816072

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150