MyBatis,MySQL,SQL,NoSQL 释义

参考文档:
https://blog.csdn.net/wyz0516071128/article/details/80877831
https://blog.csdn.net/chaizepeng/article/details/119384531
https://blog.csdn.net/lengyuezuixue/article/details/78961645
https://blog.csdn.net/weixin_45851945/article/details/114287877
https://blog.csdn.net/qq_41489540/article/details/113624586

MyBatis:

mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。(这句话笔者也只是略懂,差不多能明白啥意思)

持久层是什么意思呢,可以把层字去掉,持久,也就是”保持长久“的意思,他针对的是系统中数据存在的时限,而非其他。有一个基本问题大家应该知道,在内存中的数据是不持久的,如果计算机崩溃或者其他原因导致关机,数据就会丢失,但是磁盘上的数据是持久的,因此,用在持久层也就是这个框架是用来将内存中的数据写入到磁盘中的,再具体一点,就是写到数据库中。所以,总结一下,框架用于持久层,就是说这个框架是和数据库进行交互的,用于数据库中数据操作的框架。

轻量级框架:可以简单的理解为所用框架开发的程序启动时占用的资源少、对业务代码的侵入性不强、比较容易配置、使用和部署简单、独立部署即可使用无需依赖另外的框架,这种就是轻量级框架,相反的就是重量级。在互联网飞速发展和产品迭代更新速度如此之快的今天,轻量级的框架更容易被接受,这也是spring胜出,EJB退出的原因。

ORM,Object Relational Mapping, 直接翻译就是对象关系映射,我也没有更好的解释,看一下百科上是这样介绍的”用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生”。这里简单的可以这样理解,java中的数据类和数据库之间的类型系统不同,因此在使用java处理数据库时,需要进行对应的类型转化,而mybatis可以做这个事,可以将java中的类型一一映射到数据库的字段类型上,因此可以将其看作是一个ORM框架。那为什么又是半自动ORM框架呢?使用mybatis,需要手动配置pojo、sql和映射关系,用户可以自定义sql,这些sql是针对于处理数据库的,但是这些sql需要接受一些查询java类型的参数,或者是返回结果集封装到java类中,这些是需要配置的,因此mybatis是一个半自动ORM框架。说到底还是因为需要写sql,才能将数据库中的数据映射到java类中,而不是直接根据java类获取到对应数据库中数据。这里多说一下,hibernate是一个全自动的ORM框架,因为只需要提供pojo和映射关系即可,后期可以直接根据pojo获取到数据。

高级映射是:这里可以类比数据表之间的映射关系,也就是一对一、一对多、多对多。


MySQL:

MySQL是一个关系型数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL是开源的。

MySql支持大型的数据库,可以处理拥有成千上万条记录的大型数据库。

MySql支持标准的SQL数据语言形式。

MySql可以允许在多个系统上,并且支持多种语言。

MySql对PHP有很好的支持。

MySql支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB

MySql是可以定制的,采用了GPL协议。


SQL:

Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。
上面的释义转自


NoSQL:

NoSQL是海量数据增删改查的, 基本不支持SQL语法,NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,互联网的早期我们的数据大多以关系型数据库来存储的。其特点是规范的数据结构(预定义模式)、强一至性、表与表之间通过外键进行关联,这些特征使我们对数据的管理更加清晰和严谨,但随着互联网的发展数据成爆炸式的增长我们对数据库需要更好的灵活性和更快的速度。这就是NoSql可以做到的。它不需要预先定义模式,没有主外键关联、支持分片、支持复本。
NoSQL的横向扩展是很方便的,只需要加节点,加机器就可以了.比普通数据库方便很多。

NoSQL 可扩展是很强的。


四者区别和联系:

他们不是一个东西,但有所联系。
SQL是结构化查询语言,数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。
NoSQL是海量数据增删改查的, 基本不支持SQL语法,NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”
MySQL体积小、速度快、成本低、结构稳定、便于查询,可以保证数据的一致性,但缺乏灵活性。
NoSQL高性能、高扩展、高可用,不用局限于固定的结构,减少了时间和空间上的开销,却又很难保证数据一致性。
如果规模和性能比24小时的数据一致性更重要,那NoSQL是一个理想的选择 (NoSQL依赖于BASE模型——基本可用、软状态、最终一致性)。
但如果要保证到“始终一致”,尤其是对于机密信息和财务信息,那么MySQL很可能是最优的选择(MySQL依赖于ACID模型——原子性、一致性、独立性和耐久性)。
mybatis是一款用于持久层的、轻量级的半自动化ORM框架,支持自定义sql,一般我们在公司里使用的时候就会在使用到Java、并且需要SQL语句的时候需要mybatis。


NoSQL和MySQL的区别

结合:《javaEE 互联网轻量级框架整合开发》
https://blog.csdn.net/Gjc_csdn/article/details/80449299
https://blog.csdn.net/allen_a/article/details/50611966

即非关系型数据库和关系型数据库。

MySQL的优点:事务处理—保持数据的一致性;由于以标准化为前提,数据更新的开销很小(相同的字段基本上只有一处);可以进行Join等复杂查询

NoSQL的优点:首先它是基于内存的,也就是数据放在内存中,而不是像数据库那样把数据放在磁盘上,而内存的读取速度是磁盘读取速度的几十倍到上百倍,所以NoSQL工具的速度远比数据库读取速度要快得多,满足了高响应的要求。即使NoSQL将数据放在磁盘中,它也是一种半结构化的数据 格式,读取到解析的复杂度远比MySQL要简单,这是因为MySQL存储的是经过结构化、多范式等有复杂规则的数据,还原为内存结构的速度较慢。NoSQL在很大程度上满足了高并发、快速读/和响应的要求,所以它也是Java互联网系统的利器。
简单的扩展:典型例子是Cassandra,由于其架构是类似于经典的P2P,所以能通过轻松地添加新的节点来扩展这个集群;
低廉的成本:这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的License成本;

NoSQL的缺点:大多数NoSQL数据库都不支持事务,也不像 SQL Server和Oracle那样能提供各种附加功能,比如BI和报表等; 不提供对SQL的支持

如何选择?
如果规模和性能比24小时的数据一致性更重要,那NoSQL是一个理想的选择 (NoSQL依赖于BASE模型——基本可用、软状态、最终一致性)。
但如果要保证到“始终一致”,尤其是对于机密信息和财务信息,那么MySQL很可能是最优的选择(MySQL依赖于ACID模型——原子性、一致性、独立性和耐久性)。

如果关系数据库在你的应用场景中,完全能够很好的工作,而你又是非常善于使用和维护关系数据库的,那么我觉得你完全没有必要迁移到NoSQL上面,除非你是个喜欢折腾的人。如果你是在金融,电信等以数据为王的关键领域,目前使用的是Oracle数据库来提供高可靠性的,除非遇到特别大的瓶颈,不然也别贸然尝试NoSQL。

然而,在WEB2.0的网站中,关系数据库大部分都出现了瓶颈。在磁盘IO、数据库可扩展上都花费了开发人员相当多的精力来优化,比如做分表分库(database sharding)、主从复制、异构复制等等,然而,这些工作需要的技术能力越来越高,也越来越具有挑战性。如果你正在经历这些场合,那么我觉得你应该尝试一下NoSQL了。

具体问题具体分析
MySQL体积小、速度快、成本低、结构稳定、便于查询,可以保证数据的一致性,但缺乏灵活性。
NoSQL高性能、高扩展、高可用,不用局限于固定的结构,减少了时间和空间上的开销,却又很难保证数据一致性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值