通常数据库服务器是我们必须购买的最大,最昂贵的盒子,因为垂直缩放是唯一的选择。是否有任何数据库能够水平扩展(即跨多台商品机器)并且这种方法有哪些局限性?你能推荐一个水平伸缩的数据库吗?
回答
别担心,好的解决方案即将到来!
Couchdb和Hypertable是开源的,仍然在alpha版本,但它们明确地设计为使商品软件的缩放比较简单。他们工作得很好,可能会改变你对数据库的看法。
另外,如果可以让其他人为你分发,Google AppEngine和Amazon SimpleDB是非常便宜的分布式数据库服务,尽管它们现在都处于测试阶段,所以严格限制。
存在诸如JavaSpaces(或诸如Gigaspaces之类的商业实现)的存储技术,其提供高度可扩展,快速的对象安全访问。
还有分布式缓存系统,如memcached,它们提供了类似的方法。
当然,这些都不是真正的数据库,但它们都是可以与数据库结合使用以提供大量水平可伸缩性的东西,只要有合适的架构。真正的问题是,如果你想要一个数据库附带的所有ACID优点,就会有一些不可避免的性能损失。唯一的出路是找出不需要ACID的位,并使用其他技术来处理这些位。
Netezza和其他数据仓库设备以这种方式扩展,但它们不适用于OLTP和Web应用程序工作负载。
跨多台计算机进行扩展的Oracle路由称为Real Application Clusters(Oracle RAC)。其他地方没有关于这方面的文件结尾;你可以尝试从http://www.oracle.com/database/rac_home.html开始。
的Oracle RAC - 真正应用集群
这工作得很好,你只需要添加框集群。您可以从一个盒子故障转移到另一个盒子。这不是复制,所有的盒子都是同一个逻辑单元的一部分。
当然,这很漂亮。
Oracle RAC是劳斯莱斯的数据库,允许额外的硬件节点相对容易地添加和硬件故障切换。
但是,您的商品硬件成本将因许可证成本而相形见绌。
为什么你觉得你需要水平缩放。具有40GB RAM和SAN存储的多CPU核心服务器可以支持非常大的数据库安装。
您能提供任何尺寸和预期的活动信息,以便更好地理解您的问题吗?
Oracle Real Application Clusters。如果你想要最好的话,请看看它。
如果你真的认为你会出规模像样的多核“大铁”框,然后你想想你的分区数据。这是一个很好的,数据库不可知的扩展方式。
所有数据库水平将会以严重的成本。
除非你有百万$$的抛出这个问题,忘记RAC。虽然它非常好,但是一旦你缩放超过2个节点,它就非常昂贵。
如果你确实走下了RAC路线,值得记住它不会永远水平放大。即使销售人员也承认90%的rac客户都是4个或更少的节点。一旦你走得更远,你的收益递减。所以rac可能适合你,但不能保证是答案。
的MySQL:http://www.mysql.com/why-mysql/scaleout.html
限制是,它最适用于读取大部分工作负载。你通常有一个接收所有写入的“主”,以及复制写入的许多“从属”。然后,您将读取分配到所有数据库。
MySQL复制是异步的,所以你可能要处理的时间滞后的问题(你写主,再由从机读写已经被复制之前)。
的Oracle RAC不是横向扩展可言,因为所有Oracle实例共享相同的数据存储。是的,用SAN的东西你可以得到一个大尺寸的数据库,但它根本不可扩展。换句话说,Oracle RAC仍然是一种扩展方法。因此,对于向外扩展或横向扩展,您必须通过函数对数据进行分区,这意味着将不同的表组放在不同的数据库中;或者为每个表分区数据,这意味着将一个表分成多个具有相同模式的子表,但存储在不同的数据库中。通过这种方式,您可以获得扩展解决方案。那里有很多资源。在Web 2.0网站架构博客领域,一段时间以来一直是一个流行词。 由于Sharding不直接受数据库本身支持,因此您必须构建自己的解决方案。但正如我所说,已经有很多教训。对于oracle,分区表是可能的。对于mysql,请查询this question
MongoDB 是水平扩展的最佳数据库之一。
你可能看DashDB为OLAP - 与Cloudant用于OLTP IBM对吧。 https://www.ibm.com/developerworks/community/blogs/5things/entry/5_things_to_know_about_dashdb_placeholder?lang=en
- 1. 你会推荐使用MVC Futures库吗?
- 2. 你能推荐一个好的FLEX在线资源或书吗?
- 3. 你能推荐一个免费的云托管提供商吗?
- 4. 你能推荐一个好的SSH同步工具吗?
- 5. 你能推荐一个关于OOP和设计的播客吗?
- 6. 你能推荐一个轻量级的java portlet软件吗?
- 7. 你能推荐一个vhdl源代码的网站吗?
- 8. 你能推荐一个可选的Javascript时间表部件吗?
- 9. 数据库推荐
- 10. 你能推荐一个没有HTML或者atob依赖的JavaScript库吗?
- 11. 你能推荐一个用于ASP.NET MVC应用程序的CAPTCHA库吗?
- 12. 你能推荐一个.net模板引擎吗?
- 13. 你能推荐一个全文搜索引擎吗?
- 14. 你能推荐一个java portlet软件吗?
- 15. 你能推荐一个图像传送带吗?
- 16. 你能推荐我一个json查看器应用程序吗?
- 17. 你能推荐我一个服务器端JavaScript解析器吗?
- 18. 你能推荐一个ASP.NET模板教程吗?
- 19. 你推荐什么JavaScript库?
- 20. 你能推荐一款适用于Python的Amazon AMI吗?
- 21. 你能推荐一些比java.util.Properties更高级的东西吗?
- 22. 你能推荐一本关于原型继承的好书吗?
- 23. 你能推荐一款基于Windows的网络模拟器吗?
- 24. NATS水平伸缩(吞吐量)
- 25. 你能推荐一个更好的替代这个正则表达式吗?
- 26. 你能为我推荐一些网络文件吗?
- 27. 你有推荐的Netbeans插件吗?
- 28. 你可以推荐哪一个用于mysql访问的javascript库?
- 29. 你能推荐一个可以接受WS-Attachments的Python SOAP客户端吗?
- 30. 你能推荐一个好的MySQL存储过程调试器吗?
你检查出任何的NewSQL选择? NuoDB,Clustrix和Xeround都是分布式的OLTP数据库。我在Clustrix工作,并认为它是一个很棒的产品。 – clieu 2013-01-03 02:58:40