JP6406254B2 - ストレージ装置、データアクセス方法およびデータアクセスプログラム - Google Patents

ストレージ装置、データアクセス方法およびデータアクセスプログラム Download PDF

Info

Publication number
JP6406254B2
JP6406254B2 JP2015529343A JP2015529343A JP6406254B2 JP 6406254 B2 JP6406254 B2 JP 6406254B2 JP 2015529343 A JP2015529343 A JP 2015529343A JP 2015529343 A JP2015529343 A JP 2015529343A JP 6406254 B2 JP6406254 B2 JP 6406254B2
Authority
JP
Japan
Prior art keywords
data
access
access request
unit
storage
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
JP2015529343A
Other languages
English (en)
Other versions
JPWO2015015727A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2015015727A1 publication Critical patent/JPWO2015015727A1/ja
Application granted granted Critical
Publication of JP6406254B2 publication Critical patent/JP6406254B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、分散データ記憶配信システム、ストレージ装置、データ分散方法、分割データ管理装置、ホスト端末、およびデータ分散用プログラムに関し、特に、地理的に離れた複数の情報源から発生するデータを、複数の記憶装置に分散させて格納する技術に関する。
センサやユーザ端末などの地理的に離れた複数の端末から、時々刻々と発生するデータを収集し、インターネットなどの広域ネットワークを介してデータセンタに転送し、データセンタ内の計算機群にデータを格納すると共に、格納したデータを処理するシステムが知られている。
センサからの情報として、GPS(Global Positioning System)を用いた位置情報、温度計による温度情報、加速度センサによる加速度や速度、スマートメータによる電力消費量などの数値データなどが考えられる。あるいは、マイクによって取得された音声情報、カメラによって取得された静止画、動画像ストリームなどの複雑なバイナリデータなども考えられる。
また、ユーザ端末からの情報としては、マイクロブログサービスへの投稿、電話の呼情報のログ等の情報が考えられる。
インターネットを介して接続された計算機リソースを利用してデータを処理するクラウドコンピューティングの普及に伴い、上記のデータはインターネット、公衆無線網などを通じて、地理的に離れたデータセンタに集約されるようになってきている。収集されたデータ(以降、「収集データ」と称する)をデータセンタのシステムに送信するためには、データセンタのシステムの入り口に設けられたゲートウェイサーバ(またはアプリケーションサーバ)に対してデータを送信する必要がある。以下では、データセンタの入り口に設けられたゲートウェイサーバ(またはアプリケーションサーバ)を、「ストレージクライアント」と呼ぶ。
データセンタ内のネットワークに到達した収集データは、ストレージクライアントによって受け取られ、加工されるとともに、ストレージシステムに格納されることにより永続化され、分析などの用途に供される。ここで、「データの永続化」とは、データが消えることなく存続するように保持することをいう。永続化の一例は、システムにおいて規定された冗長性を満たすだけの複製や符号などを不揮発性記憶媒体に格納することである。
ストレージシステムは、データを保持するとともに、保持するデータを提供するシステムである。具体的には、ストレージシステムは、データの一部に対するCREATE(INSERT)、READ、WRITE(UPDATE)、DELETEなどの基本機能(アクセス)を提供する。また、ストレージシステムは、権限管理、データ構造化整理などの多様な機能を提供することもある。
分散ストレージシステムは、通信ネットワーク、インターコネクトを介して接続された多数の計算機を有し、これらの計算機が備える記憶装置を用いてストレージシステムを実現する。
分散ストレージシステムにおいては、データは複数のストレージノードに分散して格納されている。したがって、ストレージクライアントがデータにアクセスする場合には、データを保持しているストレージノードを把握する必要がある。また、アクセス対象のデータを保持するストレージノードが複数存在する場合には、ストレージクライアントは、いずれのストレージノードにアクセスすべきかを把握する必要がある。
格納されるデータは、ある意味をなす単位でアクセスされる。例えば、関係データベースでは、データはレコードまたはタプルと呼ばれる単位で書き込まれる。また、ファイルシステムでは、データはブロックの集合として書き込まれる。さらに、キーバリューストアでは、データはオブジェクトとして書き込まれる。こうして書き込まれたデータは、その単位ごとにユーザ計算機により読み込まれる。以下では、このデータ単位を「データオブジェクト」と呼ぶ。
記憶装置として、通常は、ハードディスクドライブ(HDD:Hard Disk Drive)や磁気テープが用いられてきた。近年では、HDDに加え、より高速な読み書きが可能なフラッシュメモリなどの不揮発性半導体メモリを利用した、ソリッドステートドライブ(SSD:Solid State Drive)を利用する場合も多い。また、分散ストレージシステムは、複数のストレージノードに複製を保持することにより、揮発性の記憶装置も利用できる。
例えば、計算機の主記憶装置として用いられているDRAM(Dynamic Random Access Memory)を利用した、SSDよりもさらに高速な読み書きが可能な「インメモリストレージ」を利用する例も増えている。特に、上述したセンサからの情報を格納したり利用したりする際は、各データオブジェクトのサイズは数十バイトから数百バイトと小さいので、通常HDDで使われてきた4KByte単位のアクセスでは非効率である。そこで、インメモリストレージの利用が好適である。
インメモリストレージの場合、データの格納、取得、走査、特定のために、ストレージノードのCPU(Central Processing Unit)が、当該ストレージノードの主記憶内のデータを閲覧したり処理したりする。
DRAMへのアクセス速度は、一般に、CPUの動作クロックより数百倍低速である。よって、CPUは、より高速かつ低レイテンシ(すなわち、データ転送などが要求されてからその結果が返送されるまでの時間が短い)であるアクセスが可能なSRAM(Static Random Access Memory)などにより構成されるキャッシュメモリを有する。
また、近年の計算機は、複数のCPUを搭載したマルチコア構成を有することが多い。この場合、キャッシュメモリは多段階構成を有し、複数コアにより共有される、比較的アクセスレイテンシの長いキャッシュが利用される。あるいは、各コアに保持されコア間で一貫性管理されるレイテンシの短いキャッシュ、またはCPUとほぼ等速で動作する1次キャッシュなども利用される。
さらに、CPUは、主記憶を効率よく扱うため、MMU(Memory Management Unit)と呼ばれる機能を有する場合がある。計算機において動作するプログラムからのアクセスは、そのプログラム(あるいはプロセス)ごとに閉じた、一連のメモリアドレス空間(仮想メモリ空間)を利用する。
各プロセスの主記憶へのアクセスは、仮想メモリ空間のアドレス(論理アドレス)によって指定され、この論理アドレスは、論理−物理アドレス変換機能(論物変換)によって物理的なメモリユニットのアドレス(物理アドレス)に変換される。この論理−物理アドレス変換は、OS(Operating System)ソフトウェアに実装されるが、ソフトウェアのみによる実現による場合、動作が遅いという問題がある。そこで、MMUが論理−物理アドレス変換の一部を実施する。MMUは、TLB(Translation Look−aside Buffer)と呼ばれる少量のキャッシュメモリを搭載し、よく使われる論物変換用データをTLBに記録することによりに、高速に論物変換することができる。
近年、インメモリストレージとして主記憶に格納可能なデータ量、つまり各計算機が搭載するメモリ量は増加しており、また、CPUはDRAMよりも高速化している。よって、主記憶をインメモリストレージとして使う際のキャッシュミスやTLBミスに起因するアクセス時間の長大化(ペナルティ)が性能上問題となることが知られている。ここで、キャッシュミスとは、キャッシュメモリに、必要なデータが存在しなかったときのDRAMアクセスである。また、TLBミスとは、MMUのTLBに、必要なデータアクセスのための論物変換情報が存在しなかったときのDRAMアクセスである。
例えば、非特許文献2には、キャッシュミスやTLBミスのペナルティを考慮したメモリの索引構造が提案されている。
また、インメモリストレージにおける性能上の別の問題として、処理スレッドのコンテキストスイッチの発生が挙げられる。近年の計算機は、複数のCPUを搭載したマルチコア構成を有し、このコアによる処理を活用するために、処理は複数のスレッドと呼ばれる処理単位に分割されることが好ましい。
このスレッドの数は、コアと同数であればコアのコンテキストスイッチは発生しないが、当該スレッドの数は、一般にはコア数よりもずっと多い。これは、プログラムの簡便化(設計の容易化)、キャッシュミス時のコア遊休リソースの隠ぺい、多種多様なハードウエアにおいて同じソフトウェアを使いまわす、などの理由による。
この結果、ひとつのコアにおいて複数のスレッドが、利用するレジスタセットを交互に入れ替えながら動作するコンテキストスイッチが発生する。このコンテキストスイッチの性能への影響は小さくない。例えば、非特許文献1には、このコンテキストスイッチの影響を鑑みたOLTP(On−Line Transaction Processing)向けのスレッド割り当てに関する技術が開示されている。
ストリームデータを、オブジェクトを時系列に並べたリストとしたとき、ひとつのオブジェクトは、一意の主キー(primary key)と、1または2以上のプロパティ(metadata1, metadata2,・・・)とを含む。例えば、主キーに加えて2個のプロパティ(name1, name2)の値を含むストリームデータは、{key: hogehoge, name1: value1, name2: value2}という構成を有する。
新しくセンサにより取得されたデータは、上記一塊のデータとして格納される。データを利用する際、key値を指定するか、プロパティのひとつ以上の値や範囲を指定することにより、ひとつ以上のオブジェクトを特定することができる。
利用するデータを特定する動作を高速化するため、格納するデータに、索引構造あるいはインデックスを作成する技術が知られている。索引構造としては、高速な範囲検索や特定が可能なB+−Treeと呼ばれる木構造が知られている。あるいは、非特許文献3に記載のように、インメモリストレージでは、よりメモリアクセスに適したT−Treeなどの構造も知られている。
Robert Kallman, Hideaki Kimura, Jonathan Natkins, Andrew Pavlo, Alexander Rasin, Stanley Zdonik, Evan P. C. Jones, Samuel Madden, Michael Stonebraker, Yang Zhang, John Hugg, and Daniel J. Abadi 著, "H-store: a high-performance, distributed main memory transaction processing system", Proc. VLDB Endow. 1, 2巻 (2008年8月), pp. 1496-1499. Changkyu Kim, Jatin Chhugani, Nadathur Satish, Eric Sedlar, Anthony D. Nguyen, Tim Kaldewey, Victor W. Lee, Scott A. Brandt, and Pradeep Dubey 著,"FAST: fast architecture sensitive tree search on modern CPUs and GPUs", Proceedings of the 2010 ACM SIGMOD International Conference on Management of data (SIGMOD '10), ACM, New York, pp. 339-350. T.J.Lehman 著, "A Study of Index Structures for Main Memory Database Management Systems", Proceedings of the Twelfth International Conference on Very Large Data Bases, 1986年, pp. 294 - 303.
インメモリストレージを使用してデータを保存する分散ストレージに、ストリームデータを格納することを考える。センサごとに、ストリームデータの発生頻度や、そのデータに対する利用頻度に差がある場合、データ利用の局所性が発生するので、キャッシュメモリの高速化が寄与する。しかしながら、近年利用されるシステムでは、発生頻度の偏りの少ないストリームに対し、偏りの少ない(局所性の少ない)データ利用のためのアクセス要求(以降、「データ利用アクセス」と称する)が発生するような用途も考えられるようになってきた。例えば、このようなシステムには、監視カメラ等により取得されたすべての映像データをストリームデータとして格納すると共に、そのすべてのデータを顔画像認識のために利用するシステムが考えられる。
このようなシステムにおいて、データ利用アクセスによりインデックス構造を用いてストリームデータにアクセスした場合、格納されているすべてのデータに満遍なくアクセスされるので、キャッシュミスとTLBミスが高頻度で発生する。このキャッシュミスとTLBミスは、インメモリストレージのアクセス性能を低下させる。
特に、近年では、直近数秒間に生じたデータを特定した大量のデータ利用アクセスが発生する利用環境も考えられる。例えば、直近1秒間に生じた百万件のオブジェクトに対し、秒間1億件のデータ利用アクセスが生じる場合、上述のキャッシュミスとTLBミスによるアクセス性能低下の影響が大きくなる。
また、分散ストレージシステムでは、データをある条件に従って分散して格納する。例えば、主キー値の範囲やハッシュ値に従って、格納するノードを決定する手法が用いられる。この場合、主キー以外のデータを特定するには、所望のデータが全てのノードに格納されている可能性があるため、全てのノードにデータ利用アクセスを発行しなければならない。したがって、各ストレージノードに対するデータ利用アクセスの数が飛躍的に増大するので、上記と同様にキャッシュミスによるアクセス性能低下の影響が大きくなる。
一方で、上述のような大量のデータ利用アクセスが発生するようなデータ利用は、金融機関や企業内で用いられている分散ストレージシステムと違い、より大きなアクセス遅延時間も許容されるという特徴がある。公衆無線回線の遅延時間は数十ミリ秒と大きいので、そのような公衆無線回線を介した通信を行う分散ストレージシステムが必ずしもマイクロ秒オーダーでデータ提供を行わなかったとしても、性能への影響は少ない。上記のようなデータ利用環境では、レスポンスよりも、秒間にいくつのアクセスに対応できるかというスループット性能が重視される。
このように、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供が望まれるが、上記非特許文献1ないし3には、そのような技術は開示されていない。
本願発明は、上記課題を鑑みてなされたものであり、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるストレージ装置、データアクセス方法およびプログラム記録媒体を提供することを主要な目的とする。
本発明の一態様におけるストレージ装置は、ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納部と、前記データ格納部に格納されるデータに対するアクセス要求を蓄積するアクセス要求蓄積部と、前記アクセス要求蓄積部に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納部に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査するデータ走査部と、前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積部から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信するアクセス検索部とを備える。
本発明の一態様におけるデータアクセス方法は、ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納部に格納されるデータに対するアクセス要求をアクセス要求蓄積部に蓄積し、前記アクセス要求蓄積部に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納部に含まれる前記メインメモリに格納されているデータを、データ走査部により前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査し、前記走査によって特定されたデータに対するアクセス要求を、アクセス検索部により、前記アクセス要求蓄積部から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する。
なお同目的は、上記の各構成を有するストレージ装置またはデータアクセス方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記録媒体によっても達成される。
本願発明によれば、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるという効果が得られる。
本発明の第1の実施形態に係る分散ストレージシステムの構成を示すブロック図である。 本発明の第1の実施形態に係るストレージノードの構成を示すブロック図である。 本発明の第1の実施形態に係るストレージノードの動作を説明するフローチャートである。 本発明の第1の実施形態に係るデータ格納部のデータ格納例を示す図である。 本発明の第2の実施形態に係るストレージノードの構成を示すブロック図である。 本発明の第3の実施形態に係るストレージノードの構成を示すブロック図である。 本発明の第4の実施形態に係るストレージノードの構成を示すブロック図である。 本発明の第5の実施形態に係るストレージノードの構成を示すブロック図である。 本発明の第1の実施形態に係るストレージノードのハードウエア構成を示す図である。
以下、本発明の実施形態について図面を参照して詳細に説明する。
第1の実施形態
図1は、本発明の第1の実施形態に係る分散ストレージシステム100の構成を示すブロック図である。図1に示すように、分散ストレージシステム100は、内部ネットワーク300を介して互いに通信可能なデバイス200と分散ストレージ装置400を備える。
デバイス200は、例えばGPS、加速度センサ、カメラ等を搭載するデバイスであり、位置情報、加速度、画像データ等を取得すると共に、それらを内部ネットワーク300を介して分散ストレージ装置400に送信する。
内部ネットワーク300は、例えば、Ethernet(登録商標)、Fibre ChannelやFCoE(Fibre Channel over Ethernet(登録商標))、InfiniBand、QsNet、Myrinet、Ethernet、PCI Express、Thunderbolt、または、これらを利用するTCP/IP(Transmission Control Protocol/Internet Protocol)、RDMA(Remote Direct Memory Access)などの上位プロトコルにより実現される。
分散ストレージ装置400は、複数のストレージノード40を含む。ストレージノード40は、内部ネットワーク300を介してストリームデータを送受信するデータ送受信部41と、受信したストリームデータを格納するデータ格納部42を備える。
なお、分散ストレージ装置400は、デバイス200から送信されたストリームデータを自装置400が受信することに限定されず、図示しないコンピュータが当該ストリームデータを受信し、そのコンピュータからストリームデータを受け取ってもよい。
ストレージノード40は、内部ネットワーク300を介して互いにストリームデータを送受信する。他のストレージノード40にアクセスするストレージノード40は、クライアント端末となる。クライアント端末は、自ノードとは別のコンピュータ、または当該コンピュータで動作するソフトウェア・インスタンス(プロセス、スレッド、ファイバ等)であってもよい。また、クライアント端末は、ストレージノード40や、分散ストレージ装置400を構成する他の装置で動作するソフトウェア・インスタンスであってもよい。また、1つ以上の計算機で動作する複数のソフトウェアを、仮想的に1つのクライアント端末とみなしてもよい。
かかる分散ストレージ装置400によれば、クライアント端末は、デバイス200から送信されたストリームデータを分散して蓄積する複数のストレージノード40のそれぞれから、ストリームデータを取得することができる。
図2は、本発明の第1の実施形態に係るストレージノード40の構成を示すブロック図である。図2に示すように、ストレージノード40は、データ送受信部41、データ格納部42、制御部43、データ利用アクセスバッファ44、データ走査部45、データ取得部46およびデータ検索部47を備える。データ格納部42は、メインメモリ42aとキャッシュメモリ42bを備える。
データ利用のためのアクセス要求(リードアクセス)を「データ利用アクセス」、データ格納のためのアクセス要求(ライトアクセス)を「データ格納アクセス」と称する。ストレージノード40に対して、データ利用アクセスまたはデータ格納アクセスを送信する端末を、クライアント端末40aと称する。ストレージノード40は、クライアント端末40aからアクセス要求を受信すると、当該要求に応じた処理を行うと共に、クライアント端末40aに返答を返信する。
ここで、ストレージノード40は、データ格納アクセスに対して、格納の成否を含む返答を返信してもよい。また、ストレージノード40は、データ利用アクセスに対して、アクセス要求された条件に合致するデータが存在したか否かを含む返答を返信してもよい。また、ストレージノード40は、データ利用アクセスに対して、該当するデータが存在する場合はそのデータの一部または全部を含む返答を返信してもよいし、データの一部または全部の代わりに、当該データを取得するのに必要なハンドル情報を含む返答を返信してもよい。
返答にハンドル情報が含まれる場合、クライアント端末40aは、当該ハンドル情報を利用してストレージノード40あるいは別のストレージノードあるいは別の情報システムからデータを取得できる。
図2に示すストレージノード40の各構成要素の概要を説明する。データ送受信部41は、クライアント端末40aとの間でストリームデータやアクセス要求の送受信を行う。データ格納部42は、データ送受信部41を介して受信したストリームデータを格納する。
制御部43は、データ送受信部41が受信したアクセス要求の種類に基づいて、ストリームデータをデータ格納部42に格納したり、アクセス要求をデータ利用アクセスバッファ44に格納したりする。
データ利用アクセスバッファ44は、制御部43から取得したデータ利用アクセスを蓄積する。データ走査部45は、データ利用アクセスバッファ44に格納されたデータ利用アクセスに基づいて、データ格納部42に格納されるストリームデータを走査する。データ取得部46は、データ走査部45が走査したストリームデータを取得する。データ検索部47は、データ取得部46が取得したストリームデータに対応するデータ利用アクセスを、データ利用アクセスバッファ44を検索することにより読み出す。
図3は、ストレージノード40の動作を説明するフローチャートである。図3を参照して、ストレージノード40の動作の詳細について説明する。
データ送受信部41は、クライアント端末40aからアクセス要求を受信すると、制御部43にそのアクセス要求を通知する。制御部43は、受け取ったアクセス要求の種類を判定する(ステップS101)。アクセス要求がデータ格納アクセスである場合(ステップS102)、制御部43は、データ格納アクセスと共に取得しているストリームデータ(以降、単に「データ」とも称する)を、データ格納部42に格納する(ステップS103)。
このとき、制御部43は、ストリームデータをデータ格納部42に物理的に格納すると共に、そのストリームデータの永続化処理を行ってもよい。すなわち、制御部43は、ストリームデータの複製を作成し、それを格納したり、誤り訂正符号を計算してストリームデータに付加したりする等してもよい。また、制御部43は、ストリームデータ自体だけではなくデータを管理する構造体データの変更をしてもよい。
制御部43は、ストリームデータを格納した後、クライアント端末40aに適切な返答を行う(ステップS104)。適切な返答とは、ストリームデータが正常にデータ格納部42に格納された旨を示す情報を含む。当該返答は、データ格納前になされてもよいし、データ格納後になされてもよい。データ格納前に返答することが許される場合、ストレージノード40はより高速な構成となる。データ格納後に返却することが許される場合、ストレージノード40はより障害に強い構成となる。
一方、上記アクセス要求がデータ利用アクセスである場合、制御部43は、当該アクセス要求をデータ利用アクセスバッファ44に格納する(ステップS105)。
データ利用アクセスは、データ特定条件を含む。データ特定条件とは、ストリームデータのキー値、または当該ストリームデータを構成する部分の特定の値、または特定の値の範囲を含むか含まない等の条件である。
例えば、ストリームデータが、{key: hogehoge, name1: value1, name2: value2}と構成されていたときのデータ特定条件は、「"key"が"hogehoge"であること」、または「"name1"が"value0"から"valu2"の間であること」等である。ただし、本願の本実施形態を例に説明する本発明におけるデータ特定条件は、上記に限定されない。
制御部43は、所定のアクセストリガーコンディションが満たされるまで、受け取ったデータ利用アクセスをデータ利用アクセスバッファ44に格納する(ステップS106)。ここで、アクセストリガーコンディションとは、例えば、データ利用アクセスバッファ44に格納されたアクセス要求の数が一定数以上となった場合でもよい。あるいは、アクセストリガーコンディションは、データ利用アクセスバッファ44に格納されたアクセス要求の量が一定量以上となった場合でもよい。あるいは、アクセストリガーコンディションは、データ利用アクセスバッファ44に格納される最も古いデータ利用アクセスの発行時刻から所定の時間経過した場合でもよい。あるいは、アクセストリガーコンディションは、上記の例を組み合わせた場合でもよい。ただし、本願の本実施形態を例に説明する本発明におけるアクセストリガーコンディションは、上記に限定されない。
所定のアクセストリガーコンディションが満たされた場合、制御部43は、データ走査部45にストリームデータの走査を指示する。データ走査部45は、上記指示に応じて、データ利用アクセスバッファ44に格納されるアクセス要求を参照して、データ格納部42に格納されているデータを順に走査する(ステップS107)。走査する順は、データ格納部42から、より高速にアクセスできる方式であることが望ましい。
走査とは、具体的には、メインメモリ42aに格納されるデータを読み出して、キャッシュメモリ42bに書き込むと共に、キャッシュメモリ42bにおいて、書き込まれたデータを順に特定することである。
例えば、データ走査部45は、データ格納部42のメインメモリ42aのメモリアドレス順に全データを走査してもよい。あるいは、データ走査部45は、まず、キャッシュメモリ42bに格納されるデータに先に走査し、その後、未走査のデータを走査してもよい(詳細は後述する)。
なお、走査対象となるデータは、データ格納部42に格納される、予め定められた必要なデータ全てが対象となる。必要なデータとは、例えば、格納されている全データ、格納されているデータのうち前回走査後に更新されたデータ、あるいは、格納されているデータのうち直近1秒以内に更新されたデータ等である。
上記のように、データ走査部45は特定したデータを、順にデータ取得部46に送る(ステップS108)。ここで、データ走査部45は、特定したデータをすべてデータ取得部46に送ってもよいし、データアクセスに必要な一部のデータのみを送ってもよい。
上記データは、データ取得部46からデータ検索部47に送られる。データ検索部47は、データを受け取ると、当該データに対するアクセス要求(データ利用アクセス)を、データ利用アクセスバッファ44から読み出す(ステップS109)。当該データに対するアクセス要求が存在する場合(ステップS110)、データ検索部47は、アクセス要求の返答領域に、データ取得部46から取得したデータ、または当該データの一部、または当該データを特定するためのハンドル情報を挿入する(ステップS111)。
例えば、データ利用アクセスバッファ44に格納されるアクセス要求”X”に含まれるデータ特定条件が、「"key"が"hogehoge"である」とする。この場合、データ走査部45により、"key=hogehoge"となるデータ”P”が特定され、データ”P”を取得したデータ検索部47は、データ”P”をアクセス要求”X”の返答領域に格納する。
また、例えば、データ利用アクセスバッファ44に格納されるアクセス要求”Y”に含まれるデータ特定条件が、「"key"が"hogehoge"であるデータの"name1"」とする。この場合、データ走査部45により、"key=hogehoge"となるデータ”P”が特定され、データ”P”を取得したデータ検索部47は、データPの"name1"をアクセス要求”Y”の返答領域に格納する。
データ検索部47は、返答領域にデータを挿入したアクセス要求を制御部43に送る。制御部43は、データ走査部45から必要なデータをすべて走査した旨の通知を受けると(ステップS112)、データ利用アクセスバッファ44に格納される情報に基づいて、データ送受信部41を介してクライアント端末40aに、アクセス要求への返答をする(ステップS113)。そして、制御部43は、返答済みのアクセス要求をデータ利用アクセスバッファ44から削除する(ステップS114)。
以上の動作により、ストレージノード40は、データ利用アクセスをデータ利用アクセスバッファ44に蓄積し、アクセストリガーコンディションが満たされると、データ格納部42に格納されているデータを順に走査する。この動作により、ストレージノード40は、他の端末からデータ利用アクセスを受信した際に、適切なデータの返信を行うことができる。
ここで、上述のようにデータ格納部42を走査する場合のキャッシュのヒット率について説明する。例えば、図4に示すように、データ格納部42が備えるメインメモリ42aに、データ”A”−”L”が格納されており、キャッシュメモリ42bにデータ”E”−”H”が格納されているとする。データは、ブロックごとに格納され、キャッシュサイズは1ブロックとする。
例えば、データ利用アクセスが、データ”C”、”G”、”L”、”D”に対して順に送られ、データ利用アクセスバッファ44にそれらが蓄積されたときに、アクセストリガーコンディションが満たされた(図3のステップS106においてYES)場合について説明する。データ走査部45は、データ格納部42のメインメモリ42aのメモリアドレスの順に全データを走査する。すなわち、まず、データ走査部45は、メインメモリ42aのブロック1を読み出してキャッシュメモリ42bに書き込み、キャッシュメモリ42bを走査する(この走査を、「第1の走査」と称する)。第1の走査の結果、データ”A”、”B”、”C”、”D”が特定される。続いて、データ走査部45は、メインメモリ42aのブロック2を読み出してキャッシュメモリ42bに書き込み、キャッシュメモリ42bを走査する(この走査を、「第2の走査」と称する)。第2の走査の結果、データ”E”、”F”、”G”、”H”が特定される。続いて、データ走査部45は、メインメモリ42aのブロック3を読み出してキャッシュメモリ42bに書き込み、キャッシュメモリ42bを走査する(この走査を、「第3の走査」と称する)。第3の走査の結果、データ”I”、”J”、”K”、”L”が特定される。
第1の走査において、データAに対するアクセスはミス(キャッシュミス)するが、ブロック1がキャッシュメモリ42bに格納されることによりブロック1のデータのうち、”B”、”C”、”D”はキャッシュメモリ42bから読み出すことができる(キャッシュヒット)。同様に、第2の走査において、データEに対するアクセスはキャッシュミスするが、ブロック2がキャッシュメモリ42bに格納されることによりブロック2のデータのうち、”F”、”G”、”H”はキャッシュヒットする。同様に、第3の走査において、データIに対するアクセスはキャッシュミスするが、ブロック3がキャッシュメモリ42bに格納されることによりブロック3のデータのうち、”J”、”K”、”L”はキャッシュヒットする。
すなわち、上記の、データ利用アクセスに対するキャッシュミス/キャッシュヒットの結果は、A(miss)B(hit)C(hit)D(hit)E(miss)F(hit)G(hit)H(hit)I(miss)J(hit)K(hit)L(hit)となる。ここで、A(miss)は、データAに対するアクセスがミスしたこと(キャッシュミス)を示し、B(hit)は、データBをキャッシュメモリ42bから読み出しできたこと(キャッシュヒット)を示す。このように走査されたすべてのデータのうち、データC、G、L、Dが上記アクセス要求の対象となる。この例では、キャッシュミスは、3回発生する。
一方、データ走査部45は、メインメモリ42aの全データを走査するのではなく、アクセス要求を受信するごとにデータC、G、L、Dにアクセスするとした場合、そのアクセス結果は、図4に示す例の場合、C(miss)G(miss)L(miss)D(miss)となる。すなわち、この場合、キャッシュミスは4回発生する。
このように、例えば、N回のデータ利用アクセスを処理する場合、通常技術では最悪の場合N回のキャッシュミスとN回のTLBミスが発生する。一方、本第1の実施形態では、データ格納部42のキャッシュメモリ42bが1ページに100個のオブジェクトを格納できた場合、最悪でもN/100回のキャッシュミスでデータを取得することができるので、キャッシュのヒット率を向上することができる。
以上のように、本第1の実施形態によれば、制御部43は、受信したアクセス要求をデータ利用アクセスバッファ44に蓄積し、アクセストリガーコンディションが満たされたら、データ走査部45は、データ格納部42の全データを順に走査する。データ検索部47は、走査により特定されたデータに対するアクセス要求を、データ利用アクセスバッファ44から読み出す。制御部43は、読み出したアクセス要求に当該データに関する情報を挿入して、クライアント端末40aに返答する。
この構成により、本第1の実施形態によれば、データ利用アクセスの実行が、データ格納部42に対しシーケンシャルとなり、時間当たりアクセス数に対するキャッシュミスやTLBミスの回数を減らすことができるので、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるという効果が得られる。
第2の実施形態
図5は、本発明の第2の実施形態に係るストレージノード50の構成を示すブロック図である。図5に示すように、ストレージノード50は、第1の実施形態に係るストレージノード40に加えて、データ分解部51を備える。
データ分解部51は、制御部43から送られるストリームデータを、複数の断片に分解すると共に、分解した状態でデータ格納部42に格納する。
データ分解部51がデータ格納部42にデータを格納する手法の一例として、列指向形式(Column−oriented)と呼ばれる手法が考えられる。
例えば、データ分解部51は、3つのデータ、すなわち、
・{key: "key1", uid:"101", temp: 3},
・{key: "key2", uid:"102", temp: 10},
・{key: "key3", uid:"103", temp: 1},
を、列指向形式で格納する場合、以下のように各データを分解した状態で格納する。すなわち、データ分解部51は、
・memory-area1{ "key1", "key2", "key3",...},
・memory-area2{ "101", "102", "103",...},
・memory-area3{ 3, 10, 1,...},
のように各データを格納する。ここで、上記格納形式は一例であり、本願の本実施形態を例に説明する本発明における格納形式は、上記に限定されない。
上記のように格納すると、例えば、すべてのデータに関して"uid"値のみにアクセスしたい場合、"key"値や"temp"値等をメモリやCPUレジスタに書き込むことなくアクセスすることができる。これにより、高速にアクセスできることが知られている。一方で、列指向形式に基づいてデータを格納する場合、必要でなくても他のデータの同じプロパティの内容も読み出してしまうので、非効率的な面もある。
そこで、本発明の第2の実施形態に係るストレージノード50により、データ格納をさらに効率化することにより、データ利用アクセスをさらに高速化する。
すなわち、データ分解部51は、制御部43から取得したデータを列指向形式でデータ格納部42に格納する。データ走査部45は、データ格納部42に格納されるデータのうち、データ特定条件に含まれるプロパティ部分のみを走査する。他の構成要素については、第1の実施形態で説明した動作と同様に動作するので、その説明を省略する。
このように、本第2の実施形態では、データ分解部51はデータ格納部42にデータを分解した状態で格納し、データ走査部45はデータ特定条件に含まれるプロパティ部分のみを走査するので、時間当たりアクセス数に対するキャッシュミスの回数をさらに減らすことができる。
例えば、N回のデータ利用アクセスを処理する場合、第1の実施形態で説明した構成では、最悪の場合N/100回のキャッシュミスとN回のTLBミスが発生する。一方、本第2の実施形態によれば、例えばアクセス対象のプロパティの容量がデータオブジェクト全体に占める容量の10%である場合、最悪でもN/1000回のキャッシュミスおよびTLBミスでデータを取得することができる。
以上のように、第2の実施形態によれば、データ分解部51は、制御部43から取得したデータを、例えば列指向形式に基づいて分解した状態でデータ格納部42に格納する。データ走査部45は、データ格納部42に格納されるデータのうち、データ特定条件に含まれるプロパティ部分のみを走査する。この構成により、時間当たりアクセス数に対するキャッシュミスやTLBミスの回数をさらに減らすことができるという効果が得られる。
第3の実施形態
図6は、本発明の第3の実施形態に係るストレージノード60の構成を示すブロック図である。図6に示すように、ストレージノード60は、第1の実施形態に係るストレージノード40と比較して、制御部61がアクセス仕分部62を備え、データ利用アクセスバッファ63が第1のバッファ63aと第2のバッファ63bを備える構成が異なる。その他の構成は、第1の実施形態に係るストレージノード40と同様である。
制御部61は、データ送受信部41からアクセス要求を受け取ると共に、当該アクセス要求がデータ利用アクセスであると判定すると、アクセス仕分部62において、アクセスバッファ条件にしたがって当該アクセス要求を仕分けする。アクセス仕分部62は、仕分けにしたがって当該アクセス要求を、第1のバッファ63aと第2のバッファ63bのいずれか一方、または両方に格納する。
アクセスバッファ条件とは、例えば、データ利用アクセスがデータ特定に利用するプロパティごとに、アクセス要求を仕分けする条件である。例えば、データ{key: hogehoge, name1: value1, name2: value2}に対するデータ特定条件が、"key"を対象とするアクセス要求を第1のバッファ63aに格納し、"name1"を対象とするアクセス要求を第2のバッファ63bに格納する、という条件である。
この場合、データ検索部47は、図3のS109におけるバッファからのアクセス要求の読み出しにおいて、データの"key"部分を第1のバッファ63aの検索に、"name1"部分を第2のバッファ63bの検索に利用する。
すなわち、データ検索部47は、データ取得部46から受け取った特定されたデータを、必要に応じてアクセスバッファ条件に基づいて分解し(この場合は、データを"key"部分と"name1"部分とに分解し)、データの"key"部分を第1のバッファ63aの検索に、"name1"部分を第2のバッファ63bの検索に利用する。
また、ストレージノード60は、第2の実施形態において説明したように、データ分解部51を備え、データ格納部42はデータを分解した状態で格納してもよい。この場合、データ走査部45は、データ格納部42の、"key"部分を格納する領域と、"name"部分を格納する領域とを、平行して走査する。データ検索部47は、データ走査部45から受け取った特定されたデータに関して、データの"key"部分を第1のバッファ63aの検索に、"name1"部分を第2のバッファ63bの検索に利用する。このような構成を採用することにより、ストレージノード60はさらに高速化される。
さらに、アクセスバッファ条件の別の例として、データの一部の値の範囲に応じてアクセス要求を仕分けする条件が考えられる。例えば、データ{key: hogehoge, name1: value1, name2: value2}に対するデータ特定条件が、"key"の頭文字が”a”であるデータを対象にしたアクセス要求を第1のバッファ63aに格納し、"key"の頭文字が”b”であるデータを対象にしたアクセス要求を第2のバッファ63bに格納する。
以上のように、第3の実施形態によれば、アクセス仕分部62は、アクセス要求をアクセスバッファ条件にしたがって仕分けすると共に、第1のバッファ63aと第2のバッファ63bのいずれか一方、または両方に格納する。データ検索部47は、データ取得部46から受け取ったデータに対するアクセスを、アクセスバッファ条件に基づいて第1のバッファ63aと第2のバッファ63bとを並行して検索する。このような構成を採用することにより、データ利用アクセスバッファ63を効率よく利用できるので、ストレージノード60はさらに高速化されるという効果が得られる。
また、ストレージノード60のプロセッサが複数のマルチコアであり、それぞれのコアが独自のキャッシュメモリを保持する場合、複数のアクセスバッファ手段を異なるコアのキャッシュにそれぞれ配置してもよい。この構成により、さらにキャッシュ利用効率を向上し、システムスループットを向上することができる。
第4の実施形態
図7は、本発明の第4の実施形態に係るストレージノード70の構成を示すブロック図である。図7に示すように、ストレージノード70は、第1の実施形態に係るストレージノード40と比較して、制御部71がアクセス圧縮部72を備える構成が異なり、その他の構成は、第1の実施形態に係るストレージノード40と同様である。
制御部71は、データ送受信部41からアクセス要求を受け取ると共に、当該アクセス要求がデータ利用アクセスであると判定すると、アクセス圧縮部72において、データを圧縮する。すなわち、アクセス圧縮部72は、データ利用アクセスから、データを特定できる最低限の情報(アクセス特定情報)を抽出する。例えば、アクセス圧縮部72は、数ビットのデータアクセス識別子と数ビットのデータ特定条件の組を抽出する。これにより、ストレージノード70は、2バイト程度の情報に基づいて1アクセスを実行することができる。
アクセス圧縮部72は、データ利用アクセスバッファ44に、アクセス特定情報とアクセス全体を表す情報とを別領域に格納する。データ検索部47は、図3のステップS109において、データ利用アクセスバッファ44に格納されるアクセス特定情報のみを検索することにより、特定されたデータに対応するアクセス要求を読み出す。
以上のように、第4の実施形態によれば、アクセス圧縮部72は、データ利用アクセスからアクセス特定情報を抽出すると共に、当該アクセス特定情報をデータ利用アクセスバッファ44に格納する。データ検索部47は、データ利用アクセスバッファ44からアクセス特定情報を検索することにより、特定されたデータに対応するアクセス要求を読み出す。この構成により、データ検索部47は、アクセス特定情報を格納するデータ利用アクセスバッファ44の領域のみを検索するので、データ利用アクセスをより高速化できるという効果が得られる。
第5の実施形態
図8は、本発明の第5の実施形態に係るストレージノード80の構成を示すブロック図である。図8に示すように、ストレージノード80は、データ格納部81、アクセス要求蓄積部(データ利用アクセスバッファ)82、データ走査部83およびアクセス検索部84を備える。
データ格納部81は、ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、ブロック単位で格納可能なキャッシュメモリとを含む。
アクセス要求蓄積部82は、データ格納部81に格納されるデータに対するアクセス要求を蓄積する。データ走査部83は、アクセス要求蓄積部82に蓄積されたアクセス要求が所定の条件を満たすのに応じて、データ格納部81に含まれるメインメモリに格納されているデータを、ブロック単位で順に読み出してキャッシュメモリに書き込むと共に走査する。
アクセス検索部84は、走査によって特定されたデータに対するアクセス要求を、アクセス要求蓄積部82から読み出すと共に、当該アクセス要求の送信元に対して特定されたデータを特定できる情報を返信する。
上記構成により、本第5の実施形態によれば、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるという効果が得られる。
なお、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。また、本願発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
また、図2、図5、図6、図7および図8に示したストレージノード(ストレージ装置)の各部は、コンピュータにより実現した場合、図9に例示するハードウエア資源において実現される。すなわち、図9に示す構成は、CPU10、RAM(Random Access Memory)11、ROM(Read Only Memory)12、ネットワークインタフェース13および記憶媒体14を備える。ストレージノードのCPU10は、ROM12または記憶媒体14に記憶された各種ソフトウェア・プログラム(コンピュータ・プログラム)を読み出し、RAM11に書き込むと共に実行することにより、ストレージノードの全体的な動作を司る。すなわち、上記各実施形態において、CPU10は、ROM12または記憶媒体14を適宜参照しながら、ストレージノードが備える各機能(各部)を実行するソフトウエア・プログラムを実行する。
また、上述した各実施形態では、図2、図5、図6、図7および図8に示したストレージノード(ストレージ装置)を、図9に示すCPU10が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、上記各図に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
各実施形態を例に説明した本発明は、ストレージノード(ストレージ装置)に対して、その説明において参照したフローチャート(図3)の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、CPU10がRAM11に書き込むと共に実行することによって達成される。
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ(一時記憶媒体)またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記録媒体によって構成されると捉えることができる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
この出願は、2013年7月30日に出願された日本出願特願2013−157346を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、例えば、携帯電話やスマートフォンのセンサ情報を格納および処理するシステム、コンピュータシステムのログ情報を格納および処理するシステムに適用できる。また、本発明は、例えば、スマートグリッドやデジタルグリッドなど電力発電情報および利用情報を格納および処理するシステム、ITS(Intelligent Transport Systems)など車のセンサやカーナビ情報を格納および処理システムに適用できる。また、本発明は、例えば、自動販売機など機械の購買情報や動作情報を逐次ネットワークで収集するM2M(Machine To Machine)システムに適用することができる。
40 ストレージノード
41 データ送受信部
42 データ格納部
43 制御部
44 データ利用アクセスバッファ
45 データ走査部
46 データ取得部
47 データ検索部
51 データ分解部
62 アクセス仕分部
72 アクセス圧縮部

Claims (10)

  1. ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段と、
    前記データ格納手段に格納されるデータに対するアクセス要求を蓄積するアクセス要求蓄積手段と、
    前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査するデータ走査手段と、
    前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信するアクセス検索手段と
    を備えたストレージ装置。
  2. 前記データ走査手段は、前記メインメモリのメモリアドレス順に、前記データを、前記ブロック単位で読み出して、前記キャッシュメモリに書き込む
    請求項1記載のストレージ装置。
  3. 前記データ走査手段は、前記キャッシュメモリにデータが格納される場合は、そのデータを走査した後に、未走査のデータを前記ブロック単位で順に前記メインメモリから読み出して前記キャッシュメモリに書き込む
    請求項1記載のストレージ装置。
  4. キー値と、当該キー値に紐づけられたプロパティとを含むデータを、前記キー値と前記プロパティとに分解すると共に、分解した状態で当該データを前記データ格納手段に格納するデータ分解手段をさらに備え、
    前記データ走査手段は、前記データ格納手段に含まれる前記メインメモリに格納されているデータの前記プロパティを前記キャッシュメモリに書き込むと共に走査する
    請求項1記載のストレージ装置。
  5. 前記アクセス要求を、前記データを特定するための対象ごとに前記アクセス要求蓄積手段の異なる領域に蓄積するアクセス仕分手段をさらに備え、
    前記アクセス検索手段は、前記走査によって特定されたデータに対するアクセス要求を、当該データを特定するための対象を含むアクセス要求が蓄積された領域から読み出す
    請求項1記載のストレージ装置。
  6. 前記アクセス要求から、前記データを特定可能な情報を抽出すると共に、当該抽出した情報と前記アクセス要求とを、前記アクセス要求蓄積手段の異なる領域に蓄積するアクセス圧縮手段をさらに備え、
    前記アクセス検索手段は、前記走査によって特定されたデータに対するアクセス要求を、前記データを特定可能な情報が蓄積された領域から読み出す
    請求項1記載のストレージ装置。
  7. 前記データ走査手段は、前記メインメモリのメモリアドレス順に、前記ブロック単位ですべてのデータを読み出し、前記キャッシュメモリに書き込む
    請求項1記載のストレージ装置。
  8. ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段に格納されるデータに対するアクセス要求をアクセス要求蓄積手段に蓄積し、
    前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、データ走査手段により前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査し、
    前記走査によって特定されたデータに対するアクセス要求を、アクセス検索手段により、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する
    データアクセス方法。
  9. 前記走査する際に、前記メインメモリのメモリアドレス順に、前記ブロック単位で前記データを前記キャッシュメモリに書き込む
    請求項8記載のデータアクセス方法。
  10. ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段に格納されるデータに対するアクセス要求をアクセス要求蓄積手段に蓄積する処理と、
    前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査する処理と、
    前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する処理
    を、コンピュータに実行させるデータアクセスプログラ
JP2015529343A 2013-07-30 2014-07-15 ストレージ装置、データアクセス方法およびデータアクセスプログラム Active JP6406254B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013157346 2013-07-30
JP2013157346 2013-07-30
PCT/JP2014/003733 WO2015015727A1 (ja) 2013-07-30 2014-07-15 ストレージ装置、データアクセス方法およびプログラム記録媒体

Publications (2)

Publication Number Publication Date
JPWO2015015727A1 JPWO2015015727A1 (ja) 2017-03-02
JP6406254B2 true JP6406254B2 (ja) 2018-10-17

Family

ID=52431290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015529343A Active JP6406254B2 (ja) 2013-07-30 2014-07-15 ストレージ装置、データアクセス方法およびデータアクセスプログラム

Country Status (3)

Country Link
US (1) US20160210237A1 (ja)
JP (1) JP6406254B2 (ja)
WO (1) WO2015015727A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10168901B2 (en) * 2015-03-12 2019-01-01 Toshiba Memory Corporation Memory system, information processing apparatus, control method, and initialization apparatus
JP6241449B2 (ja) * 2015-05-21 2017-12-06 横河電機株式会社 データ管理システム及びデータ管理方法
KR102529704B1 (ko) * 2020-08-27 2023-05-09 주식회사 아미크 인 메모리 데이터베이스의 데이터를 처리하는 방법 및 장치
CN114428707A (zh) * 2022-01-12 2022-05-03 湖北美和易思教育科技有限公司 一种基于资源的分布式存储方法、系统、设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182121B1 (en) * 1995-02-03 2001-01-30 Enfish, Inc. Method and apparatus for a physical storage architecture having an improved information storage and retrieval system for a shared file environment
US7162550B2 (en) * 2003-07-21 2007-01-09 Intel Corporation Method, system, and program for managing requests to an Input/Output device
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US9734198B2 (en) * 2007-11-30 2017-08-15 Red Hat, Inc. Query processing
JP4798672B2 (ja) * 2009-06-29 2011-10-19 東芝ストレージデバイス株式会社 磁気ディスク装置
JP4792100B2 (ja) * 2009-06-29 2011-10-12 株式会社東芝 ファイル共有システム
US9104629B2 (en) * 2009-07-09 2015-08-11 International Business Machines Corporation Autonomic reclamation processing on sequential storage media
WO2011031796A2 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US20140372607A1 (en) * 2010-03-15 2014-12-18 Cleversafe, Inc. Adjusting allocation of dispersed storage network resources
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US9292569B2 (en) * 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration

Also Published As

Publication number Publication date
JPWO2015015727A1 (ja) 2017-03-02
US20160210237A1 (en) 2016-07-21
WO2015015727A1 (ja) 2015-02-05

Similar Documents

Publication Publication Date Title
US10795905B2 (en) Data stream ingestion and persistence techniques
US10691716B2 (en) Dynamic partitioning techniques for data streams
US8751763B1 (en) Low-overhead deduplication within a block-based data storage
US10540279B2 (en) Server-based persistence management in user space
US10635644B2 (en) Partition-based data stream processing framework
CA2929777C (en) Managed service for acquisition, storage and consumption of large-scale data streams
US20140195551A1 (en) Optimizing snapshot lookups
US11245774B2 (en) Cache storage for streaming data
US20150135255A1 (en) Client-configurable security options for data streams
US20130268770A1 (en) Cryptographic hash database
US10540095B1 (en) Efficient garbage collection for stable data
US11080207B2 (en) Caching framework for big-data engines in the cloud
US9928178B1 (en) Memory-efficient management of computer network resources
JP6406254B2 (ja) ストレージ装置、データアクセス方法およびデータアクセスプログラム
US10747773B2 (en) Database management system, computer, and database management method
Xie et al. Fleche: an efficient GPU embedding cache for personalized recommendations
US20220342888A1 (en) Object tagging
US20210397581A1 (en) Sparse file system implemented with multiple cloud services
Chen et al. Exploiting application-level similarity to improve SSD cache performance in Hadoop
CN114756509A (zh) 文件系统的操作方法、系统、设备以及存储介质
Hua et al. The design and implementations of locality-aware approximate queries in hybrid storage systems
Qian et al. FastCache: A client-side cache with variable-position merging schema in network storage system
CN117539915B (zh) 一种数据处理方法及相关装置
CN116048425B (zh) 一种分层缓存方法、系统及相关组件
US11340822B2 (en) Movement of stored data based on occurrences of one or more n-gram strings in the stored data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170615

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: 20180821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180903

R150 Certificate of patent or registration of utility model

Ref document number: 6406254

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150