软件测试必备之数据库知识
数据库的重要性
数据库是一个容器,仓库存的是货物,而数据库存的是数据。数据库技术从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础,成熟的商业产品和广泛的应用领域,成为企业,部门乃至个人日常工作,生产和生活的基础设施。我们用过的网站:淘宝,阿里巴巴,京东商城,12306,这些都是需要数据库来存储数据的。数据库很好的结局了数据到哪去的问题,同样咱们在购物网站上看到的商品信息解释了数据从哪来的问题。
数据库工具的选择
在项目上数据库的选择需要根据项目的特点,架构以及其他很多相关因素决定的,包含数据安全性,数据量,易用性,项目经费等等。合适的额数据库会利于项目的设计和开发,而不合适的数据库会导致项目开发受阻和提供项目各方面的成本。
数据库通常分为层次式数据库,网络式数据库和关系式数据库三种。而不同的额数据库是按不同的数据结构啦联系和组织的。
而目前最常见的数据库模型主要是两种。
-
关系型数据库
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。 -
非关系型数据库
非关系型数据库的数据结构跟关系型的完全不同,它主要以键值对的形式去存储数据
常用关系型数据库产品
-
Oracle是美国ORACLE公司(甲骨文)提供的以分布式数据为核心的一组软件产品,Oracle数据库的特点是安全,告诉,稳定,并发型号。这些特定都使得很多大企业都选择数据库的时候都毫不犹豫的选择了Oracle。但是Oracle是收费的而且不便宜。
-
MySQL是一种开放源代码的关系型数据库管理系统,并且因为其速度,可靠性和实用性备受中小企业的青睐。从02年发布的4.0 Beta版本之后,mysql使用innoDB作为默认引擎,对事务处理能力以及数据缓存能力有了极大的提高。05年5.0版本由添加了存储过程,服务器游标,触发器,查询优化以及分布式十五功能,后面的版本功能也在得到不断的完善,在国内当前的市场占有很大的一个比例。
-
MariaDB数据库是MySQL的一个分支,由开源社区在维护,开发MariaDB有一部分原因是因为担心甲骨文公司收购了MySQL之后,会有将MySQL闭源的意图,因此社区采用分支的方式来避开这个风险。MariaDB完全兼容MySQL,包括API和命令行,是MySQL的完美替代品,至于存储引擎方面,MariaDB使用的是XtraDB替代了MySQL的InnoDB。
-
Sql Server是由Microsoft开发和推广的数据库,他最初是由Microsoft,Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。MS SQL Server主要面向中小企业。其最大的优势就是在于集成了MS公司的各类产品及资源,提供了强大的可视化界面,高度集成的管理开发工具,在快速构建商业智能方面颇有建树。
常用非关系型数据库产品
-
memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric为首开发的一款软件,他的出现很好的解决了一系列数据库瓶颈的问题,因为在web应用中频繁,集中的访问数据库,就会带有高并发带来的一系列问题,比如导致数据库负担加重,响应恶化,网站显示延迟等重大影响这些问题,而有了memcached提供的数据缓存机制,这些问题就都不是问题了,很多数据可以放在缓存里,拿数据的时候就可以直接从缓存里拿,数据更新的时候直接更新缓存就行了。
-
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串),list(链表),set(集合)和hash(哈希类型)等,Redis是一个高性能key-value数据库。redis的出现很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
-
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。