我必须重写一个运行在 32 台服务器上的大型数据库应用程序。硬件是最新的,每台机器都有两个四核 Xeon 和 32 GByte RAM。
该数据库是多租户的,每个客户都有自己的文件,每个文件大约 5 到 10 GByte。我在这个硬件上运行了大约 50 个数据库。该应用程序对网络开放,因此我无法控制负载。没有真正复杂的查询,因此如果有更好的解决方案,则不需要 SQL。
数据库每天午夜通过 FTP 更新。数据库是只读的。C# 是我最喜欢的语言,我想使用 ASP.NET MVC。
我考虑了以下选项:
使用两个运行 SQL Server 2012 的大型 SQL 服务器为 32 台服务器提供数据。在 32 台运行 IIS 托管的服务器上提供 REST 服务。
非规范化数据库并在每个 Web 服务器上使用 Redis。使用 bookleeve 作为 Redis 客户端。
结合使用 SQL Server 和 Redis
将 SQL Server 2012 与 Hadoop 一起使用
在没有 SQL Server 的情况下使用 Hadoop
对于只读数据库来说,在不失去可维护性的情况下获得最佳性能的最佳方法是什么?在这种情况下 Map-Reduce 是否有意义?
重写的原因是,用 ISAM 技术用 C++ 编写的旧应用程序太慢,界面过时,不适合从网站使用,尤其是在使用 ajax 时。
该应用程序使用具有许多表的关系数据模型,但可以编写一个可以在其中执行所有查询的加速器表,并且可以通过简单的键查找来获取来自其他表的所有其他信息。