常用数据库的特点、应用场景信息整理

关系型数据库

    关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合"科德十二定律"。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

    实体关系模型(Entity-Relationship Model),简称E-R Model是陈品山(Peter P.S Chen)博士于1976年提出的一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图(Entity-Relationship Diagram))来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

    关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

非关系型的数据库

    NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

    NoSQL,指的是非关系数据库。由上面的叙述可以看到关系型数据库中的表都是存储一下格式化的数据结构,每个元组字段的组成都是一样的,即使不是每个元组都需要所有的字段,但数据库会为每个元组都分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系数据库性能瓶颈的一个因素。而非关系数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加或减少一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

 

    NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

开源数据库

    在Linux这种开放源代码的操作系统已经逐渐被越来越多的企业应用时,在基础软件平台的另一端,开源数据库开始显山露水。近2年来,美国一些大企业纷纷采用开放源码数据库,它们往往在总部采用商业数据库,而在分支机构的Linux服务器上采用开源产品。这些数据库除了费用便宜,还各有独到之处。与商业化产品相比,开源数据库结构简单,但功能不简单,读取操作快捷,易管理,甚至不需要全职的管理员。

嵌入式数据库

    在嵌入式系统中,对数据库的操作具有定时限制的特性,这里把应用于嵌入式系统的数据库系统称为嵌入式数据库系统或嵌入式实时数据库系统(ERTDBS)。

    可靠性要求是毋庸置疑的,嵌入式系统必须能够在没有人工干预的情况下,长时间不间断地运行。同时要求数据库操作具备可预知性,而且系统的大小和性能也都必须是可预知的,这样才能保证系统的性能。嵌入式系统中会不可避免地与底层硬件打交道,因此在数据管理时,也要有底层控制的能力,如什么时候会发生磁盘操作,磁盘操作的次数,如何控制等。底层控制的能力是决定数据库管理操作的关键。

    目前嵌入式软件系统开发的挑战之一,体现在对各种数据的管理能否建立一套可靠、高效、稳定的管理模式,嵌入式数据库可谓应运而生。

    嵌入式数据库是嵌入式系统的重要组成部分,也成为对越来越多的个性化应用开发和管理而采用的一种必不可少的有效手段。

    嵌入式数据库用途广泛,如用于消费电子产品、移动计算设备、企业实时管理应用、网络存储与管理以及各种专用设备,这一市场目前正处于高速增长之中。 举简单例子,手机原来只用来打电话、发短信,现在手机增加了很多新的功能,比如彩信、音乐、摄影、视频等等,应用的功能多了,系统就变得复杂。

内存数据库

    内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其"主拷贝"或"工作版本" 常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。显然,它要求较大的内存量,但并非任何时刻整个数据库都存放在内存,即内存数据库系统还是要处理I/O。
    内存数据库是以牺牲内存资源为代价换取数据处理实时性的,内存数据库和磁盘数据库都是当今信息社会里每个企业所必须的关系型数据库产品,磁盘数据库解决的是大容量存储和数据分析问题,而内存数据库解决的是实时处理和高并发问题。两者的存在是相辅相成的,内存数据库的事务实时处理性能要远强于磁盘数据库。但是相对的,他的数据安全方面还没有达到磁盘数据库比肩的地步。
    内存数据库将物理内存作为数据的第一存储介质,而将磁盘作为备份。随着电信业务的发展,系统对实时性的要求和对业务灵活修改的要求非常高,在此种情况下对于内存数据库的需求也越来越高。磁盘数据库的做法是将数据存入内存中进行处理,这种方式的可管理性及数据安全可靠性都没有保障。而内存数据库正是针对这一弱点进行了改进。
    实际上,内存数据库并不是一项时髦技术,其出现于上世纪60年代末,但由于市场的需求原因在90年代后期才开始发展。作为新一代数据库,Altibase产品已经走向混合型数据库,其版本Altibase 4.0已经有一套自带的磁盘数据库,用户一旦购买了Altibase的内存数据库,就无须再购买磁盘数据库。它把热数据(经常被使用的、访问比较高的、经常要运算的数据)放在内存数据库里,而把历史性数据放在磁盘数据库里,可为用户进一步减少投资。
    对于内存数据库而言,可以将同样数据库的部分内容存放于磁盘上,而另一部分存放于内存中。用户可以选择将数据存储在内存表中以提供即时的数据访问。若访问时间不紧急或数据存于内存中所占空间过大时,用户可将这些数据存入磁盘表中。

    比如,在手机用户开始拔打电话时,如果应用基于内存数据库技术的混合数据管理引擎,就通过内存表检索其服务选项并立即验证用户身份,而将通话清单和计费清单归档到磁盘表中。从而,达到了速度与资源使用的平衡。
    内存数据库的技术,一个很重要的特点,是可以对内存中的数据实现全事务处理,这是仅仅把数据以数组等形式放在内存中完全不同的。并且,内存数据库是与应用无关的,显然这种体系结构具有其合理性。内存引擎可以实现查询与存档功能使用的是完全相同的数据库,同时内存表与磁盘表也使用的是完全相同的存取方法。存储的选择,对于应用开发者而言是完全透明的。
    对于内存数据库而言,实现了数据在内存中的管理,而不仅仅是作为数据库的缓存。不像其它将磁盘数据块缓存到主存中的数据库,内存数据库的内存引擎使用了为随机访问内存而特别设计的数据结构和算法,这种设计使其避免了因使用排序命令而经常破坏缓存数据库性能的问题。通过内存数据库,减少了磁盘I/O,能够达到了以磁盘I/O 为主的传统数据库无法与其相比拟的处理速度。
    因此,内存数据库技术的应用,可以大大提高数据库的速度,这对于需要高速反应的数据库应用,如电信、金融等提供了有力支撑。

 

ACCESS数据库

类型

    关系型数据库管理系统

特点

    ACCESS是小型数据库、桌面数据库。

    ACCESS中的数据存储在文件系统内,不适合海量数据的存储。

    容易操作,使用广,成本低。

    Access能够存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文软件公司),或者任何 ODBC 兼容数据库内的资料。

    微软发布,结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office的成员之一。

Access的优点

    存储方式单一

    Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理。

    面向对象

    Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。

    界面友好、易操作

    Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。Access能够导入和导出数据,对早期版本Access中保存和打开的窗体和报表重新进行了设计,使得共享信息比以前更轻松。

    集成环境、处理多种数据信息

    Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。整合范围广泛的数据源,Access支持多种数据库格式,其中包括可扩展标记语言XML,OLE,开放式数据库连接ODBC以及Microsoft Windows SharePoint服务。

    Access支持ODBC

    Access支持ODBC(开发数据库互连,Open Data Base Connectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。

    强大的自动更新属性

    强大的自动更新属性,在更改表中的字段属性后,有控件绑定到这个属性的所有窗体或报表都可以自动更新。

    设计WEB页的工具功能更强大

    设计WEB页的工具功能更强大,Access2003能够在WEB上发布窗体和报表,并能够将指定的信息源定到记录源,以显示,更新和处理数据库中的数据。            

ACCESS的缺点

    网站访问频繁,经常达到100人左右的在线的时候性能就会急剧下降。

    记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降。

    数据储存量小安全性不够高,加了用户级密码容易破解。

    C/S结构下对服务器要求很高,否则容易造成MDB损坏并发数255,但是对高强度操作适应性差,如果服务器不够好,网络不够好,编程的方法不够好,6-7个人同时访问就能导致MDB损坏或者并死.

    不能将VBA代码开发的软件系统直接编译成EXE可执行文件,不能脱离ACCESS或者ACCESS RUNTIME环境,该环境相对其他软件体积较大(50M左右)。

    Microsoft Access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。

使用场景

    ACCESS,一般做小型网站用,性能一般。ASP+ACCESS最常见的小型网站组合,方便快速。

    适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。

SQL Server数据库

类型

    关系数据库管理系统

    是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。

特点

    1.真正的客户机/服务器体系结构。

    在这种体系结构中,包括多台计算机,其中处理应用程序,请求服务的计算机称客户机,处理数据库的计算机称为服务器。

    2.图形化用户界面,使系统管理和数据库管理更加直观、简单。

    提供了表、视图和查询定义的图形界面,在Query Analyze的图形界面中使用SQL语言,服务器和数据库的用户配置的图形化界面。

    3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。

    SQLServer提供了丰富的应用程序接口来访问服务器的数据,主要的访问方法有:ODBC API、OLE DB、Transact-SQL和DB-Library,客户机可以通过这些API作为动态连接库来使用,并通过客户端的网络库与SQLServer服务器通信。

    4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与microsoft BackOffice产品集成。

    与NT的安全性系统集成,利用NT的安全机制为服务器服务,利用NT的性能监测器和使用MS Index Server;与MS BackOffice产品集成,如MS IIS、MS Exchange Server等结合。SQLServer可以设置为用Exchange接收和发送电子邮件,用户可以通过邮件信息向SQLServer发送查询请求,查询结果能够通过电子邮件返回给用户。

    5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。

    MS提供了一种单一的数据库引擎,可以用于Windows95到Windows2000大字节对称多处理器集群的各种场合。NT和SQL不仅支持IntelCPU,而且支持DEC Alpha CPU等处理器。

    6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。

    在Web Assistant中可以将数据库表中的数据引出来,还可以将HTML中的数据引入到数据库中。SQLServer的数据可以自动发行到Web页上;用户可以通过一个普通的浏览器来查询存储在SQLServer中的信息,因此可以用存储在SQLServer中的信息创建动态Web页。

    7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

    SQL Server2000中包括吸取和分析汇总数据以进行联机分析处理(OLAP)的工具,还包括一些工具可用于直观地设计数据库并通过English Query来分析数据。

        

    Sqlserver2000依然属于小型数据库,2005开始才能算是大型数据库。

    SQLSERVER 简单,界面友好,WINDOWS平台下的好选择 ,SqlServer后与SYBASE也比较接近的。

 

SQL Server 2012的优势

    1.安全性和可用性高。

    2.超快的性能。

    3.企业安全性。

    4.快速的数据发现。

    5.方便易用。

    6.高效的数据压缩功能。

    7.集成的开发环境。

        

    SQL Server的劣势

    1开放性。只能运行在微软的windows平台,没有丝毫的开放性可言。

    2可伸缩性,并行性。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。

    3性能稳定性。SQLServer当用户连接多时性能会变的很差,并且不够稳定。

    4使用风险。SQLServer完全重写的代码,经历了长期的测试,不断延迟,许多功能需时间来证明。并不十分兼容早期产品。使用需要冒一定风险。

    5客户端支持及应用模式。只支持C/S模式。

    6 安全性。Oracle的安全认证获得最高认证级别的ISO标准认证,而SQL Server并没有获得什么安全认证。

使用场景

    主机操作系统为window,主要用于web网站的建设,承载中小型web后台数据。

    在租赁的虚拟主机中一般会预安装SQL Server作为数据库软件。

 

MySQL数据库

类型

    开源的关系型数据库

    小型关联式数据库管理系统

    MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。

特点

    其体积小

    总体拥有成本低

    开放源码

    可运行在Windows平台和大多数的Linux平台上

    快速,轻量级,易于扩展,免费,跨平台

    可以同时处理几乎不限数量的用户;

    处理多达50,000,000以上的记录;

    命令执行速度快,也许是现今最快的;

    简单有效的用户特权系统。

优点

    使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

    支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

    为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

    支持多线程,充分利用CPU资源。

    既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

    提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

    提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

    支持多种存储引擎。

    价格便宜:Mysql是开源的,所以你不需要支付额外的费用。

    MySQL使用标准的SQL数据语言形式。

    Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。

    Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

    性能很出色。纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM数据库 与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows 系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。

缺点

    缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能

    比较的难学;

MySQL不完全支持陌生的关键词;

    MySQL也缺乏一些存储程序的功能;

    使用缺省的ip端口,但是有时候这些ip也会被一些黑客闯入;

    使用myisam配置,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。

使用场景

    广泛地应用在Internet上的中小型网站中。

    LAMP(Linux+Apache+Mysql+Php)。

    mysql的优势在于免费,如果业务系统数据库不是极其庞大,可用mysql。

DB2数据库

类型

    关系型数据库系统

特点

    开放性

    能在所有主流平台上运行(包括windows)。最适于海量数据。

    可伸缩性,并行性

    具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点。

    安全性

    获得最高认证级别的ISO标准认证。

    客户端支持及应用模式

    跨平台,多层结构,支持ODBC,JDBC等客户。

    操作

    操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同。

    使用风险

    在巨型企业得到广泛的应用,向下兼容性好。风险小。

使用场景

    性能较高适用于数据仓库和在线事物处理。DB2 超大型数据库,与ORACLE类似 ,数据仓库和数据挖掘相当的不错,特别是集群技术可以使DB2的可扩性能达到极致。

 

Oracle数据库

类型

    关系型数据库系统

特点

优点

    能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

    平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。

    如果windowsNT不能满足需要, 用户可以把数据库移到UNIX中。

    安全性方面,性能最高。

    客户端支持及应用模式 ,多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接式要求,可根据实际系统需求构造数据库。

    采用标准的SQL结构化查询语言。

    具有丰富的开发工具,覆盖开发周期的各阶段。

    支持大型数据库,数据类型支持数字、字符、大至2GB的二进制数据,为数据库的面向对象存储提供数据支持。

    具有第四代语言的开发工具(SQL*FORMS、SQL*REPORTS、SQL*MENU等)。

     具有字符界面和图形界面,易于开发。

    通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的运行状态,调整数据缓冲区的大小。

    分布优化查询功能。

    具有数据透明、网络透明,支持异种网络、异构数据库系统。并行处理采用动态数据分片技术。

    支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、客户机/服务器)。

    实现了两阶段提交、多线索查询手段。

    数据安全保护措施:没有读锁,采取快照SNAP方式完全消除了分布读写冲突。自动检测死锁和冲突并解决。

    数据安全级别为C2级(最高级)。

    数据库内模支持多字节码制,支持多种语言文字编码。

    具有面向制造系统的管理信息系统和财务系统应用系统。

    WORKGROUP/2000具有ORACLE7WORKGROUP服务器,POWER OBJECTS(图形开发环境,支持OS/2、UNIX、WINDOWS/NT平台。

    在中国的销售份额占50%以上,市场份额高。

    

缺点

    管理维护麻烦一些;

    数据库崩溃后回复很麻烦,因为他把很多东西放在内存里;

    数据库连接要慢些,最好用连接池;

    大对象不好用,vchar2字段太短,不够用;

    管理员的工作烦,且经验非常重要;

    对硬件的要求很高;

    价格昂贵

使用场景

    大部分企事业单位都用oracle,在电信行业占用最大的份额。

    在各个行业中都用使用案例。

 

Hadoop

类型

    一个分布式系统基础架构,由Apache基金会所开发。    

    Hadoop是在分布式服务器集群上存储海量数据并运行分布式分析应用的一种方法。

    Hadoop被设计成一种非常"鲁棒"的系统,即使某台服务器甚至集群宕机了,运行其上的大数据分析应用也不会中断。此外Hadoop的效率也很高,因为它并不需要你在网络间来回倒腾数据。

特点

    HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

    Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。

    Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

    Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

    Hadoop 还是可伸缩的,能够处理 PB 级数据。

    此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。

    hadoop大数据处理的意义

    Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务发送(Map)到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

使用场景

    Hadoop 的最常见用法之一是 Web 搜索。

在百度主要用于如下场景:

    日志的存储和统计;

    网页数据的分析和挖掘;

    商业分析,如用户的行为和广告关注度等;

    在线数据的反馈,及时得到在线广告的点击情况;

    用户网页的聚类,分析用户的推荐度及用户之间的关联度。

Hadoop在淘宝和支付宝的应用从09年开始,用于对海量数据的离线处理,例如对日志的分析,也涉及内容部分,结构化数据等。

Sybase数据库

类型

    关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。

特点

    它是基于客户/服务器体系结构的数据库

    一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。

    而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。

    客户/服务器模型的好处是:

        ● 它支持共享资源且在多台设备间平衡负载

        ● 允许容纳多个主机的环境,充分利用了企业已有的各种系统

    它是真正开放的数据库

    它是一种高性能的数据库

    1)可编程数据库

    通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。

    2)事件驱动的触发器

    触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。

    3)多线索化

    Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。

使用场景

    1、SYBASE ASE

    Sybase ASE 的全称是 Adaptive Server Enterprise ,是企业及数据库服务器,适合用于企业级OLTP(在线联机事务处理),是功能强大的关系数据库管理系统。

    2、SYBASE ASA

    Sybase ASA 的全称是 Adaptive Server Anywhere,是轻量级数据库服务器,适合用于移动计算(PDA、带OS的手机等)、嵌入式计算(POS机、路由器等)、工作组级OLTP环境,特别是移动计算/嵌入式计算。

    3、SYBASE IQ

    Sybase IQ 是企业级数据仓库数据库服务器,适合于DSS环境中的企业级数据仓库和数据集市。

 

Informix数据库

类型

    Informix是IBM公司出品的关系数据库管理系统(RDBMS)

特点

    操作简单,管理方便。

    易于安装、配置

    但是较少的系统性能分析、故障分析、跟踪工具是它的缺点。

使用场景

    IBM® Informix® 是 IBM 的主要数据库,适用于高容量在线事务处理(Online Transaction Processing,OLTP)、集成的应用程序,以及目前的速度惊人的数据仓库/分析工作负载。

 

firebird数据库

类型

    关系数据库系统

    开源数据库

    嵌入式关系数据库

特点

    Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。

    firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。 给中小型企业提供了一个很好的工具,一些需要小的数据库的软件!

    

    Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性;

    Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整;

    Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性;

    不用考虑授权费用(免费),不用担心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭;

    发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件;

    Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选;

    Firebird的运行效率非常高;

    具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改;

    开发环境支持良好,Delphi,C++Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。

使用场景

    免安装的嵌入式关系数据库

 

Greenplum数据库

类型

    专门做数据仓库的数据库

    关系数据库系统

    开源数据库

    MPP架构

特点

    GREENPLUM是一个关系型数据库集群。它实际上是由数个独立的数据库服务组合成的逻辑数据库。与RAC不同,这种数据库集群采取的是MPP架构。

    数据存储

    当今是个数据不断膨胀的时代,采取MPP架构的数据库系统才能对海量数据进行管理。

    Greenplum支持50PB(1PB=1000TB)级海量数据的存储和处理,Greenplum将来自不同源系统的、不同部门、不同平台的数据集成到数据库中集中存放,并且存放详尽历史的数据轨迹,业务用户不用再面对一个又一个信息孤岛,也不再困惑于不同版本数据导致的偏差,同时对于IT人员也降低管理维护工作的复杂度。

    高并发

    随着商业智能在企业内的快速发展,BI 用户对信息分析平台的访问频率和查询复杂度也快速提升,因此要求相应的数据库系统对高并发查询进行支持。Greenplum利用强大并行处理能力提供并发支持。

    Greenplum提供资源管理功能(workload managemnt)来管理数据库资源,利用资源队列管理可实现按用户组的进行资源分配,如Session同时激活数、最大资源值等。通过资源管理功能,可以按用户级别进行资源分配和管理用户SQL查询优先级别,同时也能防止低质量SQL(如没有条件的多表join等)对系统资源的消耗。

    线性扩展

    Greenplum与其他分布式大数据产品如Yonghong Z-DataMart一样采用了通用的MPP并行处理架构,在MPP架构中增加节点就可以线性提高系统的存储容量和处理能力。Greenplum在扩展节点时操作简单,在很短时间内就能完成数据的重新分布。

    Greenplum线性扩展支持为数据分析系统将来的拓展给予了技术上的保障,用户可根据实施需要进行容量和性能的扩展。

    高性价比

    Greenplum数据库软件系统节点基于业界各种开放式硬件平台,如SUN/HP/DELL等厂商的PC Server等,在普通的x86 Server上就能达到很高的性能,因此性价比很高,相比于其他封闭式数据仓库专用系    统,Greenplum每TB的投资是前者的1/5甚至更低。同样,Greenplum产品的维护成本相比同类厂商也低许多。

    反应速度

    我们面对的是一个瞬息变化的市场,谁能首先感知到市场的需求和变化,就能在竞争中先行一步,获得主动权,在竞争中立于不败之地。

    Greenplum通过准实时、实时的数据加载方式,实现数据仓库的实时更新,进而实现动态数据仓库(ADW)。基于动态数据仓库,业务用户能对当前业务数据进行BI实时分析-"Just In Time BI",能够让企业敏锐感知市场的变化,加快决策支持反应速度。

    高可用性

    Greenplum是高可用的系统,在已有案例中最多使用了96台机器的集群MPP环境。除了硬件级的Raid技术外,Greenplum还提供数据库层Mirror机制保护,即每个节点数据在另外的节点中同步镜像,单个节点的错误不影响整个系统的使用。

    对于主节点,Greenplum提供Master/Stand by机制进行主节点容错,当主节点发生错误时,可以切换到Stand by节点继续服务。

使用场景

    当前使用的 OLTP程序中,用户访问一个中心数据库,如果采用SMP系统结构,它的效率要比采用MPP结构要快得多。而MPP系统在决策支持和数据挖掘方面显示了优势,可以这样说,如果操作相互之间没有什么关系,处理单元之间需要进行的通信比较少,那采用MPP系统就要好,相反就不合适了。

    既主要用于数据仓库。

 

MPP 系统

    Greenplum的架构采用了MPP(大规模并行处理)。在 MPP 系统中,每个 SMP节点也可以运行自己的操作系统、数据库等。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配(Data Redistribution) 。与传统的SMP架构明显不同,通常情况下,MPP系统因为要在不同处理单元之间传送信息,所以它的效率要比SMP要差一点,但是这也不是绝对的,因为 MPP系统不共享资源,因此对它而言,资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。这就是看通信时间占用计算时间的比例而定,如果通信时间比较多,那MPP系统就不占优势了,相反,如果通信时间比较少,那MPP系统可以充分发挥资源的优势,达到高效率。

Hibari数据库

类型

    非关系型数据库

    NoSQL,开源非关系型数据库

特点

    一个Hibari集群是一个分布式系统。

    一个Hibari集群是线性可伸缩的。

    一个Hibari集群是高度可用。

    所有的更新都是持久的。

    所有的更新都是强一致性。

    所有客户端操作是无锁的。

    一个Hibari集群的性能很好。

    多个客户端访问协议是可用的。

    修理后自动数据服务器故障。

    集群配置可以在任何时间被改变。

    数据是自动重新平衡。

    异构硬件支持是很容易的。

    极大地简化创建健壮的客户机应用程序。

    表可配置的性能选项可用。

使用场景

    Hibari可以用于云计算应用,比如Web端的邮件,SNS网站和其他形式的服务需求。

    可用于云计算环境中,例如 webmail、SNS 和其他要求T/P级数据存储的环境中。Hibari 支持 Java, C/C++, Python, Ruby, 和 Erlang 语言的客户端。

    云计算应用,如Web电子邮件、社交网络服务,以及其它日常需要储存TB和PB级规模数据的服务。

Leveldb数据库

类型

    google实现的非常高效的kv数据库

    NOSQL,开源数据库

特点

    真正基于磁盘的键值存储,模型单一简单,数据量不受限于内存大小,数据落盘高可靠, LSM模型天然写优化,顺序写盘的方式对于新硬件ssd再适合不过了,不足是仅提供了一个库,需要自己封装server端。

    高效的kv数据库。

    开源。

    LevelDB 是单进程的服务,性能非常之高,在一台4核Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。

    此处随机读是完全命中内存的速度,如果是不命中 速度大大下降。

    LevelDb是一个持久化存储的KV系统,和Redis这种内存型的KV系统不同,LevelDb不会像Redis一样狂吃内存,而是将大部分数据存储到磁盘上。

    LevleDb在存储数据时,是根据记录的key值有序存储的,就是说相邻的key值在存储文件中是依次顺序存储的,而应用可以自定义key大小比较函数,LevleDb会按照用户定义的比较函数依序存储这些记录。

    像大多数KV系统一样,LevelDb的操作接口很简单,基本操作包括写记录,读记录以及删除记录。也支持针对多条操作的原子批量操作。

    LevelDb支持数据快照(snapshot)功能,使得读取操作不受写操作影响,可以在读操作过程中始终看到一致的数据。

    LevelDb还支持数据压缩等操作,这对于减小存储空间以及增快IO效率都有直接的帮助。

使用场景

    LevelDB可应用于很多场景,如用于网页浏览器存储最近存取网页的缓存,或用于操作系统存储安装包列表,或用于应用存储用户的设置参数。新版本的Chrome浏览器里部署的IndexedDB HTML5 API就是基于LevelDB打造的,Google的数据库Bigtable掌管着数百万数据表也是用LevelDB的,其作为存储引擎被Riak和Kyoto Tycoon所支持。在国内,淘宝的Tair开源Key-Value存储也已经将LevelDB作为其持久化存储引擎,并部署在线上使用。

M​o​n​g​o​D​B

类型

    NoSQL数据库

    开源数据库

特点

    特点:

    高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

    面向集合存储,易存储对象类型的数据。

    模式自由。

    支持动态查询。

    支持完全索引,包含内部对象。

    支持查询。

    支持复制和故障恢复。

    使用高效的二进制数据存储,包括大型对象(如视频等)。

    自动处理碎片,以支持云计算层次的扩展性

    支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。

    文件存储格式为BSON(一种JSON的扩展)。

    可通过网络访问。

 

    功能:

    面向集合的存储:适合存储对象及JSON形式的数据。

    动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

    完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。

    查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。

    复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。

    高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)

    自动分片以支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器。

使用场景

    NoSQL产品广泛应用于各种大型门户网站和专业网站,大大降低了运营成本。

    2010年,随着互联网Web2.0网站的兴起,NoSQL在国内掀起一阵热潮,其中风头便是MongoDB。

    网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

    缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源 过载。

    大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

    高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。

    用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。

R​e​d​i​s数据库

类型
    开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。

    NOSQL。

特点

    Redis的优点

    性能极高 – Redis能支持超过 100K+ 每秒的读写频率。

     丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

     原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

    丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写。

使用场景

    少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。

     新浪微博:史上最大的Redis集群

    Pinterest:Reids维护上百亿的相关性

    Viacom:Redis在系统中的用例盘点

S​Q​L​l​i​t​e数据库

类型

    一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的。

特点

    嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

    支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。

    特点:

    1. ACID事务

    2. 零配置 – 无需安装和管理配置

    3.储存在单一磁盘文件中的一个完整的数据库

    4.数据库文件可以在不同字节顺序的机器间自由的共享

    5.支持数据库大小至2TB

    6. 足够小, 大致13万行C代码, 4.43M

    7. 比一些流行的数据库在大部分普通数据库操作要快

    8. 简单, 轻松的API

    9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定

    10. 良好注释的源代码, 并且有着90%以上的测试覆盖率

    11. 独立: 没有额外依赖

    12. 源码完全的开源, 你可以用于任何用途, 包括出售它

    13. 支持多种开发语言,C, PHP, Perl, Java, C#,Python, Ruby

    14. 支持内存数据库

使用场景

    作为数据库的应用场景
    需要数据库的小型桌面软件
    如果你开发一个小型的桌面软件并且需要用到数据库功能(比如某个背单词软件),那SQLite是一个不错的选择。因为SQLite很绿色又很短小精悍。
    不过,由于Windows在桌面系统的比重很大。对于那些不考虑跨平台的开发人员,SQLite相对于Access来说,没有太大的优势。
    需要数据库的手机软件
    眼下手机应用的发展很迅猛,相应的开发人员也多起来了。假如你就是一个手机应用程序的开发人员,并且你开发的应用需要有数据库功能(比如某个字典工具),那SQLite简直是不二之选。由于手机操作系统名目繁多,同时手机的内存偏小,这时候SQLite跨平台和轻量级的特长就充分发挥出来了。目前几个知名的手机操作系统(比如
AndroidWindows MobileSymbinPalm等),SQLite都支持得不错。

    作为数据容器的应用场景
    所谓数据容器,就是把SQLite作为装数据的容器,充分发挥SQLite单一数据文件的优点。另外,还可以避免自己定义一套数据文件格式的麻烦。要知道,定义一个完善的数据文件格式是难度极大滴(要考虑可扩展性、要考虑向下兼容、假如跨CPU架构还要考虑字节序、假如数据量大还要考虑性能、还要...)。
    数据备份/恢复、数据导入/导出
    某些软件系统(尤其是些企业应用系统)经常会碰到数据备份/恢复的功能需求。比如说,客户会要求你把一些数据(往往是业务相关的)定期备份成一个独立的数据文件,然后存储在别处。一旦软件系统自身发生不测,再把备份的数据恢复回来。
    另外,导入/导出功能也是经常碰到的。一般是某个软件安装在多个地方。然后需要把一些数据(往往是业务相关的)从A处导出,然后在B处导入。
    针对上述这两种需求:如果牵涉的数据比较大,就不宜使用XML或者Access;如果牵涉到跨平台,就无法使用Access;如果牵涉到多种数据,就不宜使用CSV(除非你能忍受多个CSV文件并存)。有上述条件限制的地方,都很适合用SQLite。
    在线升级
    这年头不联网的单机已经很少了,提供在线升级功能的软件会多起来。一般的在线升级分为两类:升级程序(比如Firefox自动升级新版本)和升级业务数据(比如杀毒软件升级病毒库)。这两种类型都可以使用SQLite来完成。把需要要升级的内容放置到SQLite数据库文件中,将来升级时只需下载单一的升级文件即可。
    作为内存数据库的应用场景
    在这种类型的场景中,咱们要充分发挥SQLite内存数据库的特长。由于SQLite的API设计比较合理,操作内存数据库和操作文件数据库几乎没啥区别,所以从文件型切换到内存型,代码不用大改。另外,从3.6.11开始,SQLite增加了
online backup接口,便于在内存数据库和文件数据库之间进行数据的同步。
    降低磁盘I/O开销
    比如开发了某个字典工具,词库存储在SQLite数据库文件中。当词库越来越大的时候,你可能会发现,查词的速度越来越慢。当然啦,速度慢未必是磁盘 I/O引起的。这时候你可以把程序略微修改一下(可能就10行左右的代码),在初始化时把词库载入内存的SQLite数据库中。然后再对比测试一下性能。如果发现性能有明显提升,那你以后就可以一直用这种方式了。
    使用这个招数,要小心内存数据库对内存空间的占用。比如对于普通的PC,占用个几兆、十几兆还行,再大的话就不爽了。另外,对于手机操作系统,此招数效果不好(手机本身的内存就不是很大,而且存储介质的速度已经蛮快了)。
    作为临时表
    内存数据库方式,还可以用来充当临时表,存放一些临时数据。当程序的进程退出时,内存数据库就自然消失了,不会留下任何垃圾。
  不过这种方式只适合于某个程序独占临时表的情形。如果临时表需要被多个进程共用,这招就不灵了。

 

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页