2013-05-20 33 views
0

我正在構建一個.net Web應用程序,該應用程序將涉及根據可接受的電子郵件地址列表驗證電子郵件輸入字段。可能會有高達10,000個可接受的值,並且不會經常更改。當他們這樣做時,整個列表將被替換,而不是單個條目。針對不經常更改的數據的SQL Server表或平面文本文件

我在討論實現這一點的最佳方法。我們有一個SQL Server數據庫,但由於這些記錄將是相對靜態的,只能在批量中進行替換,所以我正在考慮引用/搜索包含字符串值的文本文件。看起來像這樣會使上傳過程變得更容易,在rdbms中獲取這些信息幾乎沒有什麼好處。

反饋表示讚賞。

+2

通常只用一個數據存儲就容易得多,而且由於您已經在使用SQL Server,所以我真的沒有看到將某些東西放入Web應用程序的文件系統中的任何好處....即使電子郵件列表不會經常更改 - 只需將其放入一張表中即可完成! –

回答

2

如果數據庫已經存在,然後使用它。你所說的正是數據庫設計的目的。如果在這條路上,你決定需要做一些更復雜的事情,你會很高興你跟DB一起去。

+1

正好 - 如果該數據庫已經存在並正在使用 - 忽略它並使用其他內容有什麼意義? –

0

我打算對你的情況做一些假設。

  1. 您的數據集包含多於一列的可用數據。
  2. 你的記錄集包含的行數比你會多總是顯示。
  3. 您的數據需要格式化爲某種輸出視圖(例如HTML)。

以下是爲什麼您的半靜態數據應保留在SQL中而不是文本文件中的一些具體原因。

  1. 你不必每次要讀取和處理它的時間來分析文本數據。 (字符串解析是一個相對較重的內存和CPU負載)。 SQL會將您的列存儲爲預解析的結構化數據
  2. 您不必開發自己的行過濾或搜索算法(或實現一個可以爲您完成的庫)。 SQL已經是一個複雜的引擎,它應用了高級緩存算法,查詢優化(針對seek/search/scan/index/hash等有許多底層高級算法)。
  3. 您可以選擇SQL來擴展您的解決方案的健壯性,隨着時間的推移與其他工具集成(將數據放入文本或XML文件將限制將來的可能性)。

注意事項:

  • 您的特定SQL Server實現可以通過磁盤IO和網絡延遲性能的影響。爲了調整磁盤IO性能,一個結構良好的SQL Server將數據文件(.mdf)放置在快速多主軸磁盤陣列上進行調整以便快速讀取,並將它們從調整爲主軸的日誌文件(.log)中分離出來快速寫入。
  • 您可能會發現SQL Server的延遲和繁忙(而非單詞)會影響性能。如果你運行在一個非常繁忙或者很慢的SQL服務器上,你可能會遇到一種本地文件替代方案,在這種情況下,我會推薦一種結構化的格式,比如XML。 (但是,如果您發現自己正在尋找解決方法以避免使用SQL服務器,那麼最好花一些時間/資金來改進您的SQL實現。
+0

謝謝。欣賞分析。目前只有一列數據。我想這可能會改變 – user2391532

相關問題