一条用户注册数据先到后端服务器,最后存到数据库中。 数据的持久化过程:1校验数据的合法性,2修改内存,3写入存储介质。 问题: Q1:数据库怎么保证数据不丢 Q2:数据库怎么处理多人同时修改的问题? Q3:为什么用数据库,处理数据可还能存在被动存储结构? Q4:数据库只能存储结构化数据嘛? Q5:有哪些操作数据库的方式,要用什么编程语言? 数据写入读取路径上的特点: 尽量少的使用拷贝;有硬件的使用层。 raid0+1:容错能力好,写入带宽好。 SQL=一种DSL=方便人类阅读的关系代数表达形式 关系型数据库存储系统,但是在存储之外,又发展出其他能力。它对结构化数据友好;支持事物;支持复杂查询语言。用表形式管理。 非关系型数据库也是存储系统,但是一般不要求严格的结构化:半结构化数据友好 数据库vs数据存储: 若用普通的存储系统,需自行定义好和管理结构。 数据库支持事务的优越性。ACID 复杂查询能力:使用SQL 灵活、简洁 以sql为例,要操作数据时,支持以下操作: insert\update\select\delect..
主流产品剖析:
1单机存储:
比如:本地文件系统和kv存储
linus文件系统的两大数据结构:index node和directory entry;前者记录文件元数据,如id、大小、权限、磁盘位置等,是一个文件的唯一标识。后者记录文件名和inode指针、层级关系等,与inode的关系式n:1.
kv系统的常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写性能。
2分布式存储:在单机存储基础上实现了分布式协议,设计了大量的网络交互。
HDFS:支持海量数据存储,高容错率,若POSIX语义,使用普通x86服务器,性价比高。
Ceph:开源扥不是存储系统里的万金油。
3单机关系式数据库
开源产品:MySQL&PostgreSQL
page files;redo log files(记录所做的操作);others
4单机非关系型数据库:MongoDB\Redis\Elasticsearch三足鼎立。数据结构千奇百怪。
Elasticsearch自身就做到了模糊搜索,这是关系式数据库无插件情况下无法做到的
5从单机数据库到分布式数据库
原因:容量问题:单点容量有限,受硬件限制。把存储节点造成存储池,动态扩缩容,这种技术叫池化。
弹性问题:池化可解决扩缩容过程的问题
性价比问题:不用担心存储不足,cpu不足则增加核。