概述
【转自公众号:CloudBest】
为您的应用程序找到合适的数据库解决方案并不容易。在全球最大的在线视频网站之一爱奇艺,我们在多个领域的数据库选择方面经验丰富:在线事务处理(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多个节点。没有理由您必须独自去做。
最后
以上就是妩媚短靴为你收集整理的干货 | 如何为您的应用程序有效地选择正确的数据库的全部内容,希望文章能够帮你解决干货 | 如何为您的应用程序有效地选择正确的数据库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复