数据库 | 青训营笔记

101 阅读2分钟

数据库

数据库种类

分为关系型数据库和非关系型数据库

关系型数据库

常见的关系型数据库

MySQL,Oracle,PostgreSQL,SQLite

关系型数据库特点

1.行列式表存储
2.结构化数据
3.支持事务
4.支持复杂查询
5.扩展困难

关系型数据库使用

SQL操作
创建数据库:create database databasename
创建用户:create user username
创建表:create table tablename
更改表:alter table
插入:insert into tablename value()
更改:update tablename set ... where
查询:select * from tablename
删除:delete from tablename(不删除表结构)
删除表:drop tablename
筛选条件:where
分组:groupby
按序:olderby

非关系型数据库

常见的非关系型数据库

HBase,Redis,MongoDB,InfluxDB

非关系型数据库特点

1.表结构灵活,列存储,键值存储,文档存储,图形存储
2.支持非结构数据
3.可能支持事务
4.可能支持复杂查询
5.支持高并发,大数据量
6.扩展性好

数据

数据的产生

比如用户注册数据
graph LR
用户 --> 服务器--> 数据库

数据的持久化

数据的持久化就是将得到的数据保存到永久可保存的存储设备中
graph LR 
检验数据合法性 --> 写入内存 --> 写入存储介质

什么是存储系统

定义:一个提供了读写,控制类接口,能够有效的把数据持久化的软件
特点:作为后端软件的底座,性能敏感。
      存储系统软件架构,容易受硬件影响,
      存储系统代码,既简单又复杂。
缓存:很重要贯穿整个存储体系

事务ACID

特点:
    A(tomicity):事务操作要么全做,要么不做
    C(onsistency):事务执行前后,数据状态是一致的
    I(solation):可以隔离多个并发事务,避免影响
    D(urability):事务一旦提交成功,数据保持持久性

主流存储产品

单机存储

Linux经典哲学:一切皆文件

  • 文件系统的管理单元:文件
    
  • 文件系统接口:文件系统繁多,Ext2/3/4,sysfs,rootfs等,都遵循着FVS的统一抽象接口。
    
  • Linux文件系统的两大数据结构:index Node和Directory Entry
    
  • index node:记录文件数据,inode是文件的唯一标识
    
  • directory entry:记录文件名,inode指针,层级关系
    
  • dentry是内存结构,与inode的关系是N:1
    

世间一切皆可key-value

常见的使用方式:put(k,v)&get(k)
常见的数据结构:LSM-Tree,某种程度上牺牲读性能,最求写入性能。

分布式存储系统

在单机的基础上实现了分布协议,设计大量网络交互

HDFS

特点:
1.     支持海量数据存储
2.     高容错性
3.     弱POSIX语义
4.     使用普通x86服务器,性价比高

Ceph

特点:
1.     一套系统支持对象接口,块接口,文件接口,一切皆对象
2.     数据采用主备复制模型
3.     数据分布采用CRUSH算法