一文带你相识三大开源关系型数据库:SQLite、MySQL和PostgreSQL ...

打印 上一主题 下一主题

主题 534|帖子 534|积分 1602

目次
1、概述
2、SQLite数据库
2.1、SQLite简介
2.2、SQLite优缺点
2.3、SQLite应用场景
3、MySQL数据库
3.1、MySQL简介
3.2、MySQL优缺点
3.3、MySQL应用场景
4、PostgreSQL数据库
4.1、PostgreSQL简介
4.2、PostgreSQL优势
4.3、PostgreSQL应用场景
5、在实际系统中的选择

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)
https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)
https://blog.csdn.net/chenlycly/article/details/125529931C++软件分析工具从入门到精通案例集锦(专栏文章正在更新中...)
https://blog.csdn.net/chenlycly/article/details/131405795C/C++基础与进阶(专栏文章,持续更新中...)
https://blog.csdn.net/chenlycly/category_11931267.html       一个完备的IT系同一般少不了数据库系统的支撑,大量的数据需要保存到数据库中。差别的数据库在使用场景和性能上,有一定的差异。IT系统需要根据运行情况、数据量的大小以及业务需求,选择合适的数据库。本日我们就来讲讲三个常用的免费开源的关系型数据库SQLite、MySQL和PostgreSQL,大概地相识一下这三个数据库的差异与应用场景。
1、概述

       数据库可以分贸易数据库和免费数据库,常见的贸易数据库有Microsoft SQL Server、Oracle、Sybase、DB2和Informix,普遍使用的免费数据库则有SQLite、MySQL和PostgreSQL。贸易数据库的性能和功能强盛全面,而且他们还有强盛的技术团队支持。免费开源数据库的稳定性和性能也不逊色,有着生动开源社区的支撑。
       一些政府和银行的项目,使用贸易数据库比力多,比如Microsoft SQL Server、Oracle、Sybase、DB2和Informix等。但对于大部分IT厂商,出于成本的考虑,会选用免费开源的数据库,开源的数据库也更可控。

       本文我们主要来讨论一下SQLite、MySQL和PostgreSQL这三个免费开源数据库。轻量级数据库SQLite主要用于客户端和嵌入式设备中,存放一些轻量级的数据。MySQL和PostgreSQL主要用于服务端,存放一些大量或海量的数据。
       此外,国内的一线大厂在数据库领域举行了深入的研究和结构,在MySQL和PostgreSQL等开源数据库的基础上举行深度优化和创新,开发出了满意他们大型业务系统海量数据存储需求的新型数据库以及应用于云盘算领域的云数据库,比如腾讯的TBase数据库、阿里的OceanBase数据库以及华为的GaussDB数据库。而且这些大厂,根据自身业务系统的需求,开发出了用于差别业务场景的多种数据库。
   这些大厂之所以能将自主创新的数据库玩起来,主要有以下几个缘故原由:
  1)他们有雄厚的资金与人才储备,可以投入大量的人力和资源去做深度的研究和结构;
  2)他们有自家的大型业务系统(比如腾讯有微信、阿里有淘宝、华为有庞大的电信运营支撑系统,这些产物系统中深度地融入了云盘算和大数据技术),为了满意自家系统的海量数据高效存储与查询需求,他们必须要在现有技术的基础上举行持续的技术创新;
  3)新产物和技术应用到自家的大型业务系统之后,可以会遇到这样或那样的题目或瓶颈,这能持续地推动产物和技术的优化与改进。
        近十年来,也诞生了很多国产数据库厂商,比如瀚高公司的瀚高数据库(基于开源的PostgreSQL数据库)、达梦公司的达梦数据库、人大金仓的Kingbase数据库。
2、SQLite数据库

2.1、SQLite简介


       SQLite,是一款轻量级的关系型数据库,是一个用C语言开发库。它的计划目标是用于嵌入式系统中的,很多嵌入式产物中使用了它,它占用资源很低,可能只需要几百K的内存就够了。它支持Windows、Linux、Unix等主流的利用系统,因为它是用C语言开发的,可以和很多程序语言相结合,比如 C++、C#、PHP、Java、Python、Ruby等:
   1)C/C++
由于SQLite自己是C写的,它自带的API也是C接口的。所以C/C++用起来最直接了。假如你不喜欢面向过程的C API风格,可以别的找个C++的包装库。想重新发明轮子的同砚,也可以自己包装一个。
2)Java
如果要用Java访问SQLite,可以通过SQLite的JDBC驱动,大概通过专门的SQLite包装库。个人建议走JDBC方式,万一将来要换数据库,代码就不用大改。
3)Python
pysqlite是Python利用SQLite的首选。从Python 2.5开始,它已经被整合到Python的标准库中。看来Python社区还是蛮喜欢SQLite嘛。
4).Net
对于喜欢dotNet的同砚,可以通过SQLite的ADO.NET驱动来访问。
5)Ruby
Ruby可以通过SQLite-Ruby利用SQLite数据库。
         SQLite第一个Alpha版本诞生于2000年5月。 至2023年已经接近有23个年头,SQLite也迭代到了3.0版本。不像常见的客户 - 服务器数据库范例,SQLite引擎不是一个与数据库服务器通信的独立进程,而是直接链接到程序中成为程序的一部分(可以直接将.h和.c添加到目标工程中,也可以封装成dll供目标程序调用)。
       使用SQLite数据库的方式很简单,只需要将之集成到程序中,直接调用SQLite提供的API接口即可完成数据库和表的创建、数据的增删改查等利用。整个数据库(定义、表、索引和数据自己)都是存储在宿主主机上的一个或多个db文件。关于如何调用SQLite库提供的API函数,可以拜见之前写的文章:
轻量级数据库SQLite的API接口说明
https://blog.csdn.net/chenlycly/article/details/123482588
2.2、SQLite优缺点

       SQLite是完全免费开源的,是一种轻量级的数据,运行时占用很少的内存资源,只需要集成到程序中即可使用。支持多个利用系统,支持C、C++、Java和Python多种开发语言。SQLite支持大部分SQL语句和数据库特性。
       SQLite有以下的缺点:
   1)并发访问的锁机,SQLite在并发(包括多进程和多线程)读写方面的性能不停不太理想。数据库可能会被写利用独占,从而导致其它读写利用阻塞或出错。
2)SQL标准支持不全,在它的官方网站上,详细列举了不支持哪些SQL92标准。我个人感觉比力不爽的是不支持外键约束。
3)有时间需要访问其它机器上的SQLite库文件,就会把数据库文件放置到网络共享目次上。这时间你就要警惕了。当SQLite文件放置于NFS时,在并发读写的情况下可能会出题目(比如数据损坏)。缘故原由据说是由于某些NFS的文件锁实现上有Bug。
  
        在这里,给大家重点推荐一下我的几个热门畅销专栏,欢迎订阅(博客主页还有其他专栏,可以去查看)
专栏1:(该精品技术专栏的订阅量已到达430多个,专栏中包罗大量项目实战分析案例,有很强的实战参考价值,广受好评!专栏文章持续更新中,预计更新到200篇以上!欢迎订阅!)
C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)
https://blog.csdn.net/chenlycly/article/details/125529931

   本专栏根据多年C++软件异常排查的项目实践,系统地总结了引发C++软件异常的常见缘故原由以及排查C++软件异常的常用思路与方法,详细讲述了C++软件的调试方法与本领,以图文并茂的方式给出详细的项目题目实战分析实例(很有实战参考价值),带领大家渐渐掌握C++软件调试与异常排查的相关技术,得当基础进阶和想做技术提升的相关C++开发人员!
  考察一个开发人员的水平,一是看其编码及计划本领,二是要看其软件调试本领!所以软件调试本领(排查软件异常的本领)很重要,必须重视起来!能办理一般人办理不了的题目,既能提升个人本领及价值,也能体现对团队及公司的贡献!
  专栏中的文章都是通过项目实战总结出来的,包罗大量项目题目实战分析案例,有很强的实战参考价值!专栏文章还在持续更新中,预计文章篇数能更新到200篇以上!
  专栏2: 
C/C++基础与进阶
https://blog.csdn.net/chenlycly/category_11931267.html
   以多年的开发实战为基础,总结并讲解一些的C/C++基础与进阶内容,以图文并茂的方式对相关知识点举行详细地展开与叙述!专栏涉及了C/C++领域的多个方面的内容,同时给出C/C++及网络方面的常见笔试面试题,并详细讲述Visual Studio常用调试本领与技巧!
  
2.3、SQLite应用场景

       SQLite是一种轻量级的数据库,主要用于存储一些轻量级的数据,由于其占用的资源小,经常被用在嵌入式系统和移动设备中。SQLite无法处理惩罚大型系统中的海量数据,其实时性和性能不敷,无法满意海量数据的高效存储及查询的需求。
       可以在客户端软件中使用SQLite去存储一些数据,比如IM聊天软件中可以使用他来存放聊天数据,也可以使用它去存储一些配置信息。嵌入式设备的资源有限,需要使用数据库时,优先选择SQLite数据库。
       有些数据我们可以直接将内存中的二进制数据以二进制流的方式直接写到文件中,但是这种二进制数据在增删改查时非常不方便,要重写将更新后的二进制数据重写覆盖写到文件中。使用SQLite去存储数据,在增删改查时会非常方便。
3、MySQL数据库

3.1、MySQL简介


       MySQL的第一版由瑞典公司 MySQL AB 在 1995 年发布,该公司的创始人为 David Axmark、Allan Larsson 和 Michael Widenius。MySQL 项目接纳 GNU 通用公共许可 (GPL)在 2000 年作为开源发布。到 2001 年,MySQL 有超过 200 万次的有效安装;到 2004 年,该软件天天的下载超过 3 万次。
       MySQL 于 2008 年被 Sun Microsystems 以10亿美元收购。当 Oracle 于 2009 年收购 Sun Microsystems 时,它也得到了 MySQL 的全部权。Oracle公司对 MySQL 软件接纳了双授权政策,分为社区免费版和贸易版。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,因为其免费开源,如今是使用最广泛的开源关系数据库系统,是浩繁IT厂商的第一选择。
3.2、MySQL优缺点

        MySQL主要有以下几点优势:
   1)它使用的核心线程是完全多线程,速率快并支持多处理惩罚器。
2)有多种列范例:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM范例。
3)它通过一个高度优化的类库实现SQL函数库并像他们能到达的一样快速,通常在查询初始化后不应有任何内存分配。没有内存漏洞。
4)支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
5)MySQL可以工作在差别的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。
6)全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自差别数据库的表。
7)全部列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
          固然MySQL也存在一些缺陷:
   1)MySQL最大的缺点是其安全系统,主要是复杂而非标准,别的只有到调用mysqladmin来重读用户权限时才发生改变。
2)MySQL的另一个主要的缺陷之一是缺乏标准的RI(Referential Integrity-RI)机制;Rl限定的缺乏(在给定字段域上的一种固定的范围限定)可以通过大量的数据范例来补偿。 
3)MySQL直到5.0版本才支持存储过程,对存储过程支持的并不是很好。
4)MySQL不支持热备份,MySQL热备的题目主要与InnoDB存储引擎的特性有关。InnoDB存储引擎是MySQL默认的存储引擎,它具有ACID特性,而且支持行锁机制,在高并发的场景下可以提供良好的性能。然而,在实现热备的情况下,就会暴露InnoDB存储引擎的一些缺陷。
  3.3、MySQL应用场景

       MySQL用一种简单的方式为数据访问(和使用)提供了可靠的保护。大多数网站和Web应用程序,可以忽视约束性地简单工作在MySQL上。别的,如果你工作在一个需要高度定制的办理方案上,可以使用MySQL的丰富配置设置和利用模式,能够很容易地实行你的规则。如果你在开发的应用需要被多用户访问,而且这些用户都用同一个数据库,则需要选择客户 - 服务器模式数据库MySQL。
4、PostgreSQL数据库

4.1、PostgreSQL简介


       PostgreSQL是一个功能强盛的开源数据库系统,它诞生于美国加州大学伯克利分校,PostgreSQL于1996年首次以开源软件的情势发布。颠末长达15年以上的积极开发和不停改进,PostgreSQL已在可靠性、稳定性、数据同等性等得到了业内极高的荣誉。
       如今PostgreSQL可以运行在全部主流利用系统上,包括Linux、Unix(AIX、BSD、HP-UX、SGI IRIX、Mac OS X、Solaris和Tru64)和Windows。PostgreSQL是完全的事务安全性数据库,完备地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。它支持了大多数的SQL:2008标准的数据范例,包括整型、数值型、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包罗各种文档。
        作为一种企业级数据库,PostgreSQL以它所具有的各种高级功能而自大,像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而举行的预写日志等。它支持国际字符集、多字节编码并支持使用当地语言举行排序、大小写处理惩罚和格式化等利用。它也在所能管理的大数据量和所答应的大用户量并发访问时间具有完全的高伸缩性。如今已有很多PostgreSQL的系统在实际生产情况下管理着超过4TB的数据。由于PostgreSQL的良好性能,它已赢得最终用户和业内的多次大奖,包括Linux新媒体(Linux New Media)的最佳数据库奖和5次Linux期刊编辑选出的最佳数据库奖。
       最重要的一点,PostgreSQL的源代码可以自由获取,它的授权是在非常自由的开源授权下,这种授权答应用户在各种开源或是闭源项目中使用、修改和发布PostgreSQL的源代码。用户对源代码的可以按用户意愿举行任何修改、改进。因此,PostgreSQL不仅是一个强盛的企业级数据库系统,也是一个用户可以开发私用、网络和贸易软件产物的数据库开发平台。
4.2、PostgreSQL优势

       PostgreSQL 提供了丰富的核心功能,使其成为广泛使用的数据库办理方案。以下是几个重要的核心功能:
   

  • 高级查询功能:PostgreSQL 支持复杂的 SQL 查询,包括联接、子查询、聚合函数、窗口函数等。同时它还支持全文搜刮、地理空间数据处理惩罚和图形数据分析等扩展功能。
  • 完备性约束:PostgreSQL 答应定义各种完备性约束,例如主键、唯一约束、外键和检查约束,以包管数据的完备性和同等性。
  • 触发器和存储过程:PostgreSQL 支持触发器和存储过程,答应在插入、更新或删除数据时实行自定义的业务逻辑。
  • 并发控制:借助多版本并发控制(MVCC)技术,PostgreSQL 实现了高度并发的读写利用,避免数据锁定和读写辩论。
  • 复制和高可用性:PostgreSQL 支持数据复制和流复制,可以创建热备份和实现高可用性架构。
  • 扩展性:通过提供扩展机制,用户可以自定义和使用各种插件和扩展,从而增强 PostgreSQL 的功能。
  4.3、PostgreSQL应用场景

       如果你需要你的数据库实行一些定制利用,灵活可扩展的PostgreSQL是更好的选择。如果可能要把整个数据库系统迁移到另一个数据库系统(例如Oracle)中,PostgreSQL对于这种切换将是最兼容和易于利用的。PostgreSQL是完全开源的,不受任何贸易公司的控制,与受甲骨文控制的MySQL相比,PostgreSQL更加值得信任。比如在国产化系统中,为了安全起见,会优先选择更加自主可控的PostgreSQL。
5、在实际系统中的选择

       就我们打仗到的实际系统而言,需要处理惩罚大量的数据信息,需要较高的安全性,以及支持多用户并发,可以选择MySQL或PostgreSQL。在嵌入式设备和移动设备中,业内使用的都是轻量级数据库SQLite,实际运行时需要频繁直接读/写磁盘文件。在国产化的系统中,为了实现完全的自主可控,会选择完全开源且不受贸易控制的PostgreSQL。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表