美文网首页
《全栈工程师修炼指南》学习笔记 21

《全栈工程师修炼指南》学习笔记 21

作者: VioletJack | 来源:发表于2023-02-25 06:54 被阅读0次

    数据持久层

    关系数据库

    关系数据库是以关系模型为基数而建立的数据库,它最终可以通过二维表格的结构来表达。关系数据库有明确的 schema 关系以及对于事务的支持。保证了强一致性。

    数据库范式

    设计数据库,是有套路可循的。这些套路就叫做范式。

    • 第一范式(1NF):要求每个属性值都是不可再分的。
    • 第二范式(2NF):要求去除局部依赖。即表中的属性完全依赖于主键。
    • 第三范式(3NF):要求去除非主属性的传递依赖。即主属性必须直接依赖于主键,而不能传递依赖于主键。

    一般按照这三个范式来设计就够了,再细分就有点过渡解耦了。这对于程序员的理解、数据模型的建立、联表操作的 IO 性能,都是不利的。

    NoSQL

    关系型数据库对一些量大且非结构化的数据,缺乏特别好的解决方法。更多的时候只能在传统关系数据库的基础上,使用数据库的 Sharding 和 Partition 这样的操作。

    Web 2.0 时代的到来,产生了海量、不定结构、弱关联关系、高可用性和低一致性的数据特点,让关系数据库力不从心。而 NoSQL 则具有更好的横向扩展性、海量数据支持、已维护和廉价等优势。

    关系书库云服务的崛起将传统的数据库管理工作自动化了。

    针对上文所提到的数据问题,有两个层次的解决方案:

    • 出现更适合业务的非关系数据库,如 NoSQL。
    • 把关系数据库搬到云上,从而让企业从数据库管理工作中解脱出来。如 RDS。

    NoSQL 数据库分类

    • 键值数据库 Redis
    • 列式数据库 Redshift
    • 文档数据库 MongoDB
    • 对象数据库 S3

    对于数据来说,磁盘的读写本身,往往不是最慢的。最慢的是寻址操作。

    数据库的演进趋势

    从纵向提升单台设备的性能到横向提升设备的数量

    NoSQL 技术往往具备很强的横向扩展能力。

    趋势出现的原因:单台设备性能的提升是非常有限、且极其昂贵的。所以横向扩展更多设备成了更好的选择。

    从结构化数据到非结构化数据

    在关系数据库中,每一行数据都有严格的表结构定义,我们把这类数据叫做结构化数据。而这个确定的结构就是 schema。结构化的数据具备最佳的查询、检验和关联能力。
    而在 NoSQL 数据库中,虽然数据也被分成了一列一列,但是列的数量、类似等是不固定的。我们可以把它们叫做半结构化的数据。
    而在 S3 这类数据库中,数据就已经是非结构化数据了。

    趋势出现的原因:虽然结构化数据容易使用简单直白的代码逻辑去处理,但是我们现实中遇到的绝大多数数据都是非结构化的。

    相关文章

      网友评论

          本文标题:《全栈工程师修炼指南》学习笔记 21

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