現在、私たちはSQL ServerとLuceneの組み合わせを使用して、ドメイン名に関するいくつかのリレーショナルデータを索引付けしています。ドメインテーブルと、ドメインについて計算して保存する異なるメトリックの履歴に関するその他のさまざまなテーブルが約10あります。例えば:私たちのLucene + RDBMSを交換するSolandra?
ドメイン
- イドBIGINT
- ドメインNVARCHAR
- IsTracked BIT
SeoScore
- 同上BIGINT
- DOMAINID BIGINT
- スコアINT
私たちは、私達のデータベースでは、主要なゾーンファイルからすべてのドメインを含めるしようとしているので、我々は最終的に約600万レコードを見ているタイムスタンプDATETIMEこれは、SQL Serverの規模を小さくする手間になるようです。かなり高度なクエリを行うためにLuceneに依存していることを考えると、Solandraはうまくいくかもしれないようです。私は、リレーショナルデータベース用語で私たちのデータを考えないのは難しいです。
SeoScoreテーブルは、1つのドメインを複数のドメインにマッピングします(スコアを計算するたびに1つのレコード)。私はSolandraの言葉では、これを達成する最善の方法はドメインとSeoScoreの2つのインデックスを使用することだと考えています。ここで
は、我々が達成するために必要なクエリのシナリオです:
Aドメインごとに最新のメトリックの「現在のスナップショット」(その特定のドメインの最新SeoScore私たちは見つけるだろうと仮定しています。
SeoScoresを持つドメインは、x datetimeからチェックされておらず、IsTracked = 1であるため、どのようなものか知ることができます再計算する必要があります。ここではバッチ処理システムが必要です努力を重複せずに計算を実行します。
ここで私はオフトラックですか?この場合、基本的にソルンドラのインデックスを別のインデックスにマッピングするのは正しいでしょうか?あなたは仮想コアを使用して検討する必要がありますSeoScoresについては
Domains : { //Index
domain1.com : { //Document ID
Middle : "domain1", //Field
Extension : "com",
Created : '2011-01-01 01:01:01.000',
ContainsDashes : false,
ContainsNumbers : false,
IsIDNA : false,
},
domain2.com {
...
}
}
SeoScores : { //Index
domain1.com { //Document ID
'2011-02-01 01:01:01.000' : {
SeoScore: 3
},
'2011-01-01 01:01:01.000' : {
SeoScore: -1
}
},
domain2.com {
...
}
}
ちょうど弾性検索を使用してください。 – bmargulies