• IMDB数据库管理系统

  • 简介

    该数据库是一种特性非常齐全的对象-关系型国产化数据库管理系统,ImDB支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触视图、事务完整性、多版本并发控制等。同样,imdb也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。

    功能优势

    (1) imdb是一种特性非常齐全的对象-关系型数据库管理系统,imdb支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。imdb也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。

    (2) 操作系统支持WINDOWS、Linux、UNIX、MAC OS X、BSD。

    (3) 从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。

    (4) 表和视图方面,ImDB支持临时表,而物化视图,可以使用PL/Perl、PL/Python或其他过程语言的存储过程和触发器模拟。

    (5) 索引方面,全面支持R-/R+tree索引、哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN(用来加速全文检索)、支持位图索引。

    (6) 其他对象上,支持数据域,支持存储过程、触发器、函数、外部调用、游标

    (7) 数据表分区方面,支持4种分区,即范围、哈希、混合、列表。

    (8) 从事务的支持度上看,对事务的支持与MySQL相比,经历了更为彻底的测试。

    (9) My ISAM表处理方式方面,MySQL对于无事务的MyISAM表,采用表锁定,1个长时间运行的查询很可能会阻碍对表的更新,而imdb不存在这样的问题。

    (10)    从存储过程上看,imdb支持存储过程。因为存储过程的存在也避免了在网络上大量原始的SQL语句的传输,这样的优势是显而易见的。

    (11)    用户定义的函数的扩展方面,imdb可以更方便地使用UDF(用户定义函数)进行扩展。

    (12)    imdb的稳定性极强,Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足的进步,然而很多Mysql用户都遇到过Server级的数据库丢失的场景—Mysql系统库是MyISAM的,相较而言,imdb数据库在这方面要好一些。

    (13)    任何系统都有他的性能极限,在高并发读写,负载逼近极限下,imdb的性能指标仍然可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而MySQL明细出现一个波峰后下滑。

    (14)    imdb因为它有丰富的几何类型,实际上不止几何类型,imdb中有大量的字典、数组、bitmap等数据类型,相比之下MaySQL就差很多,insagram就是因为imdb的空间数据库扩展POSTGIS远远强于MySQL的my spatial而采用imdb的。

    (15)    imdb的“无锁定”特性非常突出,甚至包括vacuum这样的整理数据空间的操作,这个和imdb的MVCC实现有关系。

    (16)    imdb的可以使用函数和条件索引,这使得imdb数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。

    (17)    imdb有极其强悍的SQL编程能力,有丰富的统计函数和统计语法支持,比如分析函数,还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MySQL就差的很远,很多分析功能那个都没有,腾讯内部数据存储主要是Mysql,但是主要的数据分析就是Hadoop+imdb。

    (18)    imdb的有很多中集群架构可以选择,plproxy可以支持语句级的镜像或者分片,slony可以进行字段级的同步设置,standby可以构建WAL文件级或者流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。

    (19)    一般关系型数据库的字符串有限定长度8k左右,无限长Text类型的功能受限,只能作为外部大数据访问。而imdb的TEXT类型可以直接方法,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用imdb的话,文档数据库就可以省略了

    (20)    对于web应用来说,复制的特性很重要,Mysql到现在也是异步复制,imdb可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate, 是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,imdb的复制基于wal,可以做到同步复制。同时imdb还提供stream复制。