热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

音频文件数据库存储_解决数据库选型问题!如何在眼花缭乱的产品中挑出最适合业务的?...

本文摘自华为云社区,作者:技术火炬手互联网AI时代,随着业务场景越来越复杂,各种开源和商业数据库品类繁多,让不

7a1fee6a-ea13-eb11-8da9-e4434bdf6706.png

本文摘自华为云社区,作者:技术火炬手

互联网+AI时代,随着业务场景越来越复杂,各种开源和商业数据库品类繁多,让不少开发者眼花缭乱,无从下手。业界有句俗语,任何脱离业务来谈架构都是瞎扯。所以用户在数据库选型时,需要从自身业务架构、业务数据量、数据类型、甚至团队成员的业务能力等多角度平衡,考量应该选择何种数据库。那么,我们到底该如何根据每种数据库的特性选择最适合自己业务的?

强调事务,选它

首先谈谈应用最广泛的关系型数据库,关系型数据最大的特点便是事务,它能保证数据始终如一的一致性,这里就不得不提及一下事务的ACID特性:
  • 原子性:事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生,不存在只执行了其中某一个或者某几个步骤。

  • 一致性:事务执行后,数据库状态与其业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。

  • 隔离性:多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

  • 持久性:在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,不会因为异常、宕机而造成数据错误或丢失。

另外,通用的SQL语言使得操作关系型数据库非常方便,支持join等复杂查询。根据它的特点,关系数据库的适用场景通常可以分为OLTP和 OLAP。其中,联机事务处理(OLTP)存储/查询业务应用中活动的数据,以支撑日常的业务活动,是每个企业不可或缺的生产交易系统。这类型应用数据量普遍不大,强调实时、快速响应、数据强一致性,比如银行存取钱,购物消费。联机分析处理(OLAP)存储历史数据以支撑复杂的分析操作,侧重于决策支持,这类应用数据量大,高并行、低并发,可用性要求不高,比如客服系统,销售系统等。以MySQL为例,这是当前最流行的开源关系型数据库,也是OLTP场景的首选数据库。华为的GaussDB(for MySQL)和GaussDB(openGauss)核心竞争力也是OLTP的处理能力,同时具备一定的OLAP的处理能力。但是通常不建议把OLTP和OLAP业务完全混合,在典型的OLAP处理场景就应该使用面向OLAP设计的数据库,而在典型的OLTP处理场景就使用面向OLTP设计的数据库,否则既达不到OLAP的扩展性,又无法满足OLTP的实时、高性能等要求。需要强调的是,特别不建议基于OLAP去增加TP的能力,因为后者是实时和在线,而AP更多是分析,OLAP的数据库往往无法达到性能要求,即便上线初期看似能满足要求,但随着业务量的增加,问题就会凸显出来。除此之外,还要根据是否支持JSON格式、支持的存储模式等维度评估,细节很多,所以在根据业务场景选择数据库的时候,一定要慎之又慎,灵活变通。最后在具体业务场景方面,小编向各位安利以下华为云的数据库产品。网站业务:网站业务请求写少读多,可使用云数据MySQL只读实例水平扩展读负载能力,搭配分布式数据库中间件DDM使用,实现自动读写分离和读负载均衡。移动应用:包含定位功能的移动应用可使用云数据库Postgre SQL数据库获得位置运算能力;数据庞大的移动应用,搭配DDM使用华为云RDS MySQL数据库,轻松应对分库分表问题。游戏业务:爆发式增长的玩家数据存储和读写请求,可以使用华为云RDS快速扩容存储,变更规格或部署新的游戏分区数据库;游戏数据存档或回退,可使用华为云RDS自动备份和PITR特性随时闪回到任意时间点。电商业务:电商“秒杀”、“抢购”等高并发的数据库请求,可使用华为云RDS高规格实例;业务连续性要求高的电商业务,可使用华为云RDS双机热备,跨AZ部署获得更高可用性支持。金融业务:金融级业务连续性和数据可靠性要求,可使用华为云RDS双机热备,跨AZ部署,或者华为自研的分布式数据库的GaussDB,确保服务高可用,数据多副本存储和强一致性;金融级安全合规要求,可搭配数据库安全服务DBSS使用,实时监测并拦截SQL注入,防脱敏数据泄露,审计数据库日志。

针对特定场景满足高并发读写,选它

关系型数据库虽好,但在很多方面也有些力不从心。比如面对高并发读写需求时,多表的关联查询、复杂的数据分析类型,为了保证ACID特性而牺牲的性能问题就凸显出来了。这种时候,就是非关系型数据库的天下了。NoSQL不再将数据的一致性作为重点,它针对特定场景,以高性能和使用便利为目的。目前,应用比较广泛的非关系型数据库有以下几种:文档数据库、key-value数据库、列存储数据库、时序数据库和图数据库。

文档数据库:

文档数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。代表产品:MongoDB、CouchDB、RavenDB适用场景:1. 日志:企业环境下,每个应用程序都有不同的日志信息。文档数据库并没有固定的模式,我们可以使用它储存不同的信息。2. 分析:因为它的弱模式结构,所以不改变模式下就可以储存不同的度量方法以及添加新的度量。备注:以MongDB为例,其使用场景很大程度上可以对标关系型数据库,但是比较适合处理那些没有join、没有强一致性要求且表Schema会常变化的数据。

键值数据库:

键值数据库就像在传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性。它的优势在于简单、易部署、高并发。主流代表产品:Riak、Redis、Memcached适用场景:储存用户信息,比如会话、配置文件、参数、购物车等等,具体包括游戏场景中的角色信息、经验道具信息、好友排名,电商场景中的海量商品展示信息、购物评论信息等,这些信息一般都和 ID(键)挂钩,所以键值数据库是个很好的选择。

列存储数据库:

列存储数据库将数据储存在列族中,一个列族存储经常被一起查询的相关数据。举个例子,如果有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。代表产品:Cassandra、HBase适用场景:1. 日志:可以将数据储存在不同的列中,每个应用程序能够将信息写入自己的列族中。2. 博客平台:储存每个信息到不同的列族中,举个例子,标签可以储存在一个列族,类别、文章也可以分别存储在不同的列族。

时序数据库:

时序数据库就是存放时序数据的数据库,它需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能对比传统数据库仅仅记录了数据的当前值,时序数据库记录了所有的历史数据。它的查询也总是会带上时间作为过滤条件,数据以时间流的方式存在,每条记录包括时间戳。可以更加高效快速的存储大量时间序列数据并对这些数据进行实时分析。

代表产品:Prometheus、InfluxDB和OpenTSDB适用场景:IoT传感器时序数据分析;证券及加密货币交易数据;软硬件设备实时监控;都市环保数据采集等等。

图数据库:

数据以图的方式储存。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。代表产品:Neo4J、Infinite Graph、OrientDB适用场景:1. 在一些关系性强的数据中,用于构建关系图谱,例如社交网络。2. 推荐引擎。如果我们将数据以图的形式表现,会非常有益于推荐的制定。在非关系型数据库服务领域,华为云也推出了GaussDB(for Mongo)、GaussDB (for Redis)、GaussDB (for Influx)、GaussDB(for Cassandra)。目前,GaussDB(for Mongo)、GaussDB(for Cassandra)、GaussDB (for Redis)已正式商用,开发者可以根据不同的数据模型和处理逻辑来选择与业务相符的数据库。

最后

举个简单例子,如果你的业务有大量的结构化数据且存在许多事务性操作,那首选肯定就是MySQL这样的数据库。如果你的业务经常有突发的流量高峰,则优先考虑适用MangoDB这样的非关系型数据库,有比较好的扩展性。数据库的选择决定了业务的可持续发展,所以一定要多花功夫,“因地制宜”根据业务实际情况,选择最适合的数据库。

注:文章中部分概念性内容源自网络。

本文摘自华为云社区,作者:技术火炬手

7c1fee6a-ea13-eb11-8da9-e4434bdf6706.png点击“阅读原文”,进入华为云社区



推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
author-avatar
米西米西的歪国人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有