
总体来说,主流数据库并不存在明确的好坏之分,每一种数据库都有各自的优缺点,最主要还是看它是否能够满足您的需求。
总的来说,选择数据库可以从以下角度考虑:
从个人角度出发的话,如果是以学习和小型业务需求为主,推荐使用MySQL,它的优势在于:
成本(免费)
自由(完全开源,适用多个场景)
性能(体积小但速度快)
这三点决定了MySQL数据库的超高性价比。并且目前有不少主流公司仍然青睐MySQL,大名鼎鼎的Fackbook就依然在延续MySQL的使用。
2 如果是企业角度出发,主流的大型数据库如Oracle、Sql Server以及近些年来大数据领域十分火热的非关系型数据库,例如Redis、HBse等等,都可以作为考虑的对象。
接下来具体列举一些常用数据库的优缺点,希望能为大家提供参考:
MySQL:
优势:
MySQL是开放源代码的数据库,任何人都可以获得该数据库的源代码。
MySQL能够实现跨平台 *** 作,可以在Windows、UNIX、Linux和Mac OS等 *** 作系统上运行。
MySQL数据库是一款自由软件,大部分应用场景下都是免费使用。
MySQL功能强大且使用方便,社区生态繁荣,有诸多学习资料。
缺点:规模小,功能有限。
SQL Server
高度可扩展:可以从单一的笔记本电脑上运行任何东西或以高倍云服务器网络运行,或在两者之间任何东西。
“虽然说是“任何东西”,但是仍然要满足相关的软件和硬件的要求“
生态链广:具有内置的商务智能工具,以及一系列的分析和报告工具,可以创建数据库、备份、复制,带来了更好的安全性。
Oracle
Oracle数据库系统是目前世界上流行的关系数据库管理系统,具有以下特点:
可移植性好(在各类大、中、小、微机环境中都适用)
使用方便、
功能强
因此,Oracle是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。
DB2
DB2是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。它的应用特点如下:
支持面向对象的编程:db2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索。可以建立用户数据类型和用户自定义函数。
支持多媒体应用程序:db2支持大二分对象(blob),允许在数据库中存取二进制大对象和文本大对象。其中,二进制大对象可以用来存储多媒体对象。
具有良好的备份和恢复能力
支持存储过程和触发器,用户可以在建表时显示的定义复杂的完整性规则
支持异构分布式数据库访问,支持数据复制
PostgreSQL
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),它的 Slogan 是 “世界上最先进的开源关系型数据库”。
PostgreSQL具有如下特征:
函数:通过函数,可以在数据库服务器端执行指令程序。
索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。
触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的”快照”,用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。
规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的 *** 作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。
数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据等。
全文检索:通过 Tsearch2 或 OpenFTS,83版本中内嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。
数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL
phoenix、impala、hive、shark、spark SQL等,本人目前在项目中使用的是phoenix工具,是一个访问hbase的JDBC驱动jar包,基本像访问JDBC一样,可以进行各种CRUD *** 作,还带有事务功能,性能据官网介绍还是非常快的
那么,这么好的P是怎么做到的呢?官网详细地说明了HikariCP所做的一些优化,总结如下:
字节码精简:优化代码,直到编译后的字节码最少,这样,CPU缓存可以加载更多的程序代码;
优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一;
自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range check,避免调用remove()时的从头到尾的扫描;
自定义集合类型(ConcurrentBag):提高并发读写的效率;
其他针对BoneCP缺陷的优化,比如对于耗时超过一个CPU时间片的方法调用的研究(但没说具体怎么优化)。
很多优化的对比都是针对BoneCP的……哈哈。
提升数据库性能可以提升查询速度,优化数据库结构,减少服务器压力等,那么如何优化数据库呢?北京电脑培训来看看下面的文章!
1数据库I/O方面硬件性能
最有可能影响性能的是磁盘和网络吞吐量。解决办法:
·扩大虚拟内存,并保证有足够可以扩充的空间
·把数据库服务器上的不必要服务关闭掉
·把SQL数据库服务器的吞吐量调为最大
2调整数据库
·若对该表的查询频率比较高,则建立索引。
·分区(如MySQL,按时间分区)
·尽量使用固定长度字段和限制字段长度(如varchar(10))优势:
降低物理存储空间
提高数据库处理速度
附带校验数据库是否合法功能
3使用存储过程
应用程序的实现过程中,能够采用存储过程实现的对数据库的 *** 作尽量通过存储过程来实现。
因为存储过程是存放在数据库服务器上的一次性被设计、编码、测试,并被再次使用,需要执行该任务的应用可以简单地执行存储过程,并且只返回结果集或者数值。
这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得在应用中完成逻辑的一致性实现。
4SQL语句方面
建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使用。不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。
·优化sql语句,减少比较次数
·限制返回条目数(mysql中使用limit)
以上就是关于什么数据库比较热门全部的内容,包括:什么数据库比较热门、phoenix,impala,spark sql访问hbase数据库哪种工具性能最优、为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)