2011-08-16 14 views
2

目前我們正在使用SQL Server和Lucene的組合來索引關於域名的一些關係數據。我們有一個域名錶格和約10個其他各種其他表格,用於計算和存儲關於域名的不同指標的歷史記錄。例如:Solandra取代我們的Lucene + RDBMS?

  • 標識BIGINT
  • 域NVARCHAR
  • IsTracked BIT

SeoScore

  • 標識BIGINT
  • 域ID BIGINT
  • 得分INT
  • 時間戳DATETIME

我們正在努力包括在我們的數據庫中所有的主要區域文件的域,所以我們最終尋找大約600萬條記錄,這似乎在SQL Server中進行擴展會有點麻煩。鑑於我們依賴Lucene來做一些相當先進的查詢,Solandra似乎可能是一個不錯的選擇。我很難不用關係數據庫術語來思考我們的數據。

SeoScore表將映射一個到多個域(每次計算得分時都有一個記錄)。我認爲用Solandra的話來說,實現這一目標的最好方法是使用兩個索引,一個用於域,一個用於SeoScore。

下面是查詢的情況,我們需要實現:

  1. 一個最新的指標的「當前快照」每個域(所以最新SeoScore給定域我假設我們會發現我們首先需要Domain記錄,然後運行更多查詢以分別獲取每個度量的最新快照。

  2. SeoScores自x日期時間以來沒有被檢查過,並且IsTracked = 1,所以我們知道哪些需要重新計算,我們需要某種配料系統,這樣我們就可以'檢查'域和在不重複的情況下對其進行計算。

我在這裏偏離軌道嗎?在這種情況下,基本上將我們的表格映射到索蘭德拉的單獨索引是否正確?

UPDATE

這裏是什麼,我想一些JSON對象:

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

對於SeoScores你可能要考慮使用虛擬內核:

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

這讓您按域分區數據,以便您可以擁有SeoScores.domain1並生成eac h記錄代表一個時間戳。

其餘的聽起來不錯。

+0

是否可以在索蘭德拉的索引中進行搜索?我希望能夠針對域索引執行查詢,以及針對該域的「最新」seoscore。我猜我可能需要對域文檔進行非規範化並存儲最新的seoscore? – Redth