SQL Server与NoSQL

时间:2011-06-06 20:47:57

标签: sql-server-2008 nosql

所以我有一个网站,最终可以获得一些非常高的流量。我的数据库实现目前在SQL Server 2008中。我真的只有2个表和一些存储过程。大多数数据库可以重新设计,无需加入即可工作(尽管在SQL Server中可以轻松加入时没有意义。)

我听说像Digg和Facebook这样的网站使用NoSQL数据库进行大量的基本数据访问。这是值得研究的东西,还是SQL Server不会真的让我慢下来呢?

我在我的网站上使用分页(虽然将来可能会改变),而且我也使用AJAX的数据访问大多数“实时”的东西,所以它似乎并不是一个性能障碍那一刻,但我担心随着数据开始呈指数级增长。

我转向NoSQL会获得很多性能吗?老实说,现在我甚至都不完全理解NoSQL,所以关于如何的任何提示都会帮助我提高效率。

谢谢你们。

5 个答案:

答案 0 :(得分:43)

实际上Facebook使用关系数据库作为核心,请参阅SOCC Keynote Address: Building Facebook: Performance at Massive Scale。许多其他网络规模的网站也是如此,请参阅Why does Quora use MySQL as the data store instead of NoSQLs such as Cassandra, MongoDB, CouchDB etc?。还讨论了如何将SQL Server扩展到Web规模的大小,请参阅基于MySpace架构的How do large-scale sites and applications remain SQL-based?Scale out SQL Server by using Reliable Messaging处的更多详细信息)。我并不是说NoSQL没有它的用​​例,我只是想指出白色和黑色之间有很多灰色阴影。

如果您担心当前的解决方案无法扩展,那么您可能应该了解哪些因素阻碍了当前解决方案的可扩展性。测试数据生产成本低,加载“指数增加”的数据量并运行测试工具,查看它的裂缝。 NoSQL解决方案都不会带来神奇的现成可扩展性,它们都要求您了解如何有效地使用它们并正确部署它们。如果您想确保大规模成功,他们还要求您进行大批量测试。传统的关系解决方案也是如此。

答案 1 :(得分:8)

Sql Server可以很好地扩展。例如,Stack Overflow使用它为您提供此页面。 Facebook和Google可能会使用某种形式的nosql,但即使你把它变得非常大,你也不可能达到那个水平。

答案 2 :(得分:7)

通过简单的表结构和适合一台服务器的数据,您使用的平台并不重要。有几个可能的原因需要转移到NoSQL:

  • 数据扩展 - 当所有数据都适合一台服务器(最多几TB)时,SQL效果最佳。许多NoSQL商店没有连接的原因是它们被设计为不要求所有对象都在一台服务器上。

  • 性能扩展 - NoSQL存储在处理高流量时往往更快,但不一定非常重要。只要您没有遇到数据大小问题,您就可以通过复制和缓存提高SQL性能。写入通常必须在一台服务器上运行,但在大多数情况下,在写入性能成为问题之前,您需要提高读取性能。

  • 复杂的数据访问 - 某些类型的查询根本不适合关系模型。图表和集合存储的工作方式与关系数据库完全不同,因此更适合某些应用程序。

  • 更容易开发 - 如果您还没有SQL数据库和所有支持它的代码,使用无模式数据存储可以节省相当多的开发时间。

答案 3 :(得分:1)

我不这么认为你必须将你的数据库从SQL迁移到NoSQL,除非你提供数千TB数据。如果您正确地规范化表并提供数据,并且还需要设置适当的归档机制,它应该可以正常工作。

如果您仍然有疑问选择什么以及如何选择check this。让我们假设你已经决定转向NoSQL数据库而不是很多市场参与者。只需查看list,这又取决于您的需求和数据类型。

答案 4 :(得分:0)

  

迁移到NoSQL会获得很多性能吗?

要视情况而定。

签出this article for 7 reasons when you DON'T want to use NoSQL。如果您的情况不对,请继续阅读。

Document-based NoSQL满足传统企业需求的主要优势是大规模的廉价主机,这是因为查询非规范化数据(最常请求)时CPU使用率较低。重点:

  • 当SQL语句中的JOINGROUP BY上的CPU被破坏时,当解密数据结构意味着没有JOIN或更少scp /path/to/file.ext user@m192.168.0.100:/Destiny/path 时,因此对CPU的压力较小。 / li>
  • CPU是云中最昂贵的资源,然后存储是最便宜的。而且非规范化的数据会用更高的存储空间换来更低的CPU。

如何到达那里?

  1. 掌握DDD(域驱动设计)。
  2. 充分了解CQRS(命令查询职责隔离)和Eventual consistency
  3. 了解您的域和业务流程。
  4. 设计模型,已调整为访问模式。
  5. 评论。
  6. 重复步骤3-5。