我必須重寫32臺服務器上運行的大型數據庫應用程序。硬件是最新的,每臺機器有兩個四核心Xeon和32 GB RAM。針對大型Web應用程序選擇哪種數據庫策略
數據庫是多租戶,每個客戶都有自己的文件,每個文件大約5到10 GB。我在這個硬件上運行了大約50個數據庫。該應用程序是開放的網絡,所以我沒有控制 負載。沒有真正複雜的查詢,因此如果有更好的解決方案,則不需要SQL。
數據庫每天午夜都通過FTP更新。數據庫是隻讀的。 C#是我最喜歡的語言,我想使用ASP.NET MVC。
我想到了以下選項:
使用兩運行SQL Server 2012的大SQL服務器來提供32臺服務器的數據。在運行提供REST服務的IIS託管的32臺服務器上。
非規範化數據庫並在每個Web服務器上使用Redis。使用bookleeve作爲Redis客戶端。
使用SQL Server和Redis的組合
使用SQL Server 2012一起使用Hadoop
使用Hadoop的沒有SQL服務器
什麼是最好的方式爲讀只有數據庫,才能獲得最佳性能而不會失去可維護性?在這種情況下Map-Reduce是否有意義?
重寫的原因是,使用ISAM技術以C++編寫的舊應用程序太慢了,接口舊式且不適合從網站使用,尤其是在使用ajax時。
該應用程序使用具有多個表的關係數據模型,但可以編寫一個可以在其上執行所有查詢的accerlerator表,並且可以通過簡單的鍵查找從其他表中獲取所有其他信息。
你真的沒有告訴我們任何關於當前體系結構,當前使用模式,任何當前瓶頸的有用信息......或者爲什麼這個「大型數據庫應用程序」需要首先被重寫!因此,讓我問一個問題:用戶目前正在存儲或使用的是Hadoop無法完成的任何操作,就像使用SQL Server一樣容易?沒有表格,沒有關係,沒有SQL查詢? – paulsm4
對不起,我試圖保持這個問題儘可能通用:-) – NickD