(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-08
(45)【発行日】2024-03-18
(54)【発明の名称】データ記憶方法、装置、クエリ方法、電子機器および可読媒体
(51)【国際特許分類】
G06F 16/9035 20190101AFI20240311BHJP
【FI】
G06F16/9035
(21)【出願番号】P 2022523671
(86)(22)【出願日】2021-05-06
(86)【国際出願番号】 CN2021091913
(87)【国際公開番号】W WO2022121227
(87)【国際公開日】2022-06-16
【審査請求日】2022-04-21
(31)【優先権主張番号】202011452209.3
(32)【優先日】2020-12-07
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】512015127
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド
(74)【代理人】
【識別番号】100112656
【氏名又は名称】宮田 英毅
(74)【代理人】
【識別番号】100089118
【氏名又は名称】酒井 宏明
(72)【発明者】
【氏名】全威龍
(72)【発明者】
【氏名】王冬
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】中国特許出願公開第112015775(CN,A)
【文献】中国特許出願公開第111949912(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
電子機器により実行されるデータ記憶方法であって、
各ユーザのタグデータが異なるタグテーブルにある
場合、ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することと、
同じユーザのバケットデータを同じ記憶モジュールに記憶することと、を含み、
前記ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することは、
前記全てのユーザのタグデータをタグタイプに従って分類し、複数のタグテーブルを取得することと、
ユーザIDに基づいて各タグテーブルにおけるタグデータをバケット分けし、各ユーザのバケットデータを取得することと、を含み、
前記タグタイプは、クエリ方式によって確定されるタイプである、
データ記憶方法。
【請求項2】
前記タグタイプは、静的タグと、動的タグとを含み、前記静的タグに対応するタグデータは時間的に変化せず、前記動的タグに対応するタグデータは時間的に変化する、
請求項1に記載の方法。
【請求項3】
前記ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することは、
ユーザIDに基づき、ハッシュ・アルゴリズムにより前記全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することを含む、
請求項1に記載の方法。
【請求項4】
各ユーザのタグデータが異なるタグテーブルにある場合、全てのユーザのタグデータを記憶し、且つ、同じユーザのバケットデータが同じ記憶モジュールに記憶されるように構成される複数の記憶モジュールを備え、
前記バケットデータは、ユーザIDに基づいて前記全てのユーザのタグデータをバケット分けすることにより取得されるデータであり、
各ユーザのタグデータは、タグタイプに従って異なるタグテーブルにあり、
前記タグタイプは、クエリ方式によって確定される、
データ記憶装置。
【請求項5】
前記タグタイプは、静的タグと、動的タグとを含み、前記静的タグに対応するタグデータは時間的に変化しないデータであり、前記動的タグに対応するタグデータは時間的に変化するデータである、
請求項4に記載の装置。
【請求項6】
電子機器により実行されるクエリ方法であって、
タグクエリ要求に応答し、同じ記憶モジュールのバケットデータからクエリ対象となるユーザのタグデータを取得することを含み、
前記タグクエリ要求が、前記クエリ対象となるユーザの身分を識別するためのユーザIDを含み、
前記バケットデータが、ユーザIDに基づいて全てのユーザのタグデータをバケット分けすることにより取得されるデータであり、且つ、同じユーザのバケットデータが同じ記憶モジュールに記憶され、
前記バケットデータは、前記全てのユーザのタグデータをタグタイプに従って分類し、複数のタグテーブルを取得する
ステップ、およびユーザIDに基づいて各タグテーブルにおけるタグデータをバケット分けし、各ユーザのバケットデータを取得する
ステップによって得られ、
前記タグタイプは、クエリ方式によって確定されるタイプである、
クエリ方法。
【請求項7】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に接続されているメモリと、
を備え、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが請求項1~3または請求項6のいずれか1項に記載の方法を実行可能であるように、前記少なくとも1つのプロセッサにより実行される、
電子機器。
【請求項8】
請求項1~3または請求項6のいずれか1項に記載の方法をコンピュータに実行させるためのコンピュータ命令が記憶されている、
非一時的なコンピュータ可読記憶媒体。
【請求項9】
請求項1~3または請求項6のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2020年12月07日に中国専利局に提出された出願番号が202011452209.3である中国特許出願に対して優先権を主張するものであり、該出願の全ての内容を引用により本願に援用する。
【0002】
本願は、コンピュータ技術分野に関し、例えば、ミニプログラム、ビッグデータ、クラウドコンピューティング、およびインターネットの技術分野に関し、例えば、データ記憶方法、装置、クエリ方法、電子機器およびコンピュータ可読媒体に関する。
【背景技術】
【0003】
ほとんどのミニプログラムは、トラフィックで運営されている。ミニプログラムの開発者は、通常、開発者プラットフォームでユーザ画像および行動特徴を選択して特定の群衆パッケージを指向的に生成し、また、該特定の群衆パッケージ内のユーザに正確にタッチする。
【0004】
実際の操作過程において、ミニプログラムの開発者は、ユーザの行動に応じて異なる種類のタグデータを確立している。タグトピックの数が多い場合、通常、複数のテーブルを関連してクエリすることに関わることに起因して、ネットワークにおけるデータの伝送量は大きくなる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、データ記憶方法、装置、クエリ方法、電子機器およびコンピュータ記憶媒体を提供する。
【課題を解決するための手段】
【0006】
各ユーザのタグデータが異なるタグテーブルに分布されるように、ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することと、
同じユーザのバケットデータを同じ記憶モジュールに記憶することと、を含む、
データ記憶方法を提供する。
【0007】
全てのユーザのタグデータを記憶し、且つ、同じユーザのバケットデータが同じ前記記憶モジュールに記憶されるように構成される複数の記憶モジュールを備え、各ユーザのタグデータは、異なるタグテーブルに分布され、前記バケットデータは、ユーザIDに基づいて前記全てのユーザのタグデータをバケット分けすることにより取得されるデータである、
データ記憶装置を更に提供する。
【0008】
タグクエリ要求に応答し、同じ記憶モジュールのバケットデータからクエリ対象となるユーザのタグデータを取得することを含み、
前記タグクエリ要求が、前記クエリ対象となるユーザの身分を識別するためのユーザIDを含み、
前記バケットデータが、ユーザIDに基づいて全てのユーザのタグデータをバケット分けすることにより取得されるデータであり、且つ、同じユーザのバケットデータが同じ記憶モジュールに記憶される、
クエリ方法を更に提供する。
【0009】
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサに通信可能に接続されているメモリと、
を備え、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが上記データ記憶方法またはクエリ方法を実行可能であるように、前記少なくとも1つのプロセッサにより実行される、
電子機器を更に提供する。
【0010】
上記データ記憶方法またはクエリ方法を前記コンピュータに実行させるためのコンピュータ命令が記憶されている、
非一時的なコンピュータ可読記憶媒体を更に提供する。
【図面の簡単な説明】
【0011】
【
図1】本願の実施例におけるデータ記憶方法のフローチャートである。
【
図2】本願の実施例におけるデータ記憶方法の模式図である。
【
図3】本願の実施例におけるデータ記憶装置の構造模式図である。
【
図4】本願の実施例におけるクエリ方法のフローチャートである。
【
図5】本願の実施例におけるデータ記憶方法またはクエリ方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら本願の例示的な実施例について説明し、ここで、理解の便宜上、本願の実施例の様々な細かい内容が含まれているが、例示的なものに過ぎないと理解すべきである。以下の説明において、公知されている機能および構造の説明は省略している。
【0013】
本明細書で使用される「および/または」という用語は、1つまたは複数の列挙される関連エントリのいずれかおよび全ての組み合わせを含む。
【0014】
本明細書で使用される用語は、特定の実施例を記述するためのものに過ぎず、本願を限定するためのものではない。本明細書で使用される、「1つ」および「該」という単数形式は、文脈が明確に例外を示さない限り、複数形式も含むことを意味する。「含む」および/または「……で作製される」という用語が本明細書に使用されると、特徴、全体、ステップ、操作、素子および/または構成要素の存在を指定するが、1つまたは複数の他の特徴、全体、ステップ、操作、素子、構成要素および/またはその組み合わせの存在または追加を除外しない。
【0015】
ミニプログラムの開発者は、トラフィック運営を行うために、開発者プラットフォームでユーザ画像および行動特徴を選択して特定の群衆パッケージを指向的に生成し、また、群衆パッケージ内のユーザに正確にタッチする。
【0016】
開発者プラットフォームは、ユーザ行動に応じて異なる種類のタグデータを確立する必要があり、各種のタグデータを1つのトピックドメインと呼ぶ。例えば、開発者プラットフォームは、ユーザID(Identifier、ID)をユーザの一意のタグとし、ユーザ行動に応じて、基本属性タグデータと、活躍度タグデータと、支払行動タグデータとを確立する。ここで、基本属性タグデータはユーザの基本属性であり、表1に示すように、ユーザの性別および興味ポイントを含んでもよいが、これらに限定されない。
【0017】
【0018】
活躍度タグデータは、ユーザがミニプログラムを開く行動特徴であり、例えば、表2に示すように、当日の活躍度および最近の30日間の活躍度である。
【0019】
【0020】
支払行動タグデータは、ユーザのミニプログラム内での支払行動であり、例えば、表3に示すように、当日に支払った注文数および最近の30日間に支払行動があるか否かである。
【0021】
【0022】
異なるタグデータは、下位層での記憶が関連しながら独立し、即ち、各タグテーブルは、下位層での記憶が相対的に独立するが、異なるタグテーブルにおける同じユーザに属するタグデータは関連する。ミニプログラムの開発者によるクエリがユーザの複数のタグトピックに関する場合、必要な結果を返すことができるために、複数のテーブルを関連してクエリする必要がある。
【0023】
例えば、ユーザが20200102を現在のクエリ日付とし、最近の30日間に活躍で性別が「1」のユーザをクエリする。この場合、該クエリは、ユーザIDに基づいて2つのタグテーブルを関連してクエリする必要があり、即ち、基本属性タグテーブルと活躍度タグテーブルとを関連してクエリする。
【0024】
ユーザが20200102を現在のクエリ日付とし、最近の30日間に活躍で性別が「1」で最近の7日間の支払った注文総数が10よりも大きいユーザをクエリする。この場合、該クエリは、ユーザIDに基づいて3つのタグテーブルを関連してクエリする必要があり、即ち、基本属性タグテーブルと、活躍度タグテーブルと、支払行動タグデータとを関連してクエリする。
【0025】
ユーザ行動毎に1つのタグテーブルを設け、異なるユーザ行動のタグデータが異なるタグテーブルに記憶され、異なるタグテーブルが下位層で位置が異なる物理媒体に記憶されるため、関連してクエリする場合、ネットワークにおけるデータの伝送量が大きく、クエリ速度が遅く、クエリの性能に影響を及ぼす。更に、ビジネスが精細化を求めることに伴い、データベース内のテーブル数が急激に増加し、ビジネス使用複雑性およびデータベースのメンテナンスコストを増加する。
【0026】
本願の実施例はデータ記憶方法を提供する。該データ記憶方法は、異なるタグテーブルに分布されている全てのユーザのタグデータをローカルに連携記憶し、複数のテーブルを関連してクエリする場合のネットワークにおけるデータの伝送量を減少し、クエリ速度を高めることができる。
【0027】
図1は、本願の実施例におけるデータ記憶方法のフローチャートである。
図2は、本願の実施例におけるデータ記憶方法の模式図である。
図1および
図2を参照すると、本願の実施例におけるデータ記憶方法は、以下のステップを含む。
【0028】
ステップ101において、ユーザIDに基づいて、全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得する。
【0029】
ユーザIDはユーザの身分の一意のタグであり、ユーザIDにより、ユーザを区分して確定することができる。ユーザは、ネットワークの使用過程で異なる行動を行い、これらの行動にタグを加えてタグテーブルを確立し、タグテーブルにおけるタグデータはユーザ行動を記録するデータである。該タグテーブルは、ユーザIDとユーザ行動との対応関係を確立する。タグは、サービスエンティティの分析角度を拡張でき、異なるタグを操作することにより、データ選別および分析を行うことができる。
【0030】
バケット分け(Bucketing)とは、ユーザIDに従って同じタグタイプに属するタグデータをバケット分けし、同じユーザに属するタグデータを1つのバケット内に割り当てることを意味する。
【0031】
いくつかの実施例において、ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することは、全てのユーザのタグデータをタグタイプに従って分類し、対応するタグテーブルを取得することと、ユーザIDに基づいて各タグテーブルにおけるタグデータをバケット分けし、各ユーザのバケットデータを取得することとを含む。
【0032】
バケットデータは、1つのバケット内に割り当てられるデータであり、言い換えれば、同じユーザに属する異なるタグデータのセットである。
【0033】
いくつかの実施例において、タグのクエリ方式に従ってタグデータを分類し、タグテーブルを生成する。例えば、タグタイプは、静的タグと、動的タグとを含み、静的タグに対応するタグデータは時間的に変化せず、動的タグに対応するデータは時間的に変化する。即ち、タグデータは静的タグデータおよび動的タグデータを含み、静的タグデータに基づいて静的タグデータテーブルを確立し、動的タグデータに基づいて動的タグデータテーブルを確立する。ここで、静的タグデータは時間的に変化しないデータであり、即ち、ユーザの1つ時点におけるタグ値である。例えば、静的タグデータは、表4に示すように、基礎属性タグデータおよび活躍度タグデータを含んでもよいが、これらに限定されない。
【0034】
【0035】
動的タグデータは時間的に変化するデータであり、即ち、ユーザの1つの期間内のタグ値である。例えば、動的タグデータは、表5に示すように、支払タグデータを含んでもよいが、これらに限定されない。
【0036】
【0037】
本実施例において、タグデータをクエリ方式に従って分類し、各タイプのタグデータのために1つのタグテーブルを確立することにより、行動方式に従ってタグテーブルを確立する場合よりもタグテーブルの数を減少し、ひいてはデータベースのメンテナンスコストおよびクエリ文の複雑性を低減することができる。更に、タグデータをクエリするとき、複数のテーブルを関連してクエリする確率を低減し、クエリ速度を高め、ひいてはクエリ性能を向上させ、超大規模なデータのシーンにおけるクエリ性能の問題を効果的に解決することができる。
【0038】
例えば、表4の静的タグデータテーブルに全てのユーザの静的タグデータが含まれており、表5の動的タグデータテーブルに全てのユーザの動的タグデータが含まれている。従って、本願は、2つのタグテーブルだけで基礎属性タグと活躍度タグと支払タグとを分類することができる。行動方式に従ってタグテーブルを確立すれば、3つのタグテーブルが必要となるため、本願はタグテーブルの数を減少する。
【0039】
本実施例において、クエリ方式に従ってタグテーブルを確立することにより、タグテーブルの数を減少することができ、精細化運営の過程においてタグテーブル数が膨張するという問題を回避することができる。更に、タグテーブルの数の減少は、クエリ文の複雑性の低減にも寄与する。
【0040】
図2を参照すると、ユーザIDに基づいて各タグテーブルにおけるタグデータをバケット分けする。ユーザ1の静的タグデータを第1バケット211内に割り当て、ユーザ1の動的タグデータを第2バケット212内に割り当てる。第1バケット211および第2バケット212は同じ記憶モジュールに位置し、即ち、第1記憶モジュール21に位置する。他のユーザのタグデータも、これと同様に、同じユーザのタグデータが同じ記憶モジュールに記憶され、タグタイプに従って異なるバケットに分布される。
【0041】
ローカルに連携記憶することを実現するために、第1バケット211および第2バケット212の記憶番号が同じであり、同じユーザのタグデータを同じ記憶モジュールに記憶することを実現する。
【0042】
いくつかの実施例において、ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することは、ユーザIDに基づいてハッシュ・アルゴリズムにより全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得することを含む。
【0043】
例えば、ユーザIDに従って各タグデータをハッシュ演算を行い、余りを取ってバケット番号を取得し、即ち、タグテーブルにおける各記録をハッシュ演算を行い、演算結果の余りを取り、記録毎に1つのバケット番号を生成し、バケット番号が同じであるタグデータは同じユーザのタグデータであり、バケット番号が同じであるタグデータを同じ記憶モジュールに記憶する。
【0044】
ステップ102において、同じユーザのバケットデータを同じ記憶モジュールに記憶する。
【0045】
いくつかの実施例において、同じユーザのバケットデータを同じ記憶モジュールに記憶し、即ち、同じ記憶モジュールに同じユーザの全てのタグデータが記憶される。
【0046】
図2を参照すると、記憶モジュールは、第1記憶モジュール21および第2記憶モジュール22を含む。ユーザIDに基づいてユーザ1のタグデータを第1記憶モジュール21に記憶し、ユーザ2のタグデータを第2記憶モジュール22に記憶する。
【0047】
例えば、第1記憶モジュール21は、第1バケット211および第2バケット212を含み、ここで、第1バケット211は、ユーザ1に対応する静的タグテーブルにおけるタグデータを記憶するように構成され、例えば、第1バケット1にユーザ1の基礎属性タグおよび活躍度タグが記憶されている。例えば、「ユーザ1,20200102,1,1001,1,1」の場合、ユーザIDがユーザ1で、日付が2020年01月02日で、性別が1で、興味ポイントが1001で、最近の30日間に活躍していたユーザであり、当日の活躍回数が1である。第2バケット212は、ユーザ1に対応する動的タグテーブルにおけるタグデータを記憶することに用いられ、例えば、第2バケットにユーザ1の支払タグが記憶されている。例えば、「ユーザ1,20200101,1,2」の場合、ユーザIDがユーザ1で、日付が2020年01月01日で、最近の30日間に支払ったことがあり、当日の支払回数が2である。
【0048】
本実施例は、2つの記憶モジュールを例として説明するが、本願が2つの記憶モジュールしか提供できないことを意味するものではなく、実際には、記憶モジュールの数は2つ以上の任意の数であってもよい。
【0049】
本願の実施例は、複数の記憶モジュールを用いて静的タグテーブルおよび動的タグテーブルをローカルに連携記憶し、且つ、異なるタグデータテーブルにおける同じユーザのタグデータを1つの記憶モジュールに記憶することにより、複数のテーブルをクエリする場合、ネットワークにおけるデータの伝送量を減少し、クエリ速度を高め、ひいてはクエリ性能を向上させることができる。
【0050】
同じユーザのタグデータを同じ記憶モジュールに記憶することは、ユーザ毎に1つの記憶モジュールを占有することを意味するものではなく、同じ記憶モジュールは、同じユーザのタグデータを同じ記憶モジュールに記憶することを確保すれば、複数のユーザのタグデータを記憶することができ、これにより、複数のテーブルをクエリする場合、1つの記憶モジュールからクエリ対象となるユーザのタグデータを取得すれば良い。
【0051】
いくつかの実施例において、同じ機器でタグデータを少なくとも1部バックアップしてもよく、即ち、タグテーブル毎に複数のレプリカを設け、冗長記憶を行い、データの安全性を確保する。
【0052】
本実施例は、2つのタグデータテーブルを例として説明するが、本願が2つのタグテーブルのみを処理できることを意味するものではない。実際には、本願の実施例におけるデータ記憶方法は、3つ以上のタグテーブルに適用でき、複数のタグテーブルを関連してクエリする場合、ネットワークにおけるデータの伝送量を減少し、クエリ速度を高め、超大規模なデータのシーンにおけるクエリ性能を効果的に向上させることができる。
【0053】
本願の技術案に係るユーザの個人情報の取得、記憶および使用等は、いずれも関連する法律法規の規定に該当し、且つ公序良俗に反しない。
【0054】
本願に係るータ記憶方法は、ユーザIDに基づいて全てのユーザのタグデータをバケット分けし、各ユーザのバケットデータを取得し、各ユーザのタグデータが異なるタグテーブルに分布され、同じユーザのバケットデータを同じ記憶モジュールに記憶することにより、複数のタグテーブルを関連してクエリする場合、異なるタグテーブルにおける同じユーザに属するバケットデータが同じ記憶モジュールに記憶されるため、同じユーザのタグデータは、ネットワークを介して伝送する必要がなく、ネットワークにおけるデータの伝送量を減少し、クエリ速度を高め、超大規模なデータのシーンにおけるクエリ性能を効果的に向上させる。
【0055】
本願の実施例は、異なるタグテーブルに分布された全てのユーザのタグデータをローカルに連携記憶し、複数のテーブルを関連してクエリする場合のネットワークにおけるデータの伝送量を減少し、クエリ速度を高めるデータ記憶装置を提供する。
【0056】
図3は、本願の実施例におけるデータ記憶装置の構造模式図である。
図3を参照すると、データ記憶装置は、
全てのユーザのタグデータを記憶し、且つ、同じユーザのバケットデータが同じ記憶モジュールに記憶されるように構成される複数の記憶モジュールを備える。
【0057】
ユーザのタグデータは、ユーザIDを基準として各ユーザ行動を記録する記録である。ユーザIDはユーザの身分の一意のタグであり、ユーザIDにより、ユーザを区分して確定することができる。ユーザは、ネットワークの使用過程で異なる行動を行い、これらの行動にタグを加えてタグテーブルを確立し、タグデータはユーザ行動を記録するデータである。記録しやすいために、ユーザのタグデータは異なるタグテーブルに分布される。タグは、サービスエンティティの分析角度を拡張でき、異なるタグを操作することにより、データ選別および分析を行うことができる。
【0058】
バケットデータは、ユーザIDに基づいて異なるタグデータテーブルにおけるタグデータをグループ分けし、また、同じタグテーブルにおける同じユーザに属するタグデータを1つのバケット内に割り当てることによるものである。同じユーザにとって、異なるタグデータテーブルによって異なるバケットを取得することができ、同じユーザのバケットデータを同じ記憶モジュールに記憶することができる。
【0059】
本願の実施例において、記憶装置は、異なる物理ノードに分布されて設けられてもよいし、同じ物理ノードに設けられてもよいし、一部の記憶装置が1つの物理ノードに設けられ、他の一部の記憶装置が他の物理ノードに設けられてもよい。実際の応用において、必要に応じて記憶装置を1つの物理ノードに設けてもよいし、複数の物理ノードに分布して設けてもよい。
【0060】
いくつかの実施例において、タグタイプは、クエリ方式によって確定される。即ち、タグデータがタグのクエリ方式に従って分類され、タグテーブルが生成され、更に、同じタイプに属するタグデータが1つのタグテーブル内に分布される。例えば、クエリ方式に従って全てのユーザのタグデータを静的タグデータおよび動的タグデータに分け、対応して静的タグデータテーブルおよび動的タグデータテーブルに分ける。ここで、静的タグデータは、ユーザの1つの時点におけるタグ値であり、即ち、タグデータは時間的に変化しない。例えば、静的タグデータは、基礎属性タグデータと活躍度タグデータとを含んでもよいが、これらに限定されない。動的タグデータは、ユーザの1つの期間内のタグ値であり、即ち、時間的に変化するデータである。例えば、動的タグデータは、支払タグデータを含んでもよいが、これらに限定されない。
【0061】
本実施例において、クエリ方式に従ってタグテーブルを確立することにより、ユーザ行動に従ってタグテーブルを確立する場合よりもタグテーブルの数を減少し、データベースのメンテナンスコストおよびビジネスの使用の複雑性を低減することができる。更に、タグデータをクエリする場合、複数のテーブルを関連してクエリする確率を低減し、クエリ速度を高め、ひいてはクエリ性能を向上させることができる。
【0062】
本願の実施例におけるデータ記憶装置は、全てのユーザのタグデータを記憶し、更に同じユーザのバケットデータが同じ記憶モジュールに記憶されるように構成される複数の記憶モジュールを備えるため、複数のタグテーブルを関連してクエリする場合、ネットワークにおけるデータの伝送量を減少し、クエリ速度を高め、超大規模なデータのシーンにおけるクエリ性能を効果的に向上させることができる。
【0063】
本願の実施例は、複数のテーブルを関連してクエリする場合のネットワークにおけるデータの伝送量を減少し、クエリ速度を高めることができるクエリ方法を提供する。
【0064】
図4は、本願の実施例におけるクエリ方法のフローチャートである。
図4を参照すると、クエリ方法は、以下のステップを含む。
【0065】
ステップ401において、タグクエリ要求に応答し、同じ記憶モジュールのバケットデータからクエリ対象となるユーザのタグデータを取得する。
【0066】
タグクエリ要求は、ユーザの身分を識別するためのユーザIDを含む。ユーザID(ID)は、ユーザの身分の一意のタグであり、ユーザIDにより、ユーザを区分して確定することができる。
【0067】
バケット分けとは、ユーザIDに従って同じタグタイプに属するタグデータをグループ分けすることを意味する。バケットデータは、ユーザIDに基づいて全てのユーザのタグデータをバケット分けして取得したデータである。更に、同じユーザのバケットデータは同じ記憶モジュールに記憶される。
【0068】
いくつかの実施例において、バケットデータは、ユーザIDに基づいてタグデータをグループ分けし、同じタグテーブルにおける同じユーザに属するタグデータを1つのバケット内に割り当て、同じユーザのバケットを同じ記憶モジュールに記憶することによるものである。
【0069】
いくつかの実施例において、タグのクエリ方式に従ってタグデータを分類し、タグテーブルを生成し、更に、同じタイプに属するタグデータを1つのタグテーブル内に分布する。例えば、クエリ方式に従って全てのユーザのタグデータを静的タグデータおよび動的タグデータに分け、対応して静的タグデータテーブルおよび動的タグデータテーブルに分ける。ここで、静的タグデータは、ユーザの1つの時点におけるタグ値であり、即ち、タグデータは時間的に変化しない。例えば、静的タグデータは、基礎属性タグデータと活躍度タグデータとを含んでもよいが、これらに限定されない。動的タグデータは、ユーザの1つの期間内のタグ値であり、即ち、時間的に変化するデータである。例えば、動的タグデータは、支払タグデータを含んでもよいが、これらに限定されない。
【0070】
動的タグデータは、クエリ時に、時間次元により動的統合することができ、指定されたクエリ時間範囲内に値の要求を満たすデータに対応するユーザは、対象となるユーザである。
【0071】
本実施例において、クエリ方式に従ってタグテーブルを確立することにより、ユーザ行動に従ってタグテーブルを確定する場合よりもタグテーブルの数を減少し、データベースのメンテナンスコストおよびビジネスの使用の複雑性を低減することができる。更に、タグデータをクエリする場合、複数のテーブルを関連してクエリする確率を低減し、クエリ速度を高め、ひいてはクエリ性能を向上させることができる。
【0072】
本願の実施例によれば、本願は、電子機器と、可読記憶媒体とを更に提供する。
【0073】
図5に示すように、
図5は、本願の実施例におけるデータ記憶方法またはクエリ方法を実現するための電子機器のブロック図である。電子機器は、ラップトップ型コンピュータ、デスクトップ型コンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータのような様々な形式のデジタルコンピュータを表すことを目的とする。電子機器は、携帯端末、携帯電話、スマートフォン、ウェララブル機器および他の類似する計算装置のような様々な形式の移動装置を表すこともできる。本明細書に示されたコンポーネント、それらの接続、関係、およびそれらの機能は例示的なものに過ぎず、本明細書に記載および/または要求される本願の実現を限定するものではない。
【0074】
図5に示すように、該電子機器は、1つのまたは複数のプロセッサ501と、メモリ502と、各コンポーネントを接続するように構成され、高速インターフェースおよび低速インターフェースを含むインターフェースとを備える。複数のコンポーネントは、異なるバスで互に接続され、共通のマザーボードに取り付けられるかまたは必要に応じて他の方式で取り付けることができる。プロセッサは、電子機器内で実行される命令を処理することができ、メモリ内またはメモリ上に記憶されて外部の入出力装置(例えば、インターフェースに結合された表示デバイス)にグラフィカル・ユーザ・インターフェース(Graphical User Interface、GUI)のグラフィクス情報を表示するための命令を含む。他の実施形態において、必要があれば、複数のプロセッサおよび/または複数本のバスと、複数のメモリとを共に使用することができる。それと同様に、複数の電子機器に接続することができ、各機器は、一部の必要な動作(例えば、サーバアレイ、ブレードサーバ群、またはマルチプロセッサシステムとする)を提供する。
図5において、1つのプロセッサ501を例とする。
【0075】
メモリ502は、本発明に係る非一時的なコンピュータ可読記憶媒体である。ここで、本願に係るデータ記憶方法またはクエリ方法を前記少なくとも1つのプロセッサに実行させるために、前記メモリには少なくとも1つのプロセッサにより実行可能な命令が記憶されている。本発明の非一時的なコンピュータ可読記憶媒体には、本願に係るデータ記憶方法またはクエリ方法をコンピュータに実行させるためのコンピュータ命令が記憶されている。
【0076】
メモリ502は、非一時的なコンピュータ可読記憶媒体として、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能プログラムおよびモジュール、例えば、本願の実施例におけるデータ記憶方法またはクエリ方法に対応するプログラム命令/モジュールを記憶するために使用できる。プロセッサ501は、メモリ502に記憶された非一時的なソフトウェアプログラム、命令およびモジュールを実行することにより、サーバの様々な機能アプリケーションおよびデータ処理を実行し、即ち、上記方法の実施例におけるデータ記憶方法またはクエリ方法を実現する。
【0077】
メモリ502は、プログラム記憶エリアおよびデータ記憶エリアを備え、プログラム記憶エリアには、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムが記憶され、データ記憶エリアには、データ記憶方法またはクエリ方法を実現するための電子機器の使用に基づいて作成されたデータ等を記憶されてもよい。また、メモリ502は、高速ランダムアクセスメモリを含んでもよく、少なくとも1つの磁気ディスク記憶デバイス、フラッシュメモリ、または他の非一時的な固体記憶デバイスのような非一時的なメモリを更に含んでもよい。いくつかの実施例において、メモリ502は、プロセッサ501に対してリモートに設けられたメモリを含むことが好ましく、これらのリモートメモリは、ネットワークを介してデータ記憶方法またはクエリ方法を実現するための電子機器に接続することができる。上記ネットワークの実例は、インターネット、イントラネット、ローカルエリアネットワーク、移動体通信ネットワークおよびその組み合わせを含んでもよいが、それらに限定されない。
【0078】
データ記憶方法またはクエリ方法を実現するための電子機器は、入力装置503と、出力装置504とを備えてもよい。プロセッサ501と、メモリ502と、入力装置503と、出力装置504とは、バスまたは他の方式で接続されることができ、
図5における例として、バスを介して接続されている。
【0079】
入力装置503は、入力された数字または文字情報を受信し、データ記憶方法またはクエリ方法を実現するための電子機器のユーザ設定および機能制御に関連するキー信号入力を生成することができ、例えば、タッチパネル、キーパッド、マウス、トラックパッド、タッチパッド、インジケータ、1つまたは複数のマウスボタン、トラックボール、ジョイスティック等の入力装置である。出力装置504は、表示デバイス、補助照明装置(例えば、発光ダイオード(Light-Emitting Diode、LED))、および触覚フィードバック装置(例えば、振動モータ)等を含んでもよい。該表示デバイスは、液晶ディスプレイ(Liquid Crystal Display、LCD)、LEDディスプレイ、およびプラズマディスプレイを含んでもよいが、これらに限定されない。いくつかの実施形態において、表示デバイスはタッチパネルであってもよい。
【0080】
ここで説明するシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現できる。これらの様々な実施形態は以下を含んでもよい。1つまたは複数のコンピュータプログラムに実施され、該1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行および/または解釈することができ、該プログラマブルプロセッサは、ストレージシステムと、少なくとも1つの入力装置と、少なくとも1つの出力装置からデータおよび命令を受信し、且つデータおよび命令を、該ストレージシステムと、該少なくとも1つの入力装置と、該少なくとも1つの出力装置に伝送することができる専用または汎用のプログラマブルプロセッサであってもよい。
【0081】
これらの計算プログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとも呼ばれる)は、プログラマブルプロセッサの機械命令を含み、且つ、高度なプロセスおよび/またはオブジェクト指向プログラミング言語、および/またはアセンブリ/機械言語を用いてこれらの計算プログラムを実施することができる。例えば、「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、および/または装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理デバイス(Programable Logic Device、PLD))を意味し、機械可読信号としての機械命令を受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するための任意の信号を意味する。
【0082】
ユーザとのインタラクションを提供するために、ここで説明するシステムおよび技術をコンピュータで実施することができ、該コンピュータは、ユーザに情報を表示するための表示装置(例えば、陰極線管(Cathode Ray Tube、CRT))またはLCDモニタ)と、ユーザがそれにより入力をコンピュータに提供することができるキーボードおよび指向装置(例えば、マウスまたはトラックボール)とを有する。他の種類の装置は、更にユーザとのインタラクションを提供するために使用できる。例えば、ユーザに提供されるフィードバックは、任意の形式の感覚のフィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、且つ、任意の形式(音入力、音声入力または、触覚入力を含む)でユーザからの入力を受信することができる。
【0083】
ここで説明するシステムおよび技術を、バックエンド・コンポーネントを含むコンピューティングシステム(例えば、データサーバとする)、または中間コンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、またはフロントエンド・コンポーネントを含むコンピューティングシステム(例えば、ユーザとここで説明したシステムおよび技術の実施形態とのインタラクションを実現するためのグラフィカル・ユーザ・インターフェース(GUI)、またはネットワークブラウザを有するユーザコンピュータ)、またはこのようなバックエンド・コンポーネント、中間コンポーネント、またはフロントエンド・コンポーネントの任意の組み合わせを含むコンピューティングシステムに実施することができる。任意の形式または媒体のデジタルデータ通信(例えば、通信ネットワーク)により、システムのコンポーネントを互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(Local Area Network、LAN)、ワイドエリアネットワーク(Wide Area Network、WAN)、およびインターネットを含む。
【0084】
コンピュータシステムは、クライアントと、サーバとを含んでもよい。クライアントとサーバとは、一般的に互いに離れ、且つ、通常、通信ネットワークを介してインタラクションを行う。対応するコンピュータで実行されて互いにクライアント-サーバ関係を持つコンピュータプログラムにより、クライアントとサーバとの関係を構築する。
【0085】
上記に示す様々な形式のフローを用い、ステップを並べ替え、追加または削除することができることを理解すべきである。例えば、本発明に記載された各ステップは、並列に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよく、本願に開示された技術案の所望する結果を達成できる限り、本明細書はここで限定しない。