美文网首页
浅谈数据库

浅谈数据库

作者: 沙克阿拉卡 | 来源:发表于2020-09-27 20:48 被阅读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,用于在多线程中执行多个查询或更新,是线程安全的。

相关文章

  • 浅谈MongoDB数据库

    浅谈MongoDB数据库 Java操作MongoDB数据库简介MongoDB 介绍数据库安装MongoDB使用Mo...

  • 浅谈数据库优化

    浅谈数据库优化 在面试的时候经常会被问到数据库如何优化的?面试的时候最担心遇到这种宽泛的问题。如果你直接说:“建索...

  • 浅谈数据库

    概念 什么是数据库 定义:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 注意:误用导致混...

  • 浅谈数据库

    内容转载自我的博客 数据库介绍 数据库(Database)指的是以一定方式储存在一起、能为多个用户共享、具有尽可能...

  • 浅谈数据库中的知识发现

    浅谈数据库中的知识发现 前言:数据挖掘只是数据库知识发现中的一小部分内容,数据库中的知识发现是一个从数据集中发现知...

  • 2020-07-02

    浅谈 浅谈模块设计宏内核 浅谈接口设计Flags 浅谈稳定性设计重试 浅谈人员业务结构设计矩阵式 浅谈接口设计 |...

  • Java与数据库初步交互(后续需要进行优化)

    1. 浅谈Java-MVC(个人理解) l Model层存放数据实体 l Dao层访问数据库返回结果集给Contr...

  • 浅谈Filecoin(二)

    浅谈Filecoin(二) 浅谈Filecoin(一)链接:浅谈Filecoin(一) (Verifiable)M...

  • 浅谈数据库事务

    概览 最近在做数据库相关的中间件,为了更深入的了解数据库相关知识,整理了一下一些资料,尝试讲述一下关于数据库的相关...

  • 浅谈数据库事务

    事务的四大特性(ACID) 原子性 原子性是指事务包含的所有操作要么全部成功,要么全部失败。例小王要向小李转账20...

网友评论

      本文标题:浅谈数据库

      本文链接:https://www.haomeiwen.com/subject/gzyjuktx.html