2013-02-05 34 views
0

我基本上有很多不同的數據庫合併成一個SOLR商店。它必須是這樣的,我不能改變它。在數據庫中有數字標識的任何理由?

我給每個項目中的每個數據庫中的唯一的ID,但是當我合併數據庫成SOLR我發現我有具有相同ID的多個項目,例如:

Database A 
Itemid: 1 

Database B 
Itemid: 1 

SOLR: 
Itemid: 1 
Itemid: 1 

相反,我我現在有我與之前的數據庫名稱主ID,像這樣:

Database A 
Itemid: A1 

Database B 
Itemid: B1 

SOLR: 
Itemid: A1 
Itemid: B1 

我的問題是,是否有具有非數字的ID任何正當理由,可我還是不基於這些ID排序?

任何反饋將不勝感激。

+0

顯示更多的代碼!原始基地的數據庫模式是什麼?你是如何融合它們的? –

回答

2

如果你關心性能,最好還是堅持使用數字ID。 (請參閱Database Design Primay Key, ID vs String

但是爲了完成您的任務,我會在數據導入階段將數據庫名稱前綴添加到Solr ID。所以你會有:

Database A 
Itemid: 1 

Database B 
Itemid: 1 

SOLR: 
Itemid: A1 
Itemid: B1 
+0

如何指定每個數據庫中的前綴,以便我可以交叉引用它們?例如,如果我想從我的數據庫連接到Solr,我如何將字母(A)與特定數據庫聯繫起來? – Jimmy

+0

Bascially我只是想以某種方式把標籤放在數據庫上,說這是數據庫「A」,所以當在solr上交叉引用時,它應該是「A 」 – Jimmy

+0

這取決於你的架構。如果你的服務層「知道」所有的數據庫,並且負責所有的跨數據庫和Solr通信,那麼就足以在代碼的某個地方維護一些枚舉或映射來將標籤分配給數據庫。或者,如果您想要(或可以)您可以在所有數據庫中添加一個小表來存儲元數據(例如MY_INFO_TABLE)並將標籤存儲在那裏。 – wajda

相關問題