一个项目,用十款数据库?

这篇具有很好参考价值的文章主要介绍了一个项目,用十款数据库?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是豆小匠。

关于数据库,大学的时候只知道MySQL,学习深入点也就是用到了Redis、MongoDB等非关系型数据库。

然而,工作中用到的数据库实在太多,每种数据库都有自身的优势和局限性。所以在这里梳理下日常常用数据库和适用场景,走起!


1. 常用数据库

1.1. 关系型数据库

关系型数据库通常是业务型项目的主力数据库,原因以下:

  1. 方便业务建模,表的关系和业务之间的关联是类似的。
  2. 数据一致性,关系型数据库一般支持ACID特性,可用于核心业务场景的数据持久化。

关系型数据库的基本单位是,表与表之间通过关联,比如学生表和班级表,可以通过班级ID,把学生和班级关联起来。

一个项目,用十款数据库?,技术学习,数据库

关系型数据库的经典代表:MySQL、Orcle、PostgreSQL、SQLite等。

1.2. 非关系型数据库

非关系型数据库其实只是一个比较笼统的叫法,实际分类下有非常多,这里只介绍键值对文档列式存储图形结构等几种。

1.2.1. KV数据库

KV数据库以键值对的形式存储数据,常见底层数据结构实现是哈希表,读数据复杂度是O(1)。

key value
bean good
milk bad

key-value存储的数据通常单个key-value就是一个条独立的数据,很方便水平扩展,可以根据key散列到不同的分片,且读的性能极好,因此常用于做缓存。

经典的代表有Redis、Memcached和LevelDB等。

1.2.2. 文档型数据库

文档型数据库的数据以文档的形式存储数据,每个文档类似一个JSON对象。

相比于KV存储,文档型数据库同样对水平扩展友好,且具有更好的查询性能,支持复杂查询,而KV存储几乎只通过key来读取数据。

一个项目,用十款数据库?,技术学习,数据库

经典的文档型数据库有MongoDB,CouchDB和Elasticsearch等。

1.2.3. 列式存储数据库

经典的列式存储数据库有HBase、Druid、ClickHouse等,不同列式数据库的底层实现差别挺大的,它们的共同点是按列存储。

比如说MySQL存一个学生信息,有学号和姓名等,这两个字段在同一行,存放也是在一起的;但是列式数据库会按列划分存储,把学号和姓名分开存储,相同的数据类型有利于进行数据压缩、聚合操作等

下面是HBase的一条数据组成解析,一个Row Key(行键)下有多个Column Family(列族),列族下面有Column Qualifier(列限定符),最后会根据设置保存若干个版本,形成Timestamp/version: Cell Value的键值对。这里我们只需要知道不同的列族是分开存储的就行了

一个项目,用十款数据库?,技术学习,数据库

1.2.4. 图数据库

图数据库的基本单元是,经典的图数据库包括Neo4j、OrientDB、TigerGraph等。

简单来说点表示实体,而边则表示实体间的关系,组成一个整体后,可以形成知识图谱、社交网络、金融风控网络等。

一个项目,用十款数据库?,技术学习,数据库

比如存储了上图关系,可以直接查询关注了豆小匠Coding的用户:

MATCH (user:User {name: '豆小匠Coding'})<-[:FOLLOWS]-(follower:User)
RETURN follower.name

上述查询使用了 Neo4j 的图查询语言 Cypher。它首先通过 MATCH 子句找到名为豆小匠的用户节点 user,然后通过 -[:FOLLOWS]-> 关系查找所有关注了该用户的节点 follower。最后,通过 RETURN 子句返回关注者的姓名。

2. 场景下的数据库

2.1. Demo项目

SQLite,一个轻量级的数据库,不需要独立服务器或者系统级别的配置,只需要一个文件,就可以存储数据库所有数据,适用于小型设备或者嵌入式系统等。

如果你只是做一个demo级别的项目,也可以使用SQLite,然后使用ORM框架来操作数据,后面切换MySQL也只需要修改数据库连接逻辑。

2.2. MySQL遇到瓶颈

如果是单机MySQL遭遇性能瓶颈,可以通过主从架构读写分离,堆机器的方式解决,另一个方向是增加缓存,如Redis等,减少打到物理存储的请求量。

如果是数据量太大,单表查询性能下降,可以考虑分库分表,但是分库分表在开发时需要考虑更多分布式事务、水平扩展等因素,对研发效率有影响。因此,这个时候可以考虑使用分布式数据库,如TiDB等

2.3. 场景专用数据库

随着业务的复杂,我们会发现不同场景下对数据库的要求差异会很大:

  1. 一致性优先,选用关系型数据库。
  2. 高性能全文搜索,使用Elasticsearch。
  3. 非关键数据,读多写少,量大,选用列式存储。
  4. 离线数据分析,Hive。

这期就喵到这!能读到这里的朋友,点个赞呗!文章来源地址https://www.toymoban.com/news/detail-780657.html

到了这里,关于一个项目,用十款数据库?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQLite学习(十二)SQLite《社区流动人员系统》项目实战,数据库创建

    在前面的博客中,我们学习了 SQLite 的理论知识,从本篇博客开始,同学们将通过一个实战项目**《社区流动人员系统》**,对之前所学的知识做一次实战应用。 随着社会经济的迅速崛起,城市一体化的步伐加快,大量农民选择转移到城市中就业。形成了一股数量巨大的流动性

    2024年02月08日
    浏览(86)
  • 【fly-iot飞凡物联】(15):IOT项目使用TDengine数据库,进行技术调研,本地使用docker启动成功,可以使用python进行连接数据插入。

    本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108971807 fly-iot飞凡物联专栏: https://blog.csdn.net/freewebsys/category_12219758.html 产品简介 TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至

    2024年02月03日
    浏览(53)
  • 华为云云耀云服务器L实例评测|用PHP从数据库到后端到前端完整实现一个中秋节祝福语项目

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:PHP进阶实战教程,评测专区。 🎉欢迎 👍点赞✍

    2024年02月08日
    浏览(41)
  • 将一个 PostgreSQL 数据库复制到另一个数据库中

    以管理员身份进入cmd窗口,输入如下命令 语法: 示例:

    2024年02月22日
    浏览(33)
  • 【软考数据库】第六章 数据库技术基础

    目录 6.1 基本概念 6.1.1 关于数据的基本概念 6.1.2 数据库管理系统的功能 6.1.3 数据各个发展阶段的特点 6.1.4 数据库系统的体系结构 6.2 数据模型 6.2.1 三级模式两级映像 6.2.2 数据模型_模型分类 6.2.3 数据模型_组成要素 6.2.4 概念模型中的基本概念 6.2.5 数据模型 6.3 数据存储与查

    2024年02月05日
    浏览(40)
  • 数据库的下一个变革方向——云原生数据库

    亚马逊数据库产品支持免费试用,并且提供上手教程。【数据库免费试用上手教程】 回看人类历史上每一次技术的跨越,生产力变革永远不会缺席。“云原生数据库”也已经悄然走到了第十个年头。未来十年,云原生数据库领域的创新将远远超过过去十年。亚马逊将举办一场

    2024年02月11日
    浏览(33)
  • 数据库第十章(数据库恢复技术)十一章(并发控制)

    目录 1.事务 2.并发控制 1.事务 事务的特点:ACID 原子性   atom 一致性   consistent 隔离性   isolation 持久性   durable 故障的种类 1.事务内部故障         措施:采取redo重做和undo撤销技术 2.系统故障DBMS         措施:重启 3.介质故障         硬件损坏 4.计算机病毒   数据恢

    2024年02月09日
    浏览(49)
  • 借助navicat,把一个数据库里面的部分表数据,导入另一个数据库中

    在navicat里面创建两个数据库,一个是n1,另一个是n2 n1:有数据,需要把n1里面的部分表数据导入到n2里面 n2:被导入的数据库      

    2024年02月12日
    浏览(36)
  • 数据库技术基础

    根据希赛相关视频课程汇总整理而成,个人笔记,仅供参考。 数据库通常是指有组织地、动态地存储在( 外存上 的相互联系的数据的集合)应用数据库主要目的是解决数据(共享)问题。 三级模式/两级映像 : 数据库系统设计员可通过外模式、概念模式和内模式来描述(视

    2024年04月23日
    浏览(27)
  • mysql怎么将已有的数据库拷贝为另一个数据库

    您可以使用MySQL的 CREATE DATABASE 和 CREATE TABLE 语句将已有的数据库和其表拷贝到另一个数据库中。下面是具体的步骤: 在MySQL客户端中,使用 CREATE DATABASE 语句创建一个新的空数据库。例如,如果您想将现有的数据库 source_db 拷贝到新数据库 target_db 中,可以执行以下命令: 在

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包