Dot-Net

使用選擇的參數:RavenDB 與 SQL Server - 性能、可靠性和簡單性 [關閉]

  • May 9, 2012

在為 Web 應用程序選擇數據層時應考慮哪些方面?

使用文件數據庫而不是關係數據庫,在開發大型和重載的小型項目時,是否有任何更好的選擇,反之亦然?

這些方法首選哪種數據庫架構 - 如果我有沒有太多關係的簡單數據庫,使用一種方法比另一種方法更好嗎?

由於這個問題是邀請個人評論,這是我的意見

SQL Server 不是用於儲存除臨時報告數據之外的任何內容的數據庫。非常棒的是,即席報告、數據探勘、實時關係發現——它最適合這些用途,因為早在 Codd 設計規則時,這就是它的設計目的(更多資訊請參閱數據驅動的陰謀)細節)

當然,您可以將其他類型的數據儲存在關係數據庫中。例如,您可以將域狀態序列化到 SQL Server 數據庫並在以後檢索該狀態,但這是對關係系統的糟糕使用。太糟糕了,事實上,需要整個程式碼層(所謂的“數據層”或 DAL),數千行,才能使這種任務遠端可行、可測試、可維護。

對於基於 SQL 的零售商來說,長達數十年的信心大計讓我們相信,除了在完全不同的資料結構之間進行實時轉換之外,沒有更好的方法來儲存分層/文件數據。DAL 和最新的 ORM 都被吹捧過,但歸根結底,這些只不過是在不同數據組織之間來回傳輸數據的編解碼器 - 磁碟上的不同模式。

瘋狂!

因此,忘記所有關於原子性、一致性、隔離性、持久性的瑣碎、愚蠢的爭論吧。房間裡的大像是,如果您使用的是 SQL Server,並且您不是一家動態探勘數據立方體以在大量人群中進行隱藏推理的製藥公司(您是嗎?),那麼您可能使用了錯誤的技術來儲存您的數據.

另一方面,如果你是一個不起眼的應用程序開發人員——一個像我們大多數人一樣的編碼人員,只是希望以一種並不意味著學習一套全新的意識形態和語法的方式序列化域狀態,那麼,老天爺為了,不要使用關係數據庫。只是不要。

烏鴉數據庫?我已經使用了一段時間(通過 DB4O 和 CouchBase 進化),我可以說它確實做到了它在錫上所說的那樣。它儲存我的東西並在我要求時將其歸還給我。我不必編寫任何數據層,也不必使用第三方 ORM。我不必學習結構化查詢語言,也不必附加額外的東西來使全文搜尋工作(RavenDB 基於 Lucene,所以一切都“正常工作”)。到目前為止,一切都很好。

但實際上,只要它是手頭的任務、易於編碼、快速和高效,你使用什麼是否重要?對於正常的應用程序開發,RavenDB 是所有這些東西,而 SQL Server 不是。這並不是說關係數據庫不好——我們不要責怪受害者——我完全承認,對於某些專門的開發,你可能確實需要一些更……異國情調的東西,這樣的關係數據儲存。

但是,如果您仍然堅持使用殘骸,您需要問自己這個問題:如果我們一直在使用簡單、快速、優雅的數據儲存,這些數據儲存非常適合我們作為應用程序開發人員的需求,然後我寫了一篇觀點文章敦促您採用 SQL Server,那麼你很可能會嘲笑我或同情我。有一件事是肯定的——你不會切換到 SQL Server。因此,我們證明了慣性本身就是使 SQL Server 成為主流的指導力量。惰性和無知。惰性、無知和企業貪婪….

引用自:https://stackoverflow.com/questions/10514172