2012-02-03 38 views
2

由於存儲的數據量越來越大,併發用戶數量不斷增加,因此我正在將.NET應用程序遷移到Azure。爲了能夠搜索,我需要一個強大的解決方案來搜索可擴展的SQL。在Azure中實現搜索SQL

我需要在搜索時返回匹配的訂單(在單個字段中,谷歌樣式)。數據存儲在這些相關表格的幾列中:訂單,客戶和地址。

我讀過全文搜索在Azure中不可用,所以我看了一下Lucene,但有點擔心將索引存儲在blob中。在每次搜索時點擊blob存儲都不太合適。

有沒有人有任何建議如何完成這一我強大的方式?

回答

1

我們使用Solr/Lucene獲得最佳全文搜索結果。索引數據被存儲到local storage(最多2 TB)。

本地存儲就像c:磁盤驅動器,但是您必須在定義文件中聲明它並通過調用RoleEnvironment.GetLocalResource來獲得對它的引用。

如果您想加快啓動時間(初始完整索引),您可以將索引數據保存/下載到持久性blob存儲。

另一種選擇是使用Azure Drive,但請記住,一個實例可以寫入它。

+0

Azure驅動器仍然是blob存儲,但您可以選擇將數據緩存到本地實例存儲。在Lucene場景中,該選項將避免爲搜索帶來交易成本和性能點擊量。寫入(Lucene索引更新在你的情況下)仍然是針對後備blob存儲進行的,因此它們是持久的。 – 2012-02-04 00:31:00

1

一個解決方案是建立一個「關鍵」表。

有一列包含您之後的搜索字符串,第二列是您的訂單表的關鍵字。

您需要在訂單,客戶和地址表的CRUD功能上創建適當的觸發器。

通過將所有三個可搜索字段展平爲一個關鍵表,您可以非常快速地進行索引搜索,以實現最小的空間折衷。

一個告誡,SQL Azure中的查詢是單線程的,所以表掃描將會很難看。

示例:其中像'abc%'這樣的鍵將使用索引 示例2:其中鍵'%abc%'將執行表掃描,並且在大集合上將會很慢。

我使用這些類型的技術在< 200ms的SQL Azure上每天維護一個11,000,000行的目錄表和服務器每天300萬的頁面瀏覽量。

1

Azure也推出了search as service API,效果很好。

我有它對大數據的工作,它表現相當好。

+0

如果您有興趣將Azure SQL的數據自動推送到Azure Search,請查看Azure SQL的Azure Search索引器:https://azure.microsoft。COM/EN-US /文檔/文章/搜索-HOWTO - 連接 - 蔚藍-SQL數據庫到Azure的搜索使用索引器,2015年2月28日/ – 2016-02-17 05:25:26