JP2020108045A - データ圧縮方法 - Google Patents
データ圧縮方法 Download PDFInfo
- Publication number
- JP2020108045A JP2020108045A JP2018246441A JP2018246441A JP2020108045A JP 2020108045 A JP2020108045 A JP 2020108045A JP 2018246441 A JP2018246441 A JP 2018246441A JP 2018246441 A JP2018246441 A JP 2018246441A JP 2020108045 A JP2020108045 A JP 2020108045A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- memory
- compression
- compressed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】省メモリ、省ディスク容量の両立を実現する。【解決手段】データ圧縮部12は、時系列に格納された非圧縮データをメモリ3から取り出して圧縮し、圧縮した圧縮データからなる第1ブロックを生成し、データ格納部13は、その第1ブロックをメモリ3に再格納する。ブロック結合部14は、所定数の第1ブロックを結合し、結合ブロック圧縮部15は、結合した所定数の第1ブロックを再圧縮し、再圧縮した再圧縮データからなる第2ブロックを生成する。検索情報生成部16は、第2ブロックに含まれる複数の第1ブロックのユニークキーから代表キーを生成し、生成した代表キーを当該第2ブロックに付与するとともに、第2ブロックの代表キーと、第2ブロックに含まれる複数の第1ブロックのユニークキーと、を関連付けたデータ検索用情報を生成して保持する。データ書込部17は、代表キーが付与された第2ブロックをディスク5内のファイルへ書き込む。【選択図】図1
Description
本発明は、IoTデバイスが生成した大量の情報データを省リソース条件下で収集して蓄積するデータベース装置の技術に関する。特に、データベースプロセスが通信ネットワーク経由で情報データを受信してメモリに格納してディスクに書き込むまでのメモリ上の処理に関する。
IoT(Internet of Things)において、センサやデバイスなどのIoTデバイスが情報データを生成する場所をクラウドと対比して「エッジ」と呼ぶ。エッジにおいては、クラウドと比較して、計算リソースや記憶リソースの拡張性に強い制約があることが多い。一方、エッジにおいても、IoTデバイスが生成した大量の情報データを処理する必要がある。そこで、省リソース条件下で、IoTデバイスが生成した大量の情報データを収集してディスクに書き込むデータベース装置の技術が検討されている。
従来の技術には、2つの共通した特徴がある。1つには、ディスクへの書き込み速度を高速化するため、メモリ上でデータを一定期間追記型のデータ構造で格納することである。追記型のデータ構造とは、データを次々に時系列に追加していくデータ構造をいう。もう1つには、ディスクに大量の情報データを書き込むため、情報データのデータ生成元単位でデータを長期間集めて一度に圧縮することで圧縮率を向上させることである。
例えば、非特許文献1では、情報データを追記型のデータ構造でメモリ上に格納し、既定量をメモリ上に格納した後に、データ生成元毎に圧縮処理を行ってデータのブロックを生成し、生成したブロックをディスクへ書き込む方式を開示している。
非特許文献2では、情報データの収集の際に、情報データの到来順に所定のデータポイント単位で逐次圧縮を行いながら、チャンクと呼ばれる追記型のデータ構造を1単位としてメモリ上に格納する。チャンクは、データ生成元の単位で生成され、サイズは固定である。そして、メモリ使用量と見合わせながらチャンク単位で情報ファイルをディスクへ書き込む。なお、チャンクは、非特許文献1のブロックと同義である。
"In-memory indexing and the Time-Structured Merge Tree (TSM)"、InfluxDB、[online]、[2018年12月18日検索]、インターネット<URL:https://docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/>
"Index Disk Format"、Prometheus、[online]、[2018年12月18日検索]、インターネット<URL:https://github.com/prometheus/tsdb/blob/master/docs/format/index.md>
上述の通り、エッジにおいては、計算リソースや記憶リソースの拡張性に強い制約がある中で、IoTデバイスが生成する大量の情報データを収集して蓄積する処理が行われる。そのため、エッジにおける情報データの収集及び蓄積を省リソース条件下で実行可能な手法が必要となる。しかし、従来の技術では、省メモリ、省ディスク容量の両立を実現できない。
従来の技術では、データの高圧縮率を実現するため、メモリ上で長期間のデータを1まとめに保持するので、多くのメモリ容量を必要とする。その反面、省メモリ下では、長期間のデータをメモリ上に格納できず、データの圧縮率が悪化するので、ディスク使用量が増加してしまう。
例えば、非特許技術1では、特にデータ生成元の数が多い場合、データの高圧縮率を達成するためには、メモリ上で情報データを収集するのに使用するメモリ領域を大きくする必要がある。しかし、非圧縮の状態で情報データを保持するため、データポイントあたりのメモリ使用量の効率が悪く、多くのメモリを消費してしまう。また、メモリ領域を小さくした場合、データの圧縮率が悪化してしまう。
非特許文献2では、ブロック(チャンク)のサイズは固定であるため、データ生成元が多数になるとともに、ブロックのサイズを小さく設定しなければ、メモリの逼迫につながってしまう。一方、ブロックのサイズを小さくした場合、ブロックで長期間のデータを集めることができず、低圧縮率のデータをブロック単位でディスクへ書き込むことになるので、ディスク容量の増加に繋がってしまう。
本発明は、上記事情を鑑みてなされたものであり、省メモリ、省ディスク容量の両立を実現することを目的とする。
本発明のデータ圧縮方法は、データ圧縮装置で行うデータ圧縮方法において、メモリに格納された非圧縮データを圧縮し、圧縮した圧縮データを前記メモリに再格納する第1のステップと、所定数の前記圧縮データを結合して再圧縮し、再圧縮した再圧縮データにキー情報を付与してディスクに書き込む第2のステップと、前記再圧縮データのキー情報と、前記再圧縮データに含まれる圧縮データに係る非圧縮データのデータ生成元を示すキー情報と、を関連付けたデータ検索用情報を生成する第3のステップと、を行うことを特徴とする。
上記データ圧縮方法において、前記第1のステップでは、前記非圧縮データを非圧縮データのデータ生成元毎に圧縮し、前記第2のステップでは、データ生成元が同一であるか否かに関わらず複数のデータ生成元に係る圧縮データの数が前記所定数に達した場合、前記所定数の圧縮データを結合して圧縮することを特徴とする。
上記データ圧縮方法において、前記第1のステップでは、前記非圧縮データの一部に対して圧縮を行い、前記第2のステップでは、前記非圧縮データの全体に対して圧縮を行うことを特徴とする。
本発明によれば、省メモリ、省ディスク容量の両立を実現できる。
本発明では、上述した省リソース化の課題に対して、省メモリ化した際の圧縮率の悪化を是正する観点からアプローチし、二段階圧縮という方式を提案する。具体的には、メモリ使用量を削減するため、メモリ上のデータを圧縮する一度目の圧縮処理を行い、ディスク使用量を削減するため、複数の圧縮データを結合して再圧縮する二度目の圧縮処理を行う。また、一度目の圧縮処理で得た圧縮データを検索可能にするため、二度目の圧縮処理で得た再圧縮データにキー情報を付与するとともに、再圧縮データのキー情報と再圧縮データに含まれる圧縮データに係る非圧縮データのデータ生成元を示すキー情報とを関連付けたデータ検索用情報を生成する。
このように、本発明では、メモリとディスク双方に対応した二度の圧縮処理とデータ検索用情報の生成処理とを組み合わせた二段階圧縮方式を用いるので、データの検索性を損なうことなく、メモリとディスク双方の使用量を削減できる。以下、本発明を実施する一実施の形態について図面を用いて説明する。
図1は、本実施形態に係るデータ圧縮装置1の機能ブロック構成を示す図である。当該データ圧縮装置1は、メモリ3及びディスク5を備えるデータベース装置100で動作し、複数のIoTデバイス300が通信ネットワークを介してデータベース装置100へ送信する情報データを受信して圧縮する装置である。
IoTデバイス300は、例えば、センサやデバイスであり、自機で検知したセンタ値等を情報データとして出力する。データベース装置100は、IoTゲートウェイのようなメモリ、ディスク容量がともに少ない機器を使用してもよいし、メモリ、ディスク容量が少ない一般的なパソコンを用いてもよい。
まず、データ圧縮装置1の機能について説明する。データ圧縮装置1は、図1に示したように、主として、データ受信部11と、データ圧縮部12と、データ格納部13と、ブロック結合部14と、結合ブロック圧縮部15と、検索情報生成部16と、データ書込部17と、を備えて構成される。
データ受信部11は、IoTデバイス300が生成した情報データを受信し、受信した情報データをそのまま受信順に追記型のデータ構造でメモリ3に格納する機能を備える。例えば、データ受信部11は、複数のIoTデバイス300から出力された複数の情報データや1つの情報データを構成するデータ列を、受信順に非圧縮状態で次々に時系列にメモリ3に追加する。
データ圧縮部12は、時系列に格納された情報データ(非圧縮データ)をメモリ3から取り出し、取り出した非圧縮データを当該非圧縮データのデータ生成元毎(例えば、IoTデバイス毎、IoTデバイス内のアプリ毎)に圧縮し、圧縮した圧縮データからなるブロック(以下、第1ブロック)を生成する機能を備える。第1ブロックの生成方法は、情報データをメモリ3に任意量又は既定量(任意に設定可能)だけ格納した後に圧縮する方法でもよいし、情報データの到来順に逐次的に圧縮して固定サイズのブロックに格納する方法でもよい。
データ格納部13は、データ圧縮部12が生成した第1ブロックをメモリ3に再格納する機能を備える。
ブロック結合部14は、所定数の第1ブロックをメモリ3から取り出し、取り出した所定数の第1ブロックを結合する機能を備える。例えば、ブロック結合部14は、メモリ3に再格納された第1ブロックの数が任意数又は既定数(任意に設定可能)に到達した後に、当該任意数又は既定数の第1ブロックを結合する。結合対象となる複数の第1ブロックの選定方法は、データ生成元毎に選定してもよいし、複数のデータ生成元の中から選定してもよいし、任意の組み合わせのデータ生成元の中から選定してもよい。データ生成元の種別を問わない複数のデータ生成元の中から選定する方法が高効率である。
結合ブロック圧縮部15は、ブロック結合部14が結合した所定数の第1ブロックを再圧縮し、再圧縮した再圧縮データからなるブロック(以下、第2ブロック)を生成する機能を備える。結合ブロック圧縮部15で用いる圧縮方法は、データ圧縮部12が用いる圧縮方法と同じでもよいが、データの圧縮率を高めるために、データの特性や性質等を考慮して異なる圧縮方法又は複数の圧縮方法を組み合わせた圧縮方法を用いることが望ましい。例えば、非圧縮データのデータ構造等に着目し、データ圧縮部12では、非圧縮データを構成するデータ列の一部に対して圧縮を行い、結合ブロック圧縮部15では、圧縮データを構成するデータ列の全体に対して圧縮を行う方法がある。
ここで、第2ブロックについて説明する。第2ブロックには、データ生成元を示すユニークキーや時間範囲等の異なる複数の第1ブロックが格納される。従来は、ユニークキーを用いることで第1ブロックへ直接アクセス可能であったが、本発明では、第2ブロックに内在する第1ブロックへ直接アクセスできないので、ユニークキーから第2ブロックへの対応が取れるアクセス情報やキー情報を定義する必要がある。
そこで、まず、第2ブロックの生成元となった複数の第1ブロックのユニークキーから代表キーを生成するとともに、各第1ブロックの最小時刻、最大時刻から当該複数の第1ブロックにおける全体の最小時刻、最大時刻の時間情報を算出して、生成及び算出した第2ブロックに固有の代表キーや時間情報等を当該第2ブロックに付与する。加えて、第2ブロックに、当該第2ブロックに含まれる各第1ブロックのユニークキーと、当該各第1ブロックの最小時刻、最大時刻の時間情報と、を付与する。さらに、第2ブロックの代表キーと、第2ブロックに含まれる各第1ブロックのユニークキーと、を関連付けたデータ検索用情報(検索マップ)を生成して保持する。その後、第2ブロックをディスク5内のファイルへ書き込む。
そして、所望の第1ブロックをディスク5のファイルから検索する場合、検索クエリ内のユニークキーに対応する代表キーを検索マップから検索し、検索した代表キーが付与された第2ブロックを特定して、特定した第2ブロックからユニークキーに対応する第1ブロックを取得して解凍する。これにより、ディスク5に書き込まれた情報データを得ることができる。
そのため、検索情報生成部16は、結合ブロック圧縮部15が生成した第2ブロックに含まれる複数の第1ブロックのユニークキーから代表キーを生成し、生成した代表キーを当該第2ブロックに付与するとともに、第2ブロックの代表キーと、第2ブロックに含まれる複数の第1ブロックのユニークキーと、を関連付けた検索マップを生成して保持する機能を備える。また、データ書込部17は、代表キーが付与された第2ブロックをディスク5内のファイルへ書き込む機能を備える。
ここまで、データ圧縮装置1の備える機能について説明した。なお、上述したデータ圧縮装置1の機能ブロック構成は例である。例えば、データ受信部11と、データ圧縮部12と、データ格納部13とを、1つのメモリ削減用圧縮部で実現し、ブロック結合部14と、結合ブロック圧縮部15と、検索情報生成部16と、データ書込部17とを、1つのディスク削減用圧縮部で実現してもよい。
この場合、メモリ削減用圧縮部は、メモリ3に格納された非圧縮データを圧縮し、圧縮した圧縮データをメモリ3に再格納する機能を備える。ディスク削減用圧縮部は、所定数の圧縮データを結合して再圧縮し、再圧縮した再圧縮データに代表キーを付与してディスクに書き込むとともに、再圧縮データの代表キーと、再圧縮データに含まれる圧縮データに係る非圧縮データのデータ生成元を示すユニークキーと、を関連付けた検索マップを生成する機能を備える。
上記データ圧縮装置1は、CPU、メモリ、入出力インタフェース、通信インタフェース等を備えたコンピュータで実現可能である。また、データ圧縮装置1としてコンピュータを機能させるためのデータ圧縮プログラム、データ圧縮プログラムの記憶媒体の作成も可能である。
次に、データ圧縮装置1で行うデータ圧縮方法について説明する。図2は、データ圧縮方法の処理フローを示す図である。
ステップS1;
まず、データ受信部11が、データベース装置100がIoTデバイス300から受信した情報データを受け取り、受け取った情報データを受信順に非圧縮状態で次々に時系列にメモリ3に格納する。
まず、データ受信部11が、データベース装置100がIoTデバイス300から受信した情報データを受け取り、受け取った情報データを受信順に非圧縮状態で次々に時系列にメモリ3に格納する。
ステップS2;
次に、データ圧縮部12は、メモリ3に格納されている情報データ(非圧縮データ)のサイズを当該非圧縮データのデータ生成元毎(ユニークキー毎)に計測し、既定量に達したか否かを判定する。非圧縮データの量が既定量に達していない場合、ステップS1へ戻り、既定量に達した場合、ステップS3へ進む。
次に、データ圧縮部12は、メモリ3に格納されている情報データ(非圧縮データ)のサイズを当該非圧縮データのデータ生成元毎(ユニークキー毎)に計測し、既定量に達したか否かを判定する。非圧縮データの量が既定量に達していない場合、ステップS1へ戻り、既定量に達した場合、ステップS3へ進む。
ステップS3;
次に、データ圧縮部12は、既定量に達した非圧縮データを圧縮し、圧縮した圧縮データからなる第1ブロックを生成する。当該ステップS3の圧縮処理が一度目の圧縮処理であり、例えば、非圧縮データのデータ列の中で局所性の高い圧縮(例えば、データ列の前後の値のみを圧縮)を行う。
次に、データ圧縮部12は、既定量に達した非圧縮データを圧縮し、圧縮した圧縮データからなる第1ブロックを生成する。当該ステップS3の圧縮処理が一度目の圧縮処理であり、例えば、非圧縮データのデータ列の中で局所性の高い圧縮(例えば、データ列の前後の値のみを圧縮)を行う。
ステップS4;
次に、データ圧縮部12は、第1ブロックに係る非圧縮データのデータ生成元を示すユニークキーを生成するとともに、第1ブロックに係る非圧縮データの最小時刻と最大時刻とをそれぞれ算出する。非圧縮データの最小時刻及び最大時刻については、非圧縮データの受信開始時刻と受信終了時刻をそのまま用いてもよいし、最小時刻をゼロ時刻とし最大時刻を受信開始時刻からの経過時刻としてもよい。
次に、データ圧縮部12は、第1ブロックに係る非圧縮データのデータ生成元を示すユニークキーを生成するとともに、第1ブロックに係る非圧縮データの最小時刻と最大時刻とをそれぞれ算出する。非圧縮データの最小時刻及び最大時刻については、非圧縮データの受信開始時刻と受信終了時刻をそのまま用いてもよいし、最小時刻をゼロ時刻とし最大時刻を受信開始時刻からの経過時刻としてもよい。
ステップS5;
次に、データ格納部13は、データ圧縮部12が生成した第1ブロックをメモリ3に再格納する。ステップS1〜S5で行う非圧縮データの格納処理、圧縮処理、圧縮データの再格納処理の様子を図3に示す。図3では、key1〜key3のユニークキーに係る非圧縮データをそれぞれ時系列に順次格納し、key1のユニークキーに係る非圧縮データの量が既定量に達したため、当該非圧縮データを圧縮し、圧縮した圧縮データからなる第1ブロックをメモリ3に再格納する様子を示している。
次に、データ格納部13は、データ圧縮部12が生成した第1ブロックをメモリ3に再格納する。ステップS1〜S5で行う非圧縮データの格納処理、圧縮処理、圧縮データの再格納処理の様子を図3に示す。図3では、key1〜key3のユニークキーに係る非圧縮データをそれぞれ時系列に順次格納し、key1のユニークキーに係る非圧縮データの量が既定量に達したため、当該非圧縮データを圧縮し、圧縮した圧縮データからなる第1ブロックをメモリ3に再格納する様子を示している。
ステップS6;
次に、データ圧縮装置1は、第1ブロックの数が既定数に達したか否かを判定する。第1ブロックの数が既定数に達していない場合、ステップS1へ戻る。ステップS1へ戻りステップS1〜S5を繰り返し行うことで、概ね同一サイズに圧縮された複数の第1ブロックがユニークキー毎に生成される。そして、第1ブロックの数が既定数に達した場合、ステップS7へ進む。
次に、データ圧縮装置1は、第1ブロックの数が既定数に達したか否かを判定する。第1ブロックの数が既定数に達していない場合、ステップS1へ戻る。ステップS1へ戻りステップS1〜S5を繰り返し行うことで、概ね同一サイズに圧縮された複数の第1ブロックがユニークキー毎に生成される。そして、第1ブロックの数が既定数に達した場合、ステップS7へ進む。
なお、第1ブロックの数が既定数に達するとは、二度目の圧縮処理を開始する再圧縮条件である。当該再圧縮条件は、ユニークキー単位やユニークキーをまたいで設定可能である。例えば、ユニークキー毎に生成された第1ブロックの総数が既定数に達した場合、全てのユニークキーにわたって生成された第1ブロックの総数が既定数に達した場合、ユニークキーの任意の組み合わせ単位で保持している第1ブロックの総数が既定数に達した場合などである。データ圧縮装置1は、ユーザにより指定された再圧縮条件を用いてステップS6を実行する。
ステップS7;
第1ブロックの数が既定数に達した場合(再圧縮条件を満たした場合)、ブロック結合部14は、当該所定数の第1ブロックをメモリ3から取り出し、取り出した所定数の第1ブロックを結合する。
第1ブロックの数が既定数に達した場合(再圧縮条件を満たした場合)、ブロック結合部14は、当該所定数の第1ブロックをメモリ3から取り出し、取り出した所定数の第1ブロックを結合する。
ステップS8;
次に、結合ブロック圧縮部15は、ブロック結合部14が結合した所定数の第1ブロックを再圧縮し、再圧縮した再圧縮データからなる第2ブロックを生成して、ディスク5に書き込み可能状態にする。当該ステップS8の圧縮処理が二度目の圧縮処理であり、例えば、GZIP(GNU Zip)やZSTD(Zstandard)等の圧縮プログラムや圧縮アルゴリズムを用いて、結合した全ての圧縮データに含まれるデータ列の全体を圧縮する。
次に、結合ブロック圧縮部15は、ブロック結合部14が結合した所定数の第1ブロックを再圧縮し、再圧縮した再圧縮データからなる第2ブロックを生成して、ディスク5に書き込み可能状態にする。当該ステップS8の圧縮処理が二度目の圧縮処理であり、例えば、GZIP(GNU Zip)やZSTD(Zstandard)等の圧縮プログラムや圧縮アルゴリズムを用いて、結合した全ての圧縮データに含まれるデータ列の全体を圧縮する。
ステップS7〜S8で行う圧縮データの結合処理、再圧縮処理の様子を図4に示す。図4では、上述した3種類の再圧縮条件のうち「全てのユニークキーにわたって生成された第1ブロックの総数が既定数に達した場合」を用いた場合であり、key1〜key3のユニークキーに係る圧縮データの数が既定数の6に達したため、当該6つの圧縮データを一列に繋いで再圧縮し、再圧縮した再圧縮データからなる第2ブロックをディスク5内のファイルに書き込む様子を示している。
ステップS9;
次に、第2ブロックをディスク5に書き込む前に、検索情報生成部16は、書き込み後の第2ブロック群からなるディスク5内のファイル上で第1ブロックへのアクセスを可能にするためのアクセス情報を作成する。
次に、第2ブロックをディスク5に書き込む前に、検索情報生成部16は、書き込み後の第2ブロック群からなるディスク5内のファイル上で第1ブロックへのアクセスを可能にするためのアクセス情報を作成する。
具体的には、検索情報生成部16は、まず、第2ブロックに含まれるユニークキーの集合から単一の代表キーを生成する。例えば、図5に示すように、key1〜key3のユニークキーからK1の代表キーを生成する。代表キーの生成方法は、例えば、同じの代表キーに関連付いている複数のユニークキーをソートし、辞書順に最初に来るユニークキー(key1〜key3のうちkey1)のワードを利用して代表キー(key1→K1)を生成する。
次に、検索情報生成部16は、第2ブロック内の各第1ブロックに付与されている最小時刻と最大時刻を全て参照し、その全ての中で最も小さい最小時刻と最も大きい最大時刻を第2ブロックに係る最小時刻と最大時刻にする。例えば、図5に示すように、MIM関数やMAX関数を用いて最小時刻(MinTime1)と最大時刻(MaxTime1)をそれぞれ算出する。
そして、検索情報生成部16は、代表キーと時間範囲(最小時刻,最大時刻)とをインデックス情報1として第2ブロックに付与する。また、検索情報生成部16は、第2ブロックに含まれる各第1ブロックのユニークキーと時間範囲(最小時間,最大時間)とをインデックス情報2として第2ブロックに付与する。
さらに、検索情報生成部16は、第2ブロックの代表キーと、当該第2ブロックに含まれる各第1ブロックのユニークキーと、を関連付けた検索マップを生成して保持する。例えば、図5に示すように「m(key1)=m(key2)=m(key3)=K1」といった検索マップを生成する。
ステップS10;
最後に、データ書込部17は、検索情報生成部16が生成したアクセス情報を持つ第2ブロックをディスク5内のファイルへ書き込む。ファイル内におけるデータレイアウトのイメージを図6に示す。図6では、6つの第1ブロック(圧縮データ)を結合して再圧縮した1つの第2ブロック(再圧縮データ)とともに、各第1ブロックのユニークキーと時間範囲(最小時間,最大時間)と格納位置とを示すインデックス情報2と、第2ブロックの代表キーと時間範囲(最小時間,最大時間)と格納位置とを示すインデックス情報1とのデータレイアウトの例が示されている。
最後に、データ書込部17は、検索情報生成部16が生成したアクセス情報を持つ第2ブロックをディスク5内のファイルへ書き込む。ファイル内におけるデータレイアウトのイメージを図6に示す。図6では、6つの第1ブロック(圧縮データ)を結合して再圧縮した1つの第2ブロック(再圧縮データ)とともに、各第1ブロックのユニークキーと時間範囲(最小時間,最大時間)と格納位置とを示すインデックス情報2と、第2ブロックの代表キーと時間範囲(最小時間,最大時間)と格納位置とを示すインデックス情報1とのデータレイアウトの例が示されている。
なお、ステップS6において、「ユニークキーの任意の組み合わせ単位で保持している第1ブロックの総数が既定数に達した場合」の再圧縮条件を用いる場合、書き込みデータに特殊な属性値を付けてもよい。その他、読み込みのパターンを記録して同じタイミングに読み込まれるユニークキー同士をまとめてもよい。
次に、ディスク5からデータを検索するデータ検索方法について説明する。
データベース装置100は、所望のユニークキーと時間範囲とを含む検索クエリを受け付けると、受け付けた検索クエリ内のユニークキーを検索マップより代表キーに変換し、変換した代表キーと検索クエリ内の時間範囲とに該当する第2ブロックをディスク5のファイル上で探索する。第2ブロックを探索した後、データベース装置100は、第2ブロック内のインデックス情報2を参照し、検索クエリに含まれていたユニークキーに該当する第1ブロックの情報を得る。その後、データベース装置100は、当該ユニークキーに該当し、かつ、検索クエリ内の時間範囲に対応する第1ブロックをディスク5のファイルから取得し、一度目の圧縮方法に沿って解凍して情報を得る。なお、二度目の圧縮をユニークキー毎に行った場合は、代表キーに関する手順の省略が可能である。
以上より、本実施形態によれば、データ圧縮装置1は、メモリ上の非圧縮データを圧縮する一度目の圧縮処理を行うので、メモリ上で圧縮後のデータを保持可能となり、同じ量のデータをメモリ上に保持するのに必要なメモリ量を削減できる。
また、データ圧縮装置1は、複数の圧縮データを結合して再圧縮する二度目の圧縮処理を行うので、ディスク上での圧縮率を向上できる。特に、ユニークキーをまたいで複数の圧縮データを圧縮する場合、ディスク上での圧縮率をより向上できる。つまり、第1ブロック同士をつなぎ合わせることが可能になり、同一のユニークキーのブロックや複数のユニークキーのブロックをまとめて圧縮することが可能になる。このため、小さなブロックしかメモリ上に保持できないような省メモリな場面において、圧縮率を向上できる。
よって、省メモリ、省ディスク容量を両立しながら、データ収集、蓄積を行うことが可能になる。
1…データ圧縮装置
11…データ受信部
12…データ圧縮部
13…データ格納部
14…ブロック結合部
15…結合ブロック圧縮部
16…検索情報生成部
17…データ書込部
3…メモリ
5…ディスク(ファイル)
100…データベース装置
300…IoTデバイス
11…データ受信部
12…データ圧縮部
13…データ格納部
14…ブロック結合部
15…結合ブロック圧縮部
16…検索情報生成部
17…データ書込部
3…メモリ
5…ディスク(ファイル)
100…データベース装置
300…IoTデバイス
Claims (3)
- データ圧縮装置で行うデータ圧縮方法において、
メモリに格納された非圧縮データを圧縮し、圧縮した圧縮データを前記メモリに再格納する第1のステップと、
所定数の前記圧縮データを結合して再圧縮し、再圧縮した再圧縮データにキー情報を付与してディスクに書き込む第2のステップと、
前記再圧縮データのキー情報と、前記再圧縮データに含まれる圧縮データに係る非圧縮データのデータ生成元を示すキー情報と、を関連付けたデータ検索用情報を生成する第3のステップと、
を行うことを特徴とするデータ圧縮方法。 - 前記第1のステップでは、前記非圧縮データを非圧縮データのデータ生成元毎に圧縮し、
前記第2のステップでは、
データ生成元が同一であるか否かに関わらず複数のデータ生成元に係る圧縮データの数が前記所定数に達した場合、前記所定数の圧縮データを結合して圧縮することを特徴とする請求項1に記載のデータ圧縮方法。 - 前記第1のステップでは、前記非圧縮データの一部に対して圧縮を行い、
前記第2のステップでは、
前記圧縮データの全体に対して再圧縮を行うことを特徴とする請求項1又は2に記載のデータ圧縮方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018246441A JP2020108045A (ja) | 2018-12-28 | 2018-12-28 | データ圧縮方法 |
PCT/JP2019/048912 WO2020137611A1 (ja) | 2018-12-28 | 2019-12-13 | データ圧縮方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018246441A JP2020108045A (ja) | 2018-12-28 | 2018-12-28 | データ圧縮方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020108045A true JP2020108045A (ja) | 2020-07-09 |
Family
ID=71126295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018246441A Pending JP2020108045A (ja) | 2018-12-28 | 2018-12-28 | データ圧縮方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2020108045A (ja) |
WO (1) | WO2020137611A1 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012095227A (ja) * | 2010-10-28 | 2012-05-17 | Canon Inc | 画像処理装置、画像処理方法、及びプログラム |
JP2014052899A (ja) * | 2012-09-07 | 2014-03-20 | Toshiba Corp | メモリシステムとその制御方法 |
-
2018
- 2018-12-28 JP JP2018246441A patent/JP2020108045A/ja active Pending
-
2019
- 2019-12-13 WO PCT/JP2019/048912 patent/WO2020137611A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2020137611A1 (ja) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305586B (zh) | 索引生成方法、索引生成装置及搜索方法 | |
US9514178B2 (en) | Table boundary detection in data blocks for compression | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
KR101663547B1 (ko) | 데이터베이스의 아카이빙 방법 및 장치, 아카이빙된 데이터베이스의 검색 방법 및 장치 | |
US11030172B2 (en) | Database archiving method and device for creating index information and method and device of retrieving archived database including index information | |
CN105009067A (zh) | 管理对存储数据单元的操作 | |
CN108475508B (zh) | 音频数据和保存在块处理存储系统中的数据的简化 | |
CN111625531B (zh) | 基于可编程装置的合并装置、数据合并方法及数据库系统 | |
WO2021082926A1 (zh) | 一种数据压缩的方法及装置 | |
CN112416879A (zh) | 一种基于ntfs文件系统的块级数据去重方法 | |
CN103793391B (zh) | 远端动态数据的处理与验证方法和系统 | |
CN110020001A (zh) | 字符串数据的存储、查询方法以及相应的设备 | |
JP6113816B1 (ja) | 情報処理システム、情報処理装置、及びプログラム | |
CN103761298A (zh) | 一种基于分布式架构的实体匹配方法 | |
CN116382588A (zh) | 一种基于学习索引的LSM-Tree存储引擎读放大问题优化方法 | |
WO2020137611A1 (ja) | データ圧縮方法 | |
TW202030621A (zh) | 已使用主要資料篩而被無損地縮減的資料之有效率擷取 | |
CN107436848B (zh) | 一种实现用户数据和压缩数据间转换的方法及装置 | |
CN110188160A (zh) | 数据存储方法和数据读取方法 | |
CN115794861A (zh) | 基于特征摘要的离线数据查询复用方法及其应用 | |
US20130111164A1 (en) | Hardware compression using common portions of data | |
Byun et al. | Asymmetric index management scheme for high-capacity compressed databases | |
JP2001022766A (ja) | 多次元データベースの高速処理方法および装置 | |
JP5354606B2 (ja) | データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム | |
JP2001312517A (ja) | インデクス生成装置及び文書検索装置 |