为您的应用程序找到合适的数据库解决方案并不容易。在全球最大的在线视频网站之一爱奇艺,我们在多个领域的数据库选择方面经验丰富:在线事务处理(OLTP),在线分析处理(OLAP),混合事务/分析处理(HTAP),SQL,和NoSQL。。
今天,我将与您分享:
- 选择数据库要使用什么条件
- 我们在爱奇艺使用什么数据库
- 一些决策模型可帮助您有效地选择数据库
- 选择数据库的提示
我希望这篇文章可以帮助您轻松找到适合您的应用程序的数据库。
数据库选择标准
选择数据库时,不同的人使用不同的条件:
- 数据库采购人员更加关注采购成本,包括存储和网络需求。
数据库管理员(DBA)关心以下问题:
- 潜伏
- 每秒查询数(QPS)
- 是否支持更高级的分层存储功能
- 支持多个数据副本
- 高度可用的服务
- 支持多次写入和多活动架构
- 可靠的监视和警报系统
- 支持备份和还原
- 合理的升级和迁移成本
- 积极的支持社区
- 轻松进行性能调整
- 轻松排除故障
运维费用:
- 服务稳定性
- 表现
- 可扩展性:是否易于水平和垂直扩展
- 安全性:是否满足审核要求并防止SQL注入和信息泄漏
应用程序开发人员关心:
- 稳定的服务
- 表现
- 可扩展性
- 易于开发数据库界面
- 轻松修改数据库架构
我们在爱奇艺使用什么数据库
在爱奇艺,我们主要使用以下数据库:
- MySQL
- TiDB
- Redis
- Couchbase
- 大数据分析系统,例如Hive和Impala
- 其他数据库,例如MongoDB,HiGraph和HiKV
由于iQIYI的数据库类型太多,因此应用程序开发人员可能不知道哪个数据库适合其应用程序场景。因此,我们按应用程序场景和数据库接口对这些数据库进行了分类,并构建了一个矩阵:
- X轴代表应用场景:OLTP与OLAP。
- Y轴表示数据库接口:SQL与NoSQL。
爱奇艺的所有数据库
该矩阵具有以下特征:
- 在左边
- 在左上角 数据库支持OLTP工作负载和SQL语言。例如,MySQL支持不同的事务隔离级别,高QPS和低延迟。我们主要使用它来存储交易信息和关键数据,例如订单和VIP信息。
- 在左下角 我们使用NoSQL数据库来优化特殊方案。通常,这些数据库具有简单的架构,或者它们是无架构的,具有高吞吐量和低延迟。我们主要将它们用作缓存或键值(KV)数据库。
- 在右边 所有这些都是OLAP大数据分析系统,例如ClickHouse和Impala。通常,它们支持SQL语言,不支持事务。它们具有良好的可伸缩性和较长的响应延迟。我们可以添加机器以扩大数据存储容量,并且响应延迟更长。
- 围绕两个轴的交汇点 这些数据库是中立的,我们称它们为HTAP数据库,例如TiDB。当数据量较小时,它们具有良好的性能。当数据量很大或查询复杂时,它们的性能还不错。通常,为了满足不同的应用程序需求,我们使用不同的存储引擎和查询引擎。
实用的决策树,可有效选择数据库
我想推荐我们的数据库选择树。我们根据数据库管理员和应用程序开发人员的经验开发了这些树。
如何有效选择关系数据库
选择关系数据库时,您可以:
- 考虑您的数据量和数据库可伸缩性。
- 根据以下条件做出决定:
- 数据库是否具有冷备份系统
- 是否使用TokuDB存储引擎
- 是否使用代理
有效选择关系数据库
如何有效地选择NoSQL数据库
当我们选择的NoSQL数据库,我们必须考虑许多因素来决定是否使用主副框架,客户分片,分布式集群,Couchbase,或HiKV。
有效选择NoSQL数据库
选择数据库的提示
我想与您分享一些选择数据库的提示:
- 尝试解决问题而不先更改数据库。您可以根据数据量,QPS和延迟确定需求,但是这些是真正的需求吗?您是否可以找到一种无需涉及数据库即可消除此要求的方法?例如,如果数据量很大,则可以先对数据进行编码或压缩,这可能会减小数据大小。不要将所有需求降低到数据库级别。
- 考虑选择数据库的真正原因是什么。您选择它是因为它受欢迎吗?还是因为它先进?最重要的问题是:它真的可以解决您的问题吗?例如,如果您的数据量不是很大,则不需要具有大量存储的系统。
- 在放弃解决方案之前,请仔细考虑。您是否因为系统不起作用而放弃了该系统?还是因为您使用不正确?很难摆脱您的解决方案,所以要清楚为什么要放弃它。例如,在做出决定之前,请比较您的TPC-C或Sysbench基准测试。
- 保持自我发展的良好态度。当您需要开发自己的数据库时,可以参考并使用一些成熟的产品。如果不需要,请不要从头开始构建。
- 拥抱开源产品。例如,TiDB是一个开源的分布式SQL数据库。它有一个活跃的社区,目前在GitHub上有26,000星。我们之前的文章描述了TiDB如何帮助我们扩展数据库并实现高可用性。当前,在生产环境中,我们有88个TiDB集群,具有1200多个节点。没有理由您必须独自去做。
转译自:N.F. Mendoza
--END--