你或许会遇到须要选择合适的开源数据库的状况。但这不管对于开源方面的老手或是新手,都是一项艰巨的任务。在过去的几年中,采用开源技术的企业愈来愈多。面对这样的趋势,众多开源应用公司都纷纷承诺本身提供的解决方案可以各类问题、适应各类负载。但这些承诺不能轻信,在开源应用上的选择是重要而艰难的,尤为是数据库这种关键的应用。凭借我在 Percona 和其它公司担任 IT 专家的经验,我很幸运可以指导其余人在开源技术的选择上作出正确的决策,由于须要考虑的重要因素太多了。但愿经过这篇文章可以向你们分享这方面的一些技巧。
数据库
有一个明确的目标后端
这一点看似简单,但在和不少人聊过 MySQL、MongoDB、PostgreSQL 以后,我以为这一点才是最重要的。面对繁杂的开源数据库,更须要明确本身的目标。不管这个数据库是做为开发用的标准化数据库后端,抑或是用于替换遗留代码中的原有数据库,这都是一个明确的目标。目标一旦肯定,就能够集中精力与开源软件的提供方商讨更多细节了。架构
了解你的工做负载负载均衡
尽管开源数据库技术的功能愈来愈丰富,但这些新加入的功能都不太具备普适性。譬如 MongoDB 新增了事务的支持、MySQL 新增了 JSON 存储的功能等等。目前开源数据库的广泛趋势是不断加入新的功能,但不少人的误区却在于没有选择最适合的工具来完成本身的工做 —— 这样的人或许是一个自大的开发者,又或许是一个视野狭窄的主管 —— 最终致使公司业务上的损失。最致命的是,在业务初期,使用了不适合的工具每每也能够顺利地完成任务,但随着业务的增加,很快就会到达瓶颈,尽管这个时候还能够替换更合适的工具,但成本就比较高了。例如,若是你须要的是数据分析仓库,关系数据库可能不是一个适合的选择;若是你处理事务的应用要求严格的数据完整性和一致性,就不要考虑 NoSQL 了。工具
不要从新发明轮子oop
在过去的数十年,开源数据库技术迅速发展壮大。开源数据库重新生,到受到质疑,再到受到承认,如今已经成为不少企业生产环境的数据库。企业再也不须要担忧选择开源数据库技术会产生风险,由于开源数据库一般都有活跃的社区,能够为愈来愈多的初创公司、中型企业甚至 500 强公司提供开源数据库领域的支持和第三方工具。Battery Ventures 是一家专一于技术的投资公司,最近推出了一个用于跟踪最受欢迎开源项目的 BOSS 指数 。它提供了对一些被普遍采用的开源项目和活跃的开源项目的详细状况。其中,数据库技术毫无悬念地占据了榜单的主导地位,在前十位之中占了一半。这个 BOSS 指数对于刚接触开源数据库领域的人来讲,这是一个很好的切入点。固然,开源技术的提供者也会针对不少常见的典型问题给出对应的解决方案。我认为,你想要作的事情极可能已经有人解决过了。即便这些先行者的解决方案不必定彻底契合你的需求,但也能够从他们成功或失败的案例中根据你本身的需求修改得出合适的解决方案。若是你采用了一个最前沿的技术,这就是你探索的好机会了。若是你的工做负载恰好适合新的开源数据库技术,放胆去尝试吧。第一个吃螃蟹的人老是会获得意外的挑战和收获。性能
先从简单开始网站
你的数据库实际上须要达到多少个 9 的可用性?对许多公司来讲,“实现高可用性”仅仅只是一个模糊的目标。固然,最多见的答案都会是“它是关键应用,咱们不管多短的停机时间都是没法忍受的”。数据库环境越复杂,管理的难度就越大,成本也会越高。理论上你总能够将数据库的可用性提得更高,但代价将会是大大增长的管理难度和性能降低。因此,先从简单开始,直到有须要时再逐步扩展。
例如,Booking.com 是一个有名的旅游预订网站。但少有人知的是,它使用 MySQL 做为数据库后端。 Booking.com 高级系统架构师 Nicolai Plum 曾经发表过一次演讲,讲述了他们公司使用 MySQL 数据库的历程。其中一个重点就是,在初始阶段数据库能够被配置得很简单,而后逐渐变得复杂。对于早期的数据库需求,一个简单的主从架构就足够了,但随着工做负载和数据量的增长,数据库引入了负载均衡、多个读取副本,还使用 Hadoop 进行分析。尽管如此,早期的架构仍然是很是简单的。
blog
有疑问,找专家事务
若是你仍然不肯定数据库选择的是否合适,能够在论坛、网站或者与软件的提供者处商讨。研究各类开源数据库是否知足本身的需求是一件颇有意义的事,由于总会发现你从不知道的技术。而开源社区就是分享这些信息的地方。
当你接触到开源软件和软件提供者时,有一件重要的事情须要注意。不少公司都有开放的核心业务模式,鼓励采用他们的数据库软件。你能够只接受他们的部分建议和指导,而后用你本身的能力去研究和探索替代方案。
总结
选择正确的开源数据库是一个重要的过程。不少时候,人们都会在真正理解需求以前就作出决定,这是本末倒置的。