(57)【特許請求の範囲】
【請求項１】
複数のレコードを含む取引データを処理する装置であって、  前記レコードのそれぞれは、少なくとも１つの項目の値を含み、  前記項目は、取引数量を含み、  前記取引データが記憶される記憶部と、  前記記憶部に記憶されている前記取引データに含まれる前記取引数量の値に基づいて、前記取引データに対応する圧縮データを生成する圧縮データ生成部と、を有してなり、  前記取引数量の値は、１以外の自然数が含まれる、ことを特徴とするデータ処理装置。
【請求項２】
前記取引数量の値は、６の倍数が含まれる、請求項１記載のデータ処理装置。
【請求項３】
前記圧縮データ生成部は、前記取引データに含まれる前記レコードのうち前記取引数量の値が同じ前記レコードの数に基づいて、前記圧縮データを生成する、請求項１記載のデータ処理装置。
【請求項４】
前記圧縮データ生成部は、  前記取引データに含まれる前記レコードの前記取引データ内での格納の順序を、前記取引数量の値に基づいて、並べ替えて、  前記取引数量の値が同じ前記レコードの前記取引データ内での繰返回数に基づいて、前記圧縮データを生成する、請求項３記載のデータ処理装置。
【請求項５】
前記複数の項目は、辞書項目を含み、  前記圧縮データ生成部は、  前記取引データに含まれる前記辞書項目の値ごとに、対応する辞書値を決定し、  前記取引データに含まれる前記辞書項目の値を、対応する前記辞書値に置換して、前記圧縮データを生成し、  前記辞書値のデータ長は、対応する前記辞書項目の値のデータ長より短い、請求項４記載のデータ処理装置。
【請求項６】
前記項目は、商品コードを含み、  前記記憶部に記憶されている前記取引データに含まれる前記商品コードの値に基づいて、前記取引データを複数の部分データに分割する部分データ生成部と、  前記部分データに含まれる前記取引数量の値に基づいて、前記部分データごとの圧縮部分データを生成する圧縮部分データ生成部と、を有してなり、  前記圧縮データ生成部は、前記圧縮部分データに基づいて、前記圧縮データを生成する、請求項１記載のデータ処理装置。
【請求項７】
前記圧縮部分データ生成部は、前記部分データごとに、前記部分データに含まれる前記レコードのうち前記取引数量の値が同じ前記レコードの数に基づいて、前記圧縮部分データを生成する、請求項６記載のデータ処理装置。
【請求項８】
前記部分データ生成部は、前記取引データに含まれる前記レコードの前記取引データ内での格納の順序を、前記取引数量の値に基づいて、並び替えて、  前記圧縮部分データ生成部は、前記取引数量の値が同じ前記レコードの前記取引データ内での繰返回数に基づいて、前記圧縮部分データを生成する、請求項７記載のデータ処理装置。
【請求項９】
コンピュータを、請求項１記載のデータ処理装置として機能させる、ことを特徴とするデータ処理プログラム。
【請求項１０】
複数のレコードを含む取引データが記憶される記憶部を備えた装置により実行される方法であって、  前記レコードのそれぞれは、少なくとも１つの項目の値を含み、  前記項目は、取引数量を含み、  前記装置は、  前記記憶部に記憶されている前記取引データに含まれる前記取引数量の値に基づいて、前記取引データに対応する圧縮データを生成する圧縮データ生成ステップ、を有してなり、  前記取引数量の値は、１以外の自然数が含まれる、ことを特徴とするデータ処理方法。
【請求項１１】
複数のレコードを含む被圧縮データを処理する装置であって、  前記レコードのそれぞれは、複数の項目ごとの値を含み、  複数の前記項目は、分割項目と圧縮項目とを含み、  前記被圧縮データが記憶される記憶部と、  前記記憶部に記憶されている前記被圧縮データに含まれる前記分割項目の値に基づいて、前記被圧縮データを複数の部分データに分割する部分データ生成部と、  前記部分データに含まれる前記圧縮項目の値に基づいて、前記部分データごとの圧縮部分データを生成する圧縮部分データ生成部と、  前記圧縮部分データに基づいて、前記被圧縮データに対応する圧縮データを生成する圧縮データ生成部と、を有してなる、ことを特徴とするデータ処理装置。
【請求項１２】
前記部分データ生成部は、前記被圧縮データに含まれる複数の前記レコード単位で前記被圧縮データを分割する、請求項１１記載のデータ処理装置。
【請求項１３】
前記部分データは、前記被圧縮データに含まれる複数の前記レコードのうち、１または複数の前記レコードを含む、請求項１２記載のデータ処理装置。
【請求項１４】
前記圧縮部分データ生成部は、前記部分データごとに、前記部分データに含まれる前記レコードのうち前記圧縮項目の値が同じ前記レコードの数に基づいて、前記圧縮部分データを生成する、請求項１１記載のデータ処理装置。
【請求項１５】
前記部分データ生成部は、前記被圧縮データに含まれる前記レコードの前記被圧縮データ内での格納の順序を、前記圧縮項目の値に基づいて、並び替えて、  前記圧縮部分データ生成部は、前記圧縮項目の値が同じ前記レコードの前記被圧縮データ内での繰返回数に基づいて、前記圧縮部分データを生成する、請求項１４記載のデータ処理装置。
【請求項１６】
複数の前記項目は、辞書項目を含み、  前記圧縮部分データ生成部は、  前記部分データに含まれる前記辞書項目の値ごとに、対応する辞書値を決定し、  前記部分データに含まれる前記辞書項目の値を、対応する前記辞書値に置換して、前記圧縮部分データを生成し、  前記辞書値のデータ長は、対応する前記辞書項目の値のデータ長より短い、請求項１１記載のデータ処理装置。
【請求項１７】
前記記憶部は、  前記辞書項目の値と、  前記辞書項目の値に対応する前記辞書値と、が関連付けられた辞書データを記憶する、請求項１６記載のデータ処理装置。
【請求項１８】
前記圧縮データ生成部は、複数の前記圧縮部分データごとの前記圧縮データの所定位置からのオフセット値を算出し、  前記圧縮データは、複数の前記圧縮部分データごとの前記オフセット値を含む、請求項１７記載のデータ処理装置。
【請求項１９】
前記圧縮データは、  前記部分データごとの前記圧縮部分データと、  前記辞書値と、を含む、請求項１８記載のデータ処理装置。
【請求項２０】
前記記憶部は、  前記部分データに含まれる前記分割項目の値と、  前記部分データに対応する前記圧縮部分データのオフセット値と、が関連付けられたインデックスデータを記憶する、請求項１８記載のデータ処理装置。
【請求項２１】
前記被圧縮データは、複数の商品を顧客に販売する店舗の販売データであって、  前記レコードは、前記顧客が購入した商品を特定する商品コードと、前記顧客が購入した前記商品の購入数量と、を含み、  前記分割項目は、前記商品コードであり、  前記圧縮項目は、前記購入数量である、請求項１１記載のデータ処理装置。
【請求項２２】
前記購入数量の値は、１以外の自然数が含まれる、請求項２１記載のデータ処理装置。
【請求項２３】
前記購入数量の値は、６の倍数が含まれる、請求項２１記載のデータ処理装置。
【請求項２４】
コンピュータを、請求項１１記載のデータ処理装置として機能させる、ことを特徴とするデータ処理プログラム。
【請求項２５】
複数のレコードを含む被圧縮データが記憶される記憶部を備えた装置により実行される方法であって、  前記レコードのそれぞれは、複数の項目ごとの値を含み、  複数の前記項目は、分割項目と圧縮項目とを含み、  前記装置は、  前記記憶部に記憶されている前記被圧縮データに含まれる前記分割項目の値に基づいて、前記被圧縮データを複数の部分データに分割する部分データ生成ステップと、  前記部分データに含まれる前記圧縮項目の値に基づいて、前記部分データごとの圧縮部分データを生成する圧縮部分データ生成ステップと、  前記圧縮部分データに基づいて、前記被圧縮データに対応する圧縮データを生成する圧縮データ生成ステップと、を有してなる、ことを特徴とするデータ処理方法。  
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、データ処理装置とデータ処理プログラムとデータ処理方法に関するものである。
【背景技術】
【０００２】  小売店は、客に商品を販売したり、取引先に商品を発注したり、取引先から商品を仕入れたりするなど、取引が発生するごとに取引データを生成して蓄積する。  例えば、小売店は、客に商品を販売するごとに、客、商品、販売価格などを特定する情報を含む販売データを生成して蓄積しておき、蓄積された販売データに基づいて、売上の管理、商品の在庫の管理、商品の発注の管理、あるいは、客の購買分析などを行う。販売対象となる商品の点数が多く、商品を購入する客数が多いスーパーマーケット、特に、多数の店舗を運営するチェーンストアにおいては、販売データの発生件数は膨大となる。【０００３】  膨大な販売データを蓄積し、あるいは、膨大な販売データを分析するために高速に演算するとなると、大規模なコンピュータのハードウェア資源が必要となる。そのため、膨大なデータの容量を小さくなるように圧縮して蓄積し、あるいは、圧縮されたデータを高速に演算できるように復元（伸張・展開・解凍などとも称される）するなど、データの圧縮や復元といったデータの処理の効率を高めることが求められる。【０００４】  これまでも、膨大なデータを圧縮する方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２８７７２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】  本発明は、データの処理効率を高めることができるデータ処理装置とデータ処理プログラムとデータ処理方法とを提供することを目的とする。
【課題を解決するための手段】
【０００７】  本発明は、複数のレコードを含む取引データを処理する装置であって、レコードのそれぞれは、少なくとも１つの項目の値を含み、項目は、取引数量を含み、取引データが記憶される記憶部と、記憶部に記憶されている取引データに含まれる取引数量の値に基づいて、取引データに対応する圧縮データを生成する圧縮データ生成部と、を有してなり、取引数量の値は、１以外の自然数が含まれる、ことを特徴とする。
【発明の効果】
【０００８】  本発明によれば、データの処理効率を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明にかかるデータ処理装置の実施の形態を示すブロック図である。
【図２】本発明にかかるデータ処理装置により処理されるデータの関係を示す模式図である。
【図３】本発明にかかるデータ処理装置により処理されるデータの関係を示す別の模式図である。
【図４】本発明にかかるデータ処理装置により処理されるデータの関係を示すさらに別の模式図である。
【図５】本発明にかかるデータ処理装置により処理される被圧縮データの例を示す模式図である。
【図６】図５の被圧縮データのソート処理後の例を示す模式図である。
【図７】本発明にかかるデータ処理装置により処理される部分データの例を示す模式図である。
【図８】本発明にかかるデータ処理装置により処理される圧縮部分データの例を示す模式図である。
【図９】本発明にかかるデータ処理装置により処理される圧縮部分データの別の例を示す模式図である。
【図１０】本発明にかかるデータ処理装置により処理される圧縮部分データのさらに別の例を示す模式図である。
【図１１】本発明にかかるデータ処理装置により処理される辞書データの例を示す模式図であり、（ａ）は顧客ＩＤ辞書、（ｂ）は日付辞書、（ｃ）はレシート順位辞書である。
【図１２】本発明にかかるデータ処理装置により処理されるインデックスデータの例を示す模式図であり、（ａ）は圧縮ブロックのオフセット値、（ｂ）は辞書ブロックのオフセット値である。
【図１３】本発明にかかるデータ処理装置により処理される圧縮データのデータ構造を示す模式図である。
【図１４】本発明にかかるデータ処理方法の実施の形態を示すフローチャートである。
【図１５】本発明にかかるデータ処理方法に含まれる部分データ生成処理の例を示すフローチャートである。
【図１６】本発明にかかるデータ処理方法に含まれる圧縮部分データ生成処理の例を示すフローチャートである。
【図１７】本発明にかかるデータ処理方法に含まれる圧縮データ生成処理の例を示すフローチャートである。
【図１８】本発明にかかるデータ処理方法による圧縮率の実施例を示す表である。
【発明を実施するための形態】
【００１０】  以下、図面を参照しながら、本発明にかかるデータ処理装置とデータ処理プログラムとデータ処理方法の実施の形態について説明する
【００１１】  ここで、以下に説明する本発明にかかるデータ処理装置は、被圧縮データを圧縮処理（データの容量を削減する処理）して圧縮データを生成する場合を例に説明する。すなわち、圧縮処理は、本発明におけるデータ処理の例である。
【００１２】  なお、本発明におけるデータ処理は、被圧縮データから圧縮データを生成する圧縮処理の他に、例えば、圧縮データから被圧縮データの全部または一部を復元する復元処理を含んでもよい。
【００１３】●データ処理装置の構成●  図１は、本発明にかかるデータ処理装置（以下「本装置」という。）の実施の形態を示すブロック図である。
【００１４】  本装置１は、記憶部２と、部分データ生成部３と、圧縮部分データ生成部４と、圧縮データ生成部５と、を有してなる。
【００１５】  本装置は、パーソナルコンピュータなどの情報処理装置で実現される。本装置では、本発明にかかるデータ処理プログラム（以下「本プログラム」という。）が動作して、本プログラムが本装置のハードウェア資源と協働して、後述する本発明にかかるデータ処理方法（以下「本方法」という。）を実現する。
【００１６】  本装置１のハードウェア資源は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）などのプロセッサを含む。プロセッサは、本プログラムに記述された命令を実行することで、本装置１が備える前述の各手段（部分データ生成部３と、圧縮部分データ生成部４と、圧縮データ生成部５）を実現する。
【００１７】  なお、図示しないコンピュータに本プログラムを実行させることで、同コンピュータを本装置と同様に機能させて、同コンピュータに本方法を実行させることができる。
【００１８】  記憶部２は、本プログラムや、本装置１が本方法を実行するために必要な情報を記憶する。記憶部２は、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、ＲＡＭ（Random Access Memory）、フラッシュメモリなどの半導体メモリ素子、などにより構成される。
【００１９】  記憶部２に記憶される情報は、被圧縮データＤ１と、部分データＤ２と、圧縮部分データＤ３と、辞書データＤ４と、インデックスデータＤ５と、圧縮データＤ６と、を含む。各データの構造などについては、後述する。
【００２０】  部分データ生成部３は、被圧縮データＤ１から部分データＤ２を生成する。
【００２１】  圧縮部分データ生成部４は、部分データＤ２から、圧縮部分データＤ３と辞書データＤ４とインデックスデータＤ５とを生成する。
【００２２】  圧縮データ生成部５は、圧縮部分データＤ３と辞書データＤ４とインデックスデータＤ５とから、圧縮データＤ６を生成する。
【００２３】●データの構造  図２，３，４は、本装置により処理される複数のデータ間の関係を示す模式図である。
【００２４】  図２は、被圧縮データＤ１から、部分データＤ２ａと部分データＤ２ｂと部分データＤ２ｃとが生成されることを示す。
【００２５】  同図は、部分データＤ２ａから圧縮部分データＤ３ａが生成され、部分データＤ２ｂから圧縮部分データＤ３ｂが生成され、部分データＤ２ｃから圧縮部分データＤ３ｃが生成されることを示す。
【００２６】  同図は、部分データＤ２ａと部分データＤ２ｂと部分データＤ２ｃとから、辞書データＤ４が生成されることを示す。
【００２７】  図３は、圧縮部分データＤ３ａと圧縮部分データＤ３ｂと圧縮部分データＤ３ｃとから、インデックスデータＤ５が生成されることを示す（より具体的には、インデックスデータＤ５は、各圧縮部分データＤ３のデータ長に基づいて生成される）。
【００２８】  図４は、圧縮部分データＤ３ａと圧縮部分データＤ３ｂと圧縮部分データＤ３ｃと辞書データＤ４とインデックスデータＤ５とから、圧縮データＤ６が生成されることを示す。
【００２９】●被圧縮データ  図５は、被圧縮データＤ１の例を示す模式図である。  ここで、本実施の形態における被圧縮データＤ１は、小売店の販売データ（レシートデータ）である。  なお、本発明における被圧縮データは、例えば、取引者間での商品の取引数量を含む取引データでもよい。小売店の販売データは、小売店と小売店の客との間での商品の販売数量を含む取引データの一例である。なお、取引データとして、例えば、小売店と小売店の発注先との間での商品の発注量を含む発注データや、小売店と小売店の仕入先との間での商品の仕入量を含む仕入データを用いてもよい。  取引者間での商品の取引数量は、例えば、自然数であり、１以外の自然数が含まれる。また、小売店では、同一商品が、３個単位（１／４ダース）、６個単位（半ダース）あるいは１２個単位（１ダース）で販売されることもある。この場合の取引数量は、３の倍数あるいは６の倍数が含まれる。
【００３０】  被圧縮データＤ１をはじめ、本装置１により処理される各データＤ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６のファイル形式は、テキスト形式である。
【００３１】  同図は、被圧縮データＤ１がレシートの発行順に並んだ複数（６件）のレコードを含んでいることを示す。
【００３２】  同図は、各レコードを構成するデータの項目が「レシート番号」「店舗番号」「顧客ＩＤ」「日付」「時間帯」「商品コード」「購入数量」「購入金額」であることを示す。
【００３３】  同図は、例えば、１行目のレコードにおいて、レシート番号「１００１」と、店舗番号「２７」と、顧客ＩＤ「Ａ」と、日付「２０１９１００１」と、時間帯「１２」と、商品コード「１２３」と、購入数量「１」と、購入金額「２９９」と、の各情報が関連付けて記憶部２に記憶されていることを示す。
【００３４】  ここで、各情報が関連付けて記憶部２に記憶されているとは、本装置１がいずれかの情報から他の情報を検索して読み出し可能に記憶部２に記憶されていることをいう（以下、同じ）。すなわち、例えば、本装置１は、レシート番号「１００１」を用いて、同レシート番号「１００１」と関連付けて記憶されている、例えば、店舗番号「２７」を、記憶部２から読み出すことができる。
【００３５】  同図は、顧客ＩＤ「Ａ」の客が、店舗番号「２７」の店舗において、「２０１９年１０月１日」の「１２時台」に、商品コード「１２３」の商品「１点」を「２９９円」で購入したことを示す。また、同図は、顧客ＩＤ「Ａ」の同じ客が、同じ店舗で同時に、商品コード「２３４」の商品「１点」を「３９９円」で購入したことも示している。さらに、同図は、顧客ＩＤ「Ａ」の客が購入した商品は前述の２点で、その購入履歴は同じレシート番号「１００１」のレシートで店舗により管理され、例えば、店舗から客に提供されるレシート用紙に印字されていたことを示している。
【００３６】  図６は、被圧縮データＤ１のレコードを構成する複数の項目のうち、分割項目の値に基づいて、複数のレコードがソート処理された後の被圧縮データＤ１の例を示す模式図である。分割項目は、「商品コード」である。同図は、６件のレコードが商品コードの昇順にソートされていることを示す（なお、本実施の形態において、６件のレコードの店舗番号は同じ「２７」であるため、店舗番号の値でのソート処理の前後でレコードの並びに変更はない）。ソート処理の具体的な処理内容などについては、後述する。
【００３７】  ここで、レコードを構成する各項目の値は、数値や文字列である。
【００３８】●部分データ  図７は、部分データＤ２の例を示す模式図である。  部分データＤ２は、被圧縮データＤ１に含まれる複数のレコードを、分割項目の値が共通するレコードごとに分割（つまり、レコード単位に分割）して生成されたデータである。換言すれば、部分データＤ２に含まれるすべてのレコードの分割項目の値は、共通（同一）である。分割されて生成された部分データＤ２のそれぞれは、１または複数のレコードを含む。
【００３９】  同図は、被圧縮データＤ１が３つの部分データに分割されていることを示し、（ａ）が商品コード「１２３」の部分データＤ２ａで、（ｂ）が商品コード「２３４」の部分データＤ２ｂで、（ｃ）が商品コード「３４５」の部分データＤ２ｃである。
【００４０】●圧縮部分データ  図８，９，１０は、圧縮部分データＤ３の例を示す模式図であり、図８は圧縮部分データＤ３ａ、図９は圧縮部分データＤ３ｂ、図１０は圧縮部分データＤ３ｃ、の例である。
【００４１】  圧縮部分データＤ３は、部分データＤ２に含まれる項目のうち、圧縮項目の値に基づいて、部分データＤ２ごとに生成されるデータである。より具体的には、圧縮部分データＤ３は、部分データＤ２ごとに、部分データＤ２に含まれるレコードのうち圧縮項目の値が同じレコードの数に基づいて、生成される。圧縮項目は、被圧縮データＤ１のレコードを構成する複数の項目のうち、「購入数量」である。
【００４２】  ここで、「購入数量」の値は、自然数である。すなわち、「購入数量」は、「１」以外の自然数も含む。また、「購入数量」の値は、半ダースを示す「６」や、その倍数である「１２」「１８」などの自然数も含まれる。つまり、例えば、商品を半ダース単位（つまり「６」個単位）で販売する小売店の販売データに含まれる「購入数量」の値は、「６」の倍数である。
【００４３】  圧縮部分データＤ３は、部分データＤ２に含まれる辞書項目の値に代えて、辞書項目の値ごとに決定された辞書値を含む。つまり、圧縮部分データＤ３において、辞書項目の値は、辞書値に置換されている。辞書項目は、「顧客ＩＤ」と「日付」である。辞書値のデータ長は、辞書項目の値のデータ長よりも短い（小さい）。辞書項目の値と、対応する辞書値とは、関連付けられた辞書データＤ４として記憶部２に記憶される。
【００４４】  例えば、図８は、圧縮部分データＤ３ａに含まれる情報が、データの先頭から、商品コード「１２３」、店舗番号「２７」、購入数量「１」、購入数量の繰返回数「３」、購入金額「２９９」、購入金額の繰返回数「３」、１人目の客の顧客ＩＤ「０」、２人目の客の顧客ＩＤ「１」、３人目の客の顧客ＩＤ「２」、１人目の日付「０」、２人目の日付「０」、３人目の日付「０」、１人目の時間帯「１２」、２人目の時間帯「１３」、３人目の時間帯「１４」、１人目のレシート順位「０」、２人目のレシート順位「０」、３人目のレシート順位「０」、であることを示す。
【００４５】  すなわち、同図は、商品コード「１２３」の商品が店舗番号「２７」の店舗において、購入数量「１」のレコードの繰返回数が「３」で、購入金額「２９９」のレコードの繰返回数が「３」であることを示している。すなわち、部分データＤ２ａは、同商品１点が２９９円で購入（販売）されたことを示すレコードを３件含むことを示す。
【００４６】  同図は、同商品を購入した３人の客のうち、１人目の客の顧客ＩＤの辞書値が「０」、２人目の客の顧客ＩＤの辞書値が「１」、３人目の客の顧客ＩＤの辞書値が「２」、であることを示す。顧客ＩＤの辞書値については、後述する。
【００４７】  同図は、同商品を購入した３人の客のうち、１人目の客が購入した日付の辞書値が「０」、２人目の客が購入した日付の辞書値が「０」、３人目の客が購入した日付の辞書値が「０」、であることを示す。日付の辞書値については、後述する。
【００４８】  同図は、同商品を購入した３人の客のうち、１人目の客が購入した時間帯は「１２時台」、２人目の客が購入した時間帯は「１３時台」、３人目の客が購入した時間帯は「１４時台」、であることを示す。
【００４９】  同図は、同商品を購入した３人の客のうち、１人目の客のレシート順位の辞書値が「０」、２人目の客のレシート順位の辞書値が「０」、３人目の客のレシート順位の辞書値が「０」、であることを示す。レシート順位の辞書値については、後述する。
【００５０】●辞書データ  図１１は、辞書データＤ４の例を示す模式図であり、（ａ）は顧客ＩＤ辞書、（ｂ）は日付辞書、（ｃ）はレシート順位辞書、である。
【００５１】  辞書データＤ４は、部分データＤ２ａと部分データＤ２ｂと部分データＤ２ｃとで共通に生成される。
【００５２】  なお、本発明において、辞書データは、部分データごとに生成されてもよい。
【００５３】  顧客ＩＤ辞書は、顧客ＩＤの値ごとの辞書値を含むデータである。  同図（ａ）は、顧客ＩＤ「Ａ」とその辞書値「０」、顧客ＩＤ「Ｂ」とその辞書値「１」、顧客ＩＤ「Ｃ」とその辞書値「２」、とが関連付けられて顧客ＩＤ辞書として記憶されていることを示す。辞書値は、圧縮部分データ生成部４が、部分データＤ２から圧縮部分データＤ３を生成する際に、部分データＤ２に含まれる辞書ＩＤの値ごとに決定する。
【００５４】  辞書項目の値ごとの辞書値は、部分データＤ２ａと部分データＤ２ｂと部分データＤ２ｃとで共通に生成される。すなわち、例えば、部分データＤ２ａに含まれる顧客ＩＤ「Ａ」の辞書値「０」は、部分データＤ２ｂに含まれる顧客ＩＤ「Ａ」の辞書値でもある。
【００５５】  日付辞書は、日付の値ごとの辞書値を含むデータである。  同図（ｂ）は、日付「２０１９１００１」とその辞書値「０」とが関連付けられて日付辞書として記憶されていることを示す。辞書値は、圧縮部分データ生成部４が、部分データＤ２から圧縮部分データＤ３を生成する際に、部分データＤ２に含まれる日付の値ごとに決定する。
【００５６】  レシート順位辞書は、部分データＤ２に含まれるレコードのうち、顧客ＩＤごとのレシート番号の順位を含むデータである。  同図（ｃ）は、レシート順位「１番目」とその辞書値「０」とが関連付けられてレシート順位辞書として記憶されていることを示す。辞書値は、圧縮部分データ生成部４が、部分データＤ２から圧縮部分データＤ３を生成する際に、部分データＤ２に含まれるレコードのうち、顧客ＩＤごとのレシートのレシート番号の順位を特定して決定する。
【００５７】  例えば、図７（ａ）に示された部分データＤ２ａは、３件のレコードを含んでいて、１件目のレコードは顧客ＩＤ「Ａ」の顧客の部分データＤ２ａにおける１番目のレコード（レシート）、２件目のレコードは顧客ＩＤ「Ｂ」の顧客の部分データＤ２ａにおける１番目のレコード（レシート）、３件目のレコードは顧客ＩＤ「Ｃ」の顧客の部分データＤ２ａにおける１番目のレコード（レシート）である。また、図１１（ｃ）に示された辞書データＤ４のレシート順位辞書において、レシート順位「１番目」に対応する辞書値は「０」である。よって、図８に示された圧縮部分データＤ３ａにおいて、商品コード「１２３」を店舗番号「２７」で購入した３人の客のうち、１人目の客のレシート順位の辞書値は「０」、２人目の客のレシート順位の辞書値は「０」、３人目の客のレシート順位の辞書値は「０」、となっている。
【００５８】  前述のとおり、本実施の形態では、辞書値は、３つの圧縮部分データで共通に生成される。よって、例えば、図７に示されたように、部分データＤ２ａ、Ｄ２ｂ、Ｄ２ｃに含まれる日付「２０１９１００１」の辞書値は、図１１（ｂ）に示されたように「０」である。そのため、図８，９，１０に示された圧縮部分データＤ３ａ、Ｄ３ｂ、Ｄ３ｃのいずれにおいても、日付「２０１９１００１」は共通の辞書値「０」に置換されている。
【００５９】●インデックスデータ  図１２は、インデックスデータＤ５の例を示す模式図である。  インデックスデータは、圧縮データＤ６における、圧縮部分データＤ３と辞書データＤ４との開始位置を示す情報、つまり、圧縮データＤ６の所定位置（本実施の形態においては圧縮データＤ６の先頭位置）からのオフセット値である。
【００６０】  本装置１は、圧縮データＤ６から特定の部分データの全部または一部を読み出す復元処理を実行する際に、インデックスデータＤ５を参照する。
【００６１】  インデックスデータＤ５は、圧縮部分データＤ３ごとの圧縮データＤ６の先頭からのオフセット値と、辞書データＤ４の圧縮データＤ６の先頭からのオフセット値と、を含む。
【００６２】  圧縮部分データＤ３ごとの圧縮データＤ６の先頭からのオフセット値は、分割項目の値の組合せ、つまり、圧縮部分データＤ３を特定する情報と、関連付けてインデックスデータＤ５として記憶される。すなわち、圧縮部分データＤ３ごとのオフセット値は、分割項目である「商品コード」と関連付けて記憶される。同図（ａ）は、商品コード「２３４」と、オフセット値「ＯＦＦＳＥＴ  １」とが関連付けて記憶されていることを示す。同様に、同図（ｂ）は、商品コード「３４５」と、オフセット値「ＯＦＦＳＥＴ  ２」とが関連付けて記憶されていることを示す。
【００６３】  なお、圧縮部分データＤ３ａは圧縮データＤ６の先頭に配置されているので、インデックスデータＤ５は、圧縮部分データＤ３ａのオフセット値を含まない。本装置１は、圧縮部分データＤ３ａに対応する部分データＤ２ａを読み出す場合、圧縮データＤ６の先頭から圧縮部分データＤ３ａ読み出せばよいからである。
【００６４】  圧縮部分データＤ３ごとのオフセット値は、各圧縮部分データＤ３のデータ長に基づいて、算出される。すなわち、圧縮部分データＤ３ｂのオフセット値は、圧縮部分データＤ３ａのデータ長に基づいて算出される。圧縮部分データＤ３ｃのオフセット値は、圧縮部分データＤ３ａのデータ長と、圧縮部分データＤ３ｂのデータ長と、の和に基づいて、算出される。
【００６５】  辞書データＤ４の圧縮データＤ６の先頭からのオフセット値は、圧縮ブロックのデータ長、つまり、圧縮部分データＤ３ａのデータ長と、圧縮部分データＤ３ｂのデータ長と、圧縮部分データＤ３ｃのデータ長と、の和に基づいて、算出される。
【００６６】  前述のとおり、本実施の形態において生成されるインデックスデータＤ５は、圧縮部分データＤ３ｂの圧縮データＤ６の先頭からのオフセット値と、圧縮部分データＤ３ｃの圧縮データＤ６の先頭からのオフセット値と、辞書データＤ４の圧縮データＤ６の先頭からのオフセット値と、を含む。
【００６７】  同図は、インデックスデータＤ５として、圧縮部分データＤ３ｂのオフセット値「ＯＦＦＳＥＴ  １」と、圧縮部分データＤ３ｃのオフセット値「ＯＦＦＳＥＴ  ２」と、辞書データのオフセット値「ＯＦＦＳＥＴ  ３」と、が算出（生成）されていることを示す。
【００６８】●圧縮データ  図１３は、圧縮データＤ６のデータ構造の例を示す模式図である。  圧縮データＤ６は、圧縮ブロックと、辞書ブロックと、インデックスブロックと、が結合して構成される。圧縮データＤ６の先頭には、圧縮ブロックが配置され、次いで辞書ブロックが配置され、次いでインデックスブロックが配置される。
【００６９】  圧縮ブロックは、圧縮部分データＤ３ａ、Ｄ３ｂ、Ｄ３ｃが結合して構成される。圧縮ブロックの先頭には圧縮部分データＤ３ａが配置され、次いで圧縮部分データＤ３ｂが配置され、次いで圧縮部分データＤ３ｃが配置される。
【００７０】  辞書ブロックは、顧客ＩＤ辞書と、日付辞書と、レシート順位辞書と、が結合して構成される。辞書ブロックの先頭には顧客ＩＤ辞書が配置され、次いで日付辞書が配置され、次いでレシート順位辞書が配置される。
【００７１】  インデックスブロックは、圧縮部分データＤ３ｂのオフセット値と、圧縮部分データＤ３ｃのオフセット値と、辞書データＤ４のオフセット値とが結合して構成される。インデックスブロックの先頭には圧縮部分データＤ３ｂのオフセット値が配置され、次いで圧縮部分データＤ３ｃのオフセット値が配置され、次いで辞書データＤ４のオフセット値が配置される。
【００７２】●データ処理方法●  次に、本方法の実施の形態について説明する。
【００７３】  図１４は、本方法の実施の形態を示すフローチャートである。
【００７４】  先ず、本装置１は、部分データ生成部３を用いて、部分データ生成処理を実行する（Ｓ１）。部分データ生成処理は、被圧縮データＤ１から部分データＤ２を生成する情報処理である。
【００７５】  次いで、本装置１は、圧縮部分データ生成部４を用いて、圧縮部分データ生成処理を実行する（Ｓ２）。圧縮部分データ生成処理は、部分データＤ２から、部分データＤ２ごとの圧縮部分データＤ３を生成する情報処理である。圧縮部分データ生成処理は、圧縮部分データＤ３を生成する過程において、辞書データＤ４を生成する情報処理も含む。圧縮部分データ生成処理は、生成された圧縮部分データＤ３からインデックスデータＤ５を生成する情報処理を含む。
【００７６】  次いで、本装置１は、圧縮データ生成部５を用いて、圧縮データ生成処理を実行する（Ｓ３）。圧縮データ生成処理は、圧縮部分データＤ３と辞書データＤ４とインデックスデータＤ５とから、圧縮データＤ６を生成する情報処理である。
【００７７】●部分データ生成処理（Ｓ１）  次に、部分データ生成処理について説明する。  図１５は、部分データ生成処理の例を示すフローチャートである。
【００７８】  先ず、本装置１は、被圧縮データＤ１であるところのレシートデータ（図５参照）を読み込む（Ｓ１１）。
【００７９】  次いで、本装置１は、レシートデータを、商品コードでソート、つまり、各レコードに含まれる商品コードの値に基づいて、データ内でのレコードの格納順（配列順）を並び替える（Ｓ１２）。商品コードでのソート順は、例えば、商品コードの値の昇順である。
【００８０】  次いで、本装置１は、商品コードでソートされたレシートデータを、店舗番号でソートする（Ｓ１３）。店舗番号でのソート順は、例えば、店舗番号の値の昇順である。
【００８１】  次いで、本装置１は、商品コードと店舗番号とでソートされたレシートデータを、購入数量でソートする（Ｓ１４）。購入数量でのソート順は、例えば、購入数量の値の昇順である。
【００８２】  次いで、本装置１は、商品コードと店舗番号と購入数量とでソートされたレシートデータ（図６参照）を、分割項目である「商品コード」が共通するレコードごとに分割して複数の部分データＤ２（図７参照）を生成する（Ｓ１５）。
【００８３】●圧縮部分データ生成処理（Ｓ２）  次に、圧縮部分データ生成処理について説明する。  図１６は、圧縮部分データ生成処理の例を示すフローチャートである。
【００８４】  先ず、本装置１は、複数の部分データＤ２のうち、１の部分データＤ２（例えば、部分データＤ２ａ）を読み込む（Ｓ２１）。圧縮部分データ生成処理は、部分データごとに実行されるが、本実施の形態における圧縮部分データ生成処理は、先ずは部分データＤ２ａ、次いで部分データＤ２ｂ、次いで部分データＤ２ｃ、の順に実行される。
【００８５】  次いで、本装置１は、部分データＤ２を構成するレコード（購入数量の値でソート済）に含まれる購入数量の値を、部分データＤ２の先頭レコードから順次読み出して、購入数量の値が共通するレコードの連続数、つまり、購入数量の値が共通するレコードの繰返回数を特定する（Ｓ２２）。
【００８６】  次いで、本装置１は、部分データＤ２を構成するレコードに含まれる購入金額の値を、部分データＤ２の先頭のレコードから順次読み出して、購入金額の値が共通するレコードの連続数、つまり、購入金額の値が共通するレコードの繰返回数を特定する（Ｓ２３）。
【００８７】  次いで、本装置１は、部分データＤ２を構成するレコードに含まれる辞書項目である「顧客ＩＤ」の値ごとの辞書値を決定して、顧客ＩＤ辞書を生成する（Ｓ２４）。
【００８８】  顧客ＩＤの辞書値の決定は、辞書値の複数の候補値が予め記憶部２に記憶されていて、本装置１が候補値の中から辞書値として選択されていないものを辞書値として選択・決定する。
【００８９】  例えば、顧客ＩＤの辞書値の候補値として、「０」「１」「２」・・・が記憶部２に記憶されている。本装置１は、図７（ａ）に示された部分データＤ２ａに対する圧縮部分データ生成処理を実行する過程において、部分データＤ２ａの１件目のレコードから顧客ＩＤ「Ａ」を読み出す。
【００９０】  本装置１は、記憶部２を参照して顧客ＩＤ辞書が記憶されているか否かを判定し、顧客ＩＤ辞書が記憶されていないと判定すると、候補値「０」を顧客ＩＤ「Ａ」の辞書値として決定して、顧客ＩＤ「Ａ」と辞書値「０」とを関連付けた顧客ＩＤ辞書を生成して、記憶部２に記憶する。
【００９１】  次いで、本装置１は、部分データＤ２ａの２件目のレコードから顧客ＩＤ「Ｂ」を読み出す。本装置１は、記憶部２を参照して顧客ＩＤ辞書が記憶されているか否かを判定して、記憶されていると判定する。本装置１は、記憶部２に記憶されている顧客ＩＤ辞書を参照して、顧客ＩＤ「Ｂ」の辞書値が記憶されているか否かを判定し、記憶されていないと判定し、候補値「１」を顧客ＩＤ「Ｂ」の辞書値として決定して、顧客ＩＤ「Ｂ」と辞書値「１」とを関連付けて顧客ＩＤ辞書に追記して、顧客ＩＤ辞書の内容を更新して記憶する。
【００９２】  次いで、同様に、本装置１は、部分データＤ２ａの３件目のレコードから顧客ＩＤ「Ｃ」を読み出すと、辞書値「２」と関連付けて顧客ＩＤ辞書に記憶する。
【００９３】  さらに、本装置１は、図７（ｂ）に示された部分データＤ２ｂに対する圧縮部分データ生成処理を実行する過程において、部分データＤ２ｂの１件目のレコードから顧客ＩＤ「Ａ」を読み出す。本装置１は、記憶部２を参照して、顧客ＩＤ「Ａ」の辞書値がすでに顧客ＩＤ辞書に記憶されていると判定すると、辞書値の決定はしない（すでに顧客ＩＤ辞書に記憶されている辞書値「０」を流用する）。
【００９４】  以降、同様の情報処理が繰り返されて、すべての部分データＤ２で共通の顧客ＩＤ辞書が完成する。
【００９５】  次いで、本装置１は、部分データＤ２を構成するレコードに含まれる辞書項目である「日付」の値ごとの辞書値を決定して、日付辞書を生成する（Ｓ２５）。
【００９６】  日付の辞書値の決定方法は、前述の顧客ＩＤの辞書値の決定方法と同様に、予め記憶部２に記憶されている辞書値の複数の候補値の中から初出の日付の値に対する辞書値が選択されて、辞書値として決定される。決定された辞書値は、辞書項目の値と関連付けて記憶部２に日付辞書として記憶される。
【００９７】  次いで、本装置１は、部分データＤ２を構成するレコードに含まれる顧客ＩＤごとのレシート番号の順位（レシート順位）を特定し、特定されたレシート順位（１番目、２番目、３番目・・・）ごとの辞書値を決定して、レシート順位辞書を生成する（Ｓ２６）。
【００９８】  レシート順位ごとの辞書値の決定方法は、前述の顧客ＩＤごとの辞書値の決定方法と同様に、予め記憶部２に記憶されている辞書値の複数の候補値の中から初出のレシート順位に対する辞書値が選択されて、辞書値として決定される。決定された辞書値は、辞書項目の値（レシート順位）と関連付けて記憶部２にレシート順位辞書として記憶される。
【００９９】  例えば、レシート順位の辞書値の候補値として、「０」「１」「２」・・・が記憶部２に記憶されている。本装置１は、図７（ａ）に示された部分データＤ２ａに対する圧縮部分データ生成処理を実行する過程において、部分データＤ２ａの１件目のレコードから顧客ＩＤ「Ａ」を読み出す。
【０１００】  次いで、本装置１は、読み出されたレコードが部分データＤ２ａにおける顧客ＩＤ「Ａ」の何件目のレコードであるか、つまり、レコード順位を特定する。この特定は、例えば、本装置１は、部分データＤ２ａの先頭から順にレコードを読み出すごとに、読み出されたレコードに含まれる顧客ＩＤの値をカウントしてレコード順位（１番目、２番目、３番目・・・）を判定する。例えば、本装置１は、部分データＤ２ａの１件目のレコードを読み出したとき、顧客ＩＤ「Ａ」の１件目のレコードである、つまり、レコード順位「１番目」と判定する。
【０１０１】  次いで、本装置１は、記憶部２を参照してレシート順位辞書が記憶されているか否かを判定し、レシート順位辞書が記憶されていないと判定すると、候補値「０」をレシート順位「１番目」の辞書値として決定して、レシート順位「１番目」と辞書値「０」とを関連付けたレシート順位辞書を生成して、記憶部２に記憶する。
【０１０２】  次いで、本装置１は、部分データＤ２ａの２件目のレコードから顧客ＩＤ「Ｂ」を読み出す。本装置１は、部分データＤ２ａにおける顧客ＩＤ「Ｂ」のレコード順位「１番目」を特定する。本装置１は、記憶部２を参照してレコード順位辞書が記憶されているか否かを判定し、記憶されていると判定する。本装置１は、記憶部２に記憶されているレシート順位辞書を参照して、レコード順位「１番目」の辞書値が記憶されているか否かを判定し、記憶されているので、辞書値の決定はしない（すでにレコード順位辞書に記憶されている辞書値「０」を流用する）。
【０１０３】  次いで、本装置１は、部分データＤ２ａの３件目のレコードから顧客ＩＤ「Ｃ」を読み出して、前述の２件目のレコードと同様、レコード順位が「１番目」であるので、前述のとおり、辞書値の決定はしない。
【０１０４】  以降、同様の情報処理が繰り返されて、すべての部分データＤ２で共通のレシート順位辞書が完成する。
【０１０５】  以上の処理Ｓ２１からＳ２８が実行されることで、図８（ａ）に示された圧縮部分データＤ３ａを構成するデータ項目のすべての値が決定されて、圧縮部分データＤ３ａが生成される（Ｓ２７）。
【０１０６】  本装置１は、部分データ生成処理（Ｓ２）により生成された部分データＤ２のすべて（部分データＤ２ａ、Ｄ２ｂ、Ｄ２ｃ）について、処理Ｓ２１から処理Ｓ２６を実行する（Ｓ２８）。その結果、本装置１は、図８，９，１０に示された圧縮部分データＤ３ａ、Ｄ３ｂ、Ｄ３ｃと、図１１に示された辞書データＤ４と、を生成して、記憶部２に記憶する。また、本装置１は、圧縮部分データＤ３ａ，Ｄ３ｂ，Ｄ３ｃの各データのデータ長を特定して、これらのデータ長に基づいてインデックスデータＤ５、つまり、圧縮部分データＤ３ｂ，Ｄ３ｃそれぞれのオフセット値と辞書ブロックのオフセット値と、を算出（特定）して記憶部２に記憶する。
【０１０７】  なお、顧客ＩＤ辞書の生成処理（Ｓ２４）と、日付辞書の生成処理（Ｓ２５）と、レシート順位辞書の生成処理（Ｓ２６）とは、同時に実行されてもよい。また、これらの辞書の生成処理（Ｓ２４からＳ２６）、つまり、各辞書の辞書値を決定する処理は、購入数量とその繰返回数の特定する処理（Ｓ２２）や、購入金額とその繰返回数の特定する処理（Ｓ２３）と、同時に実行されてもよい。すなわち、例えば、本装置１は、部分データＤ２の先頭から順にレコードを読み出すごとに、これらの処理（Ｓ２２からＳ２６）の全部または一部を同時に実行してもよい。
【０１０８】●圧縮データ生成処理（Ｓ３）  次に、圧縮データ生成処理について説明する。  図１７は、圧縮データ生成処理の例を示すフローチャートである。
【０１０９】  先ず、本装置１は、圧縮部分データ生成処理（Ｓ２）により生成されて記憶部２に記憶されている圧縮部分データＤ３を読み込んで、圧縮ブロックを生成する（Ｓ３１）。
【０１１０】  次いで、本装置１は、圧縮部分データ生成処理（Ｓ２）により生成されて記憶部２に記憶されている辞書データＤ４を読み込んで、辞書ブロックを生成する（Ｓ３２）。
【０１１１】  次いで、本装置１は、圧縮部分データ生成処理（Ｓ２）により生成されて記憶部２に記憶されているインデックスデータＤ５を読み込んで、インデックスブロックを生成する（Ｓ３３）。
【０１１２】  次いで、本装置１は、圧縮ブロックと、辞書ブロックと、インデックスブロックと、を結合して、図１３に示された圧縮データＤ６を生成して記憶部２に記憶する（Ｓ３４）。
【０１１３】  図１８は、本装置１による圧縮率の実施例を示す表である。  同図は、同一の被圧縮データを圧縮する際に、部分データの生成の際の被圧縮データのソート処理に用いられる項目の順序の相違による、生成された圧縮データの容量の相違、つまり、圧縮率の相違を示す。この実施例における被圧縮データの容量は、７ＧＢ（ギガバイト）である。
【０１１４】  同図は、「顧客ＩＤ」「店舗番号」「購入数量」の順でソート処理して圧縮した場合、圧縮データのデータ容量は、１０２７ＭＢ（メガバイト）であったことを示す。
【０１１５】  同図は、「顧客ＩＤ」「店舗番号」「商品コード」「購入数量」の順でソート処理して圧縮した場合、圧縮データのデータ容量は、１０８３ＭＢであったことを示す。
【０１１６】  一方、同図は、前述の本実施の形態の場合、つまり、「商品コード」「店舗番号」「購入数量」の順でソート処理して圧縮した場合、圧縮データのデータ容量は、７３１ＭＢであったことを示す。
【０１１７】  なお、同図は、参考情報として、同一の被圧縮データをｇｕｎｚｉｐ方式で圧縮した場合、圧縮データのデータ容量は、１１００ＭＢであったことを示す。
【０１１８】  このように、部分データを生成する際のソート処理に用いられる項目や、ソート処理が実行される項目の順序により、圧縮率は異なる。また、被圧縮データを構成する項目のうち、分割項目と圧縮項目との選択により、圧縮率は異なる。したがって、被圧縮データを構成するレコードに含まれる各項目の値の特性（特徴）に鑑みて、ソート処理で用いられる項目やソート処理が実行される項目の順序、あるいは、分割項目や圧縮項目が選択されることで、圧縮率は大きくなる（圧縮データの容量がより小さくなる）。すなわち、項目（圧縮項目）の値が共通するレコードの数、つまり、項目（圧縮項目）の値の繰返回数が多くなるように、被圧縮データを複数の部分データに分割する（分割項目を設定する）ことで、圧縮率は大きくなる。
【０１１９】  本実施の形態における被圧縮データＤ１は、小売店の販売データ（レシートデータ）であった。出願人の調査によれば、店舗に来店した客が商品ごとに購入する商品点数（販売数量）は、１点が約７２．７％、２点が約１７．３％、３点が約４．３％、４点以上が約５．７％である。すなわち、被圧縮データＤ１を構成するレコードに含まれる各項目のうち、各レコードで同じ値を取り得る可能性の最も高い項目は「販売数量」である。また、同一商品の同一店舗での販売価格（購入金額）は、通常、値引販売を除いて、同一である。よって、販売データに含まれるレコードを、「商品コード」「店舗番号」「購入数量」の順序でソート処理した後、「商品コード」を分割項目として被圧縮データＤ１を複数の部分データＤ２に分割した上で、「販売数量」を圧縮項目として各部分データＤ２から圧縮部分データＤ３を生成することで、圧縮効率（データの処理効率）が高まる、つまり、圧縮データＤ６の小容量化が実現される。
【０１２０】  また、被圧縮データＤ１を構成するレコードに含まれる複数の項目のうち、分割項目と圧縮項目のいずれでもない項目で、圧縮データＤ６から復元が必要となる項目の値は、データ長の短い（小さい）辞書値に置換されて圧縮データＤ６に格納されるため、圧縮データＤ６の圧縮効率が高まる。
【０１２１】●圧縮データの復元処理（圧縮データから部分データの読出し）  本装置１は、圧縮データＤ６から、部分データＤ２ａ，Ｄ２ｂ，Ｄ２ｃそれぞれを読み出すことができる。
【０１２２】  以下、部分データＤ２ｂを読み出す、つまり、商品コード「２３４」の商品の販売データを読み出す場合を例に説明する。
【０１２３】  本装置１は、先ず、記憶部２に記憶されている圧縮データＤ６を読み出す。
【０１２４】  次いで、本装置１は、圧縮データＤ６のインデックスブロックを参照して、圧縮部分データＤ３ｂのオフセット値「ＯＦＦＳＥＴ  １」と、辞書ブロックのオフセット値「ＯＦＦＳＥＴ  ３」を読み出す。本装置１は、商品コード「２３４」と関連付けてインデックスブロック内に記憶されている、圧縮部分データＤ３ｂのオフセット値「ＯＦＦＳＥＴ  １」を読み出す。本装置１は、予め決められた所定の情報（辞書ブロックを特定する情報）と関連付けてインデックスブロック内に記憶されている、辞書ブロックのオフセット値「ＯＦＦＳＥＴ  ３」を読み出す。
【０１２５】  次いで、本装置１は、圧縮データＤ６の先頭から「ＯＦＦＳＥＴ  １」の位置に格納されている圧縮部分データＤ３ｂを読み出し、圧縮データＤ６の先頭から「ＯＦＦＳＥＴ  ３」の位置に格納されている辞書データＤ４を読み出す。
【０１２６】  次いで、本装置１は、辞書データＤ４を参照して、圧縮部分データＤ３ｂに含まれる辞書値に対応する辞書項目の値を特定し、辞書値を辞書項目の値に置換して、圧縮部分データＤ３ｂから部分データＤ２ｂを生成する。
【０１２７】  このように、本装置１は、圧縮データＤ６から部分データＤ２ｂを復元して、部分データＤ２ｂを読み出す。
【０１２８】  ただし、本装置１が圧縮データＤ６から復元して生成される部分データＤ２ｂは、被圧縮データＤ１に含まれていた項目「レシート番号」の値を含んでいない。つまり、本装置１は、圧縮データＤ６から部分データＤ２ｂの一部のデータのみを復元（生成）する。これは、図７から図１０に示されたように、圧縮部分データ生成処理において生成される圧縮部分データＤ３が、部分データＤ２に含まれる「レシート番号」の値に対応する情報（値そのもの、または、その辞書値）を含んでいないためである。つまり、本装置１は、部分データＤ２から「レシート番号」の値を欠落させて圧縮部分データＤ３を生成したためである。このように、圧縮データから復元された部分データが含まなくてよい項目の値は、圧縮部分データ生成処理において欠落させることで、圧縮データＤ６の小容量化が実現される。
【０１２９】  なお、本装置１は、圧縮データＤ６から、部分データＤ２ａ，Ｄ２ｂ，Ｄ２ｃそれぞれを、同時に読み出すこともできる。すなわち、本装置１は、例えば、圧縮部分データＤ３ｂのオフセット値と、圧縮部分データＤ３ｃのオフセット値とをインデックスブロックから読み出し、圧縮ブロックの先頭に記憶されている圧縮部分データＤ３ａと共に圧縮部分データＤ３ｂ，Ｄ３ｃを読み出して、各圧縮部分データの復元処理を同時に実行する。その結果、本装置１は、部分データＤ２ａ，Ｄ２ｂ，Ｄ２ｃの一部のデータ項目の値を復元して、部分データＤ２ａ，Ｄ２ｂ，Ｄ２ｃを読み出す。
【０１３０】●まとめ●  以上説明した実施の形態によれば、被圧縮データＤ１の圧縮処理において、本装置１は、被圧縮データＤ１を複数の部分データＤ２に分割した上で、各部分データＤ２を圧縮して圧縮部分データＤ３を生成する。本装置１は、複数の圧縮部分データＤ３を結合して圧縮データＤ６を生成する。本装置１は、被圧縮データＤ１に含まれる分割項目（商品コード）に基づいて、部分データＤ２を生成する。本装置１は、部分データＤ２に含まれる圧縮項目（購入数量）の値が同一のレコードの繰返回数に基づいて、部分データＤ２の圧縮を行う。本装置１は、圧縮項目の値が同一のレコード同士で、値が共通する項目（購入金額）の繰返回数に基づいて、部分データＤ２の圧縮を行う。よって、被圧縮データＤ１を構成するレコードに含まれる各項目の値の特性（特徴）に鑑みて、複数の項目の中から分割項目や圧縮項目が選択されることで、本装置１による圧縮処理の圧縮効率は、高まる。
【０１３１】  また、本装置１は、被圧縮データＤ１を構成するレコードに含まれる項目のうち、分割項目や圧縮項目ではない項目の値を、同値のデータ長よりも短い（小さい）データ長の辞書値に変換して圧縮データＤ６を生成する。そのため、本装置１による圧縮処理の圧縮効率は、さらに高まる。
【０１３２】  一方、圧縮データＤ６の復元処理において、本装置１は、インデックスデータＤ５を参照することで、圧縮データＤ６に含まれる複数の部分データＤ２の全部または一部を選択的に読み出すことができる。すなわち、所望の部分データＤ２のみを圧縮データＤ６から復元することができる本装置１による復元処理の復元効率は、高い。
【０１３３】  また、本装置１は、圧縮データＤ６から複数の部分データＤ２を同時に復元することもでき、本装置１による復元処理の復元効率は、高い。
【０１３４】  以下、これまで説明した本装置と本プログラムと本方法の特徴を、まとめて記載しておく。
【０１３５】（特徴１）  複数のレコードを含む取引データを処理する装置であって、  前記レコードのそれぞれは、少なくとも１つの項目の値を含み、  前記項目は、取引数量を含み、  前記取引データが記憶される記憶部（例えば、記憶部２）と、  前記記憶部に記憶されている前記取引データに含まれる前記取引数量の値に基づいて、前記取引データに対応する圧縮データを生成する圧縮データ生成部（例えば、圧縮データ生成部５）と、を有してなり、  前記取引数量の値は、１以外の自然数が含まれる、ことを特徴とするデータ処理装置。
【０１３６】（特徴２）  前記取引数量の値は、６の倍数が含まれる、特徴１記載のデータ処理装置。
【０１３７】（特徴３）  前記圧縮データ生成部は、前記取引データに含まれる前記レコードのうち前記取引数量の値が同じ前記レコードの数に基づいて、前記圧縮データを生成する、特徴１記載のデータ処理装置。
【０１３８】（特徴４）  前記圧縮データ生成部は、  前記取引データに含まれる前記レコードの前記取引データ内での格納の順序を、前記取引数量の値に基づいて、並べ替えて、  前記取引数量の値が同じ前記レコードの前記取引データ内での繰返回数に基づいて、前記圧縮データを生成する、特徴３記載のデータ処理装置。
【０１３９】（特徴５）  前記複数の項目は、辞書項目を含み、  前記圧縮データ生成部は、  前記取引データに含まれる前記辞書項目の値ごとに、対応する辞書値を決定し、  前記取引データに含まれる前記辞書項目の値を、対応する前記辞書値に置換して、前記圧縮データを生成し、  前記辞書値のデータ長は、対応する前記辞書項目の値のデータ長より短い、特徴４記載のデータ処理装置。
【０１４０】（特徴６）  前記項目は、商品コードを含み、  前記記憶部に記憶されている前記取引データに含まれる前記商品コードの値に基づいて、前記取引データを複数の部分データに分割する部分データ生成部（例えば、部分データ生成部３）と、  前記部分データに含まれる前記取引数量の値に基づいて、前記部分データごとの圧縮部分データを生成する圧縮部分データ生成部（例えば、圧縮部分データ生成部４）と、を有してなり、  前記圧縮データ生成部は、前記圧縮部分データに基づいて、前記圧縮データを生成する、特徴１記載のデータ処理装置。
【０１４１】（特徴７）  前記圧縮部分データ生成部は、前記部分データごとに、前記部分データに含まれる前記レコードのうち前記取引数量の値が同じ前記レコードの数に基づいて、前記圧縮部分データを生成する、特徴６記載のデータ処理装置。
【０１４２】（特徴８）  前記部分データ生成部は、前記取引データに含まれる前記レコードの前記取引データ内での格納の順序を、前記取引数量の値に基づいて、並び替えて、  前記圧縮部分データ生成部は、前記取引数量の値が同じ前記レコードの前記取引データ内での繰返回数に基づいて、前記圧縮部分データを生成する、特徴７記載のデータ処理装置。
【０１４３】（特徴９）  コンピュータを、特徴１記載のデータ処理装置として機能させる、ことを特徴とするデータ処理プログラム。
【０１４４】（特徴１０）  複数のレコードを含む取引データが記憶される記憶部（例えば、記憶部２）を備えた装置により実行される方法であって、  前記レコードのそれぞれは、少なくとも１つの項目の値を含み、  前記項目は、取引数量を含み、  前記装置は、  前記記憶部に記憶されている前記取引データに含まれる前記取引数量の値に基づいて、前記取引データに対応する圧縮データを生成する圧縮データ生成ステップ、を有してなり、  前記取引数量の値は、１以外の自然数が含まれる、ことを特徴とするデータ処理方法。
【０１４５】（特徴１１）  複数のレコードを含む被圧縮データを処理する装置であって、  前記レコードのそれぞれは、複数の項目ごとの値を含み、  複数の前記項目は、分割項目と圧縮項目とを含み、  前記被圧縮データが記憶される記憶部（例えば、記憶部２）と、  前記記憶部に記憶されている前記被圧縮データに含まれる前記分割項目の値に基づいて、前記被圧縮データを複数の部分データに分割する部分データ生成部（例えば、部分データ生成部３）と、  前記部分データに含まれる前記圧縮項目の値に基づいて、前記部分データごとの圧縮部分データを生成する圧縮部分データ生成部（例えば、圧縮部分データ生成部４）と、  前記圧縮部分データに基づいて、前記被圧縮データに対応する圧縮データを生成する圧縮データ生成部（例えば、圧縮データ生成部５）と、を有してなる、ことを特徴とするデータ処理装置。
【０１４６】（特徴１２）  前記部分データ生成部は、前記被圧縮データに含まれる複数の前記レコード単位で前記被圧縮データを分割する、特徴１１記載のデータ処理装置。
【０１４７】（特徴１３）  前記部分データは、前記被圧縮データに含まれる複数の前記レコードのうち、１または複数の前記レコードを含む、特徴１２記載のデータ処理装置。
【０１４８】（特徴１４）  前記圧縮部分データ生成部は、前記部分データごとに、前記部分データに含まれる前記レコードのうち前記圧縮項目の値が同じ前記レコードの数に基づいて、前記圧縮部分データを生成する、特徴１１記載のデータ処理装置。
【０１４９】（特徴１５）  前記部分データ生成部は、前記被圧縮データに含まれる前記レコードの前記被圧縮データ内での格納の順序を、前記圧縮項目の値に基づいて、並び替えて、  前記圧縮部分データ生成部は、前記圧縮項目の値が同じ前記レコードの前記被圧縮データ内での繰返回数に基づいて、前記圧縮部分データを生成する、特徴１４記載のデータ処理装置。
【０１５０】（特徴１６）  複数の前記項目は、辞書項目を含み、  前記圧縮部分データ生成部は、  前記部分データに含まれる前記辞書項目の値ごとに、対応する辞書値を決定し、  前記部分データに含まれる前記辞書項目の値を、対応する前記辞書値に置換して、前記圧縮部分データを生成し、  前記辞書値のデータ長は、対応する前記辞書項目の値のデータ長より短い、特徴１１記載のデータ処理装置。
【０１５１】（特徴１７）  前記記憶部は、  前記辞書項目の値と、  前記辞書項目の値に対応する前記辞書値と、が関連付けられた辞書データを記憶する、特徴１６記載のデータ処理装置。
【０１５２】（特徴１８）  前記圧縮データ生成部は、複数の前記圧縮部分データごとの前記圧縮データの所定位置からのオフセット値を算出し、  前記圧縮データは、複数の前記圧縮部分データごとの前記オフセット値を含む、特徴１７記載のデータ処理装置。
【０１５３】（特徴１９）  前記圧縮データは、  前記部分データごとの前記圧縮部分データと、  前記辞書値と、を含む、特徴１８記載のデータ処理装置。
【０１５４】（特徴２０）  前記記憶部は、  前記部分データに含まれる前記分割項目の値と、  前記部分データに対応する前記圧縮部分データのオフセット値と、が関連付けられたインデックスデータを記憶する、特徴１８記載のデータ処理装置。
【０１５５】（特徴２１）  前記被圧縮データは、複数の商品を顧客に販売する店舗の販売データであって、  前記レコードは、前記顧客が購入した商品を特定する商品コードと、前記顧客が購入した前記商品の購入数量と、を含み、  前記分割項目は、前記商品コードであり、  前記圧縮項目は、前記購入数量である、特徴１１記載のデータ処理装置。
【０１５６】（特徴２２）  前記購入数量の値は、１以外の自然数が含まれる、特徴２１記載のデータ処理装置。
【０１５７】（特徴２３）  前記購入数量の値は、６の倍数が含まれる、特徴２１記載のデータ処理装置。
【０１５８】（特徴２４）  コンピュータを、特徴１１記載のデータ処理装置として機能させる、ことを特徴とするデータ処理プログラム。
【０１５９】（特徴２５）  複数のレコードを含む被圧縮データが記憶される記憶部（例えば、記憶部２）を備えた装置により実行される方法であって、  前記レコードのそれぞれは、複数の項目ごとの値を含み、  複数の前記項目は、分割項目と圧縮項目とを含み、  前記装置は、  前記記憶部に記憶されている前記被圧縮データに含まれる前記分割項目の値に基づいて、前記被圧縮データを複数の部分データに分割する部分データ生成ステップと、  前記部分データに含まれる前記圧縮項目の値に基づいて、前記部分データごとの圧縮部分データを生成する圧縮部分データ生成ステップと、  前記圧縮部分データに基づいて、前記被圧縮データに対応する圧縮データを生成する圧縮データ生成ステップと、を有してなる、ことを特徴とするデータ処理方法。
【符号の説明】
【０１６０】  １  データ処理装置  ２  記憶部  ３  部分データ生成部  ４  圧縮部分データ生成部  ５  圧縮データ生成部Ｄ１  被圧縮データ（レシートデータ）Ｄ２  部分データＤ３  圧縮部分データＤ４  辞書データＤ５  インデックスデータＤ６  圧縮データ  
【要約】  データの処理効率を高めることができるデータ処理装置とデータ処理プログラムとデータ処理方法とを得る。  複数のレコードを含む取引データ（Ｄ１）を処理する装置（１）であって、レコードのそれぞれは、少なくとも１つの項目の値を含み、項目は、取引数量を含み、取引データが記憶される記憶部（２）と、記憶部（２）に記憶されている取引データに含まれる取引数量の値に基づいて、取引データに対応する圧縮データ（Ｄ６）を生成する圧縮データ生成部（５）と、を有してなり、取引数量の値は、１以上の自然数が含まれる。【図１】
0006956299.tif 000002
【図２】
0006956299.tif 000003
【図３】
0006956299.tif 000004
【図４】
0006956299.tif 000005
【図５】
0006956299.tif 000006
【図６】
0006956299.tif 000007
【図７】
0006956299.tif 000008
【図８】
0006956299.tif 000009
【図９】
0006956299.tif 000010
【図１０】
0006956299.tif 000011
【図１１】
0006956299.tif 000012
【図１２】
0006956299.tif 000013
【図１３】
0006956299.tif 000014
【図１４】
0006956299.tif 000015
【図１５】
0006956299.tif 000016
【図１６】
0006956299.tif 000017
【図１７】
0006956299.tif 000018
【図１８】
0006956299.tif 000019