我正在使用C#,实体框架4,mssql开发一个Web项目。 而数据变得越来越大(不是很大,但单个服务器很难), 我们决定改变数据访问层中的某些内容,以提高吞吐量和性能。
因为将数据库更改为nosql对于重构来说代价很高, 我们计划使用数据库复制,我以前从未使用它。
我们不限于mssql服务器。
ps:我们没有很多表,但有一些社交数据足够大,很难将表/数据库分开。
答案 0 :(得分:1)
你不需要NoSQL,你需要摆脱“数据库综合症”:)
这意味着您可以使用一组较小的数据库代替One Big Database。我非常确定您的系统存在许多不同的问题。例如:结算,运送等
为什么不将这些问题分成不同的数据库?因此,您的“计费”子系统将拥有自己的数据库,“运送” - 另一个,无论您拥有多少,都可以。
它现在变得更容易扩展:如果需要,您可以简单地将它们放在单独的服务器上,或者为重要的服务器提供专用硬件并将其余部分放在一起等等。
管理起来也会容易得多:您可以在一个上下文中单独更改内容而不会影响其他内容。
这是什么是“最佳实践”,SOA风格的一部分是什么;)
另一种(在我眼中不太优选)是所谓的“水平分片”。比如说,您的系统使用“项目”运行,您可以简单地将每个“项目”(及其所有数据)放入单独的数据库中。 它也会起作用,但不适合所有事情而且有自己的技巧。