2011-08-16 8 views
2

現在、私たちは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つのインデックスを使用することだと考えています。ここで

は、我々が達成するために必要なクエリのシナリオです:

  1. Aドメインごとに最新のメトリックの「現在のスナップショット」(その特定のドメインの最新SeoScore私たちは見つけるだろうと仮定しています。

  2. 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 { 
     ... 
    } 
} 
+0

ちょうど弾性検索を使用してください。 – bmargulies

答えて

2

を::

UPDATE

は、ここで私が考えているもののいくつかのJSON表記です

https://github.com/tjake/Solandra/wiki/ManagingCores

このSeoScores.domain1を持つことができるようにドメインごとにデータをパーティション化し、eacを作成しますhは、1つのタイムスタンプを表します。

残りは問題ありません。

+0

solandraのインデックス間で検索することはできますか?私は、ドメインのインデックスと、最新のドメインのseoscoreに対してクエリを実行できるようにしたいと考えています。ドメイン文書で最新のseoscoreを非正規化して保存する必要があるかもしれないと思いますか? – Redth

関連する問題