浅谈数据库

2020-09-27  本文已影响0人  沙克阿拉卡

一.关系型数据库

关系模型,即是二维表模型
关系型数据库,就是二维表及其之间的联系所组成的数据存储组织

   关系      二维表                                    表名
   元组      一行                                      记录
   属性      一列                                      字段
   域       某一列                                     取值范围
   关键字   唯一标识元组(一个或多个列组成)                 主键

       ACID特性,数据库管理事务
       .原子性 Atomicity
       .一致性 Consistency
       .隔离性 Isolation
       .持久性 Durability

二.非关系型数据库

       非关系型数据库提出一种理念,如键值对存储,且结构不固定,每一个元组可以不一样字段,每个元组可以根据需要增加一些键值对,不会局限于固定的结构,可以减少一些时间和空间的开销。

三.关系型数据库的瓶颈,非关系型数据库应运而生。

       关系型数据库的最大特特点就是事务的一致性,传统的关系型数据库读写操作都是事务的,具有ACID的特性,这个特性使得关系型数据库可以用户几乎所有对一致性有要求的系统中,典型的银行系统。
       但是,在网页应用中,尤其是SNS应用中,一致性不是显得那么重要,用户A看到的内容同用户B、用户C内容更新不一致是可以容忍的,或者说,两个人看到同一好友的数据更新的时间差几秒是可以容忍的,因此,关系型数据库的最大特点无用武之地了。相反的,关系型数据库为了维护一致性付出的巨大代价就是其读写性能比较差,像微博,faceblook类SNS应用对并发读写能力要求极高,并且在SNS系统升级,功能的增加,往往意味着数据结构的变化,这些关系型数据库都无法应付,必须用新的一种数据结构存储来代替关系数据库。
       非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
       必须强调的是,数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库这员老将。

四.解决关系型数据库的瓶颈

1.高并发读写需求
       网站的用户并发性非常高,可能每秒达到上万次读写请求,对于传统关系型数据库来说,硬盘I/O是个很大的瓶颈。
       非关系型数据库:面向高性能并发读写的key-value数据库,特点即具有极高的并发读写性能,典型的Redis,Tokyo Cabinet,Flare
2.海量数据的高效率读写
       网站每天产生的数据量是巨大的,对于关系型数据库,一张表包含海量数据的表中查询,效率也是非常低的。
       非关系型数据库:面向海量数据访问的面向文档数据库:特点是可以在海量的数据中快速的查询数据,典型的MongoDB,CouchDB
3.高扩展和可用性
       结构是固定的,数据库的横向扩展是非常难的,升级往往需要停机和数据迁移。
       非关系型数据库:面向可扩展性的分布式数据库,解决传统数据库存在的可扩展性上的缺陷,适应数据量的增。

五.数据库简单对比

       Mysql,以表级锁为主,资源锁定粒度大
       Oracle,行级锁,资源锁定的粒度小,并发性更好
       Sqlite, 轻量级数据库,追求最大的磁盘效率,适用单机嵌入式场景,占用资源非常低,速度非常快,但同一时间只允许一个写操作,吞吐量有限,不适用大面积数据。没有Mysql全面,不支持用户系统(能管理数据库连接对数据库和表的访问权限),也不像Mysql有跟多安全的高级特性。
       FMDB,iOS平台的Sqlite数据库框架,以OC的方式分装了Sqlite的C语言API
       优点:
       使用起来更加面向对象,省去了跟多麻烦,冗余的C语言代码
       对比苹果自带的Core Data框架,更加轻量和灵活
       提供了多线程安全的数据库操作方法,有效防止数据混乱
        三个主要类:
       FMDatabase, 其对象就代表一个单独的SQlite数据库,用来执行SQL语句
       FMResultSet,用来执行查询后的结果集
       FMDatabaseQueue,用于在多线程中执行多个查询或更新,是线程安全的。

上一篇 下一篇

猜你喜欢

热点阅读