1.DB,DBS,DBMS的区别是什么?
1.1 DB 就是数据库,数据库是存储数据的集合,可理解为多个数据表
1.2 DBS 数据库系统,包括数据库,数据库管理系统和数据库管理人员DBA
1/3 DBMS 数据库管理系统,可对多个数据库进行管理 ,DBMS = 多个数据库(DB) + 管理程序,如Oracle,MySQL等。
2.数据库类型(模式)--关系型数据库SQL和非关系型数据库NOSQL
2.1 关系型数据库是DBMS的主流,使用最多的DBMS主要是Oracle,MySQL和SQL Server。
2.2 非关系型数据库包括键值型数据库,文档型数据库,搜索引擎和列存储,以及图形数据库
2.2.1 键值型数据库-通过Key-Values键值的方式来存储数据,其中Key和Values可以是简单的对象,也可以是复杂的对象。Key作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,同时缺点也很明显,它无法像关系型数据库一样自由使用条件过滤,如果你不知道去哪里找数据,就需要遍历所有的键,这就会消耗大量的计算键值型数据库最典型的应用场景就是作为内容缓存,如Redis。
2.2.2 文档型数据库-用来管理文档,数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录,如MongoDB。
2.2.3 搜索引擎-常见的全文搜索引擎有Elasticsearch,Splunk和Solr。虽然关系型数据库采用了索引提升了检索效率,但是针对全文索引效率却比较低;搜索引擎的优势在于采用了全文搜索的技术,核心原理在于“倒排索引”。
2.2.4 列式数据库-相对于行式存储的数据库,Oracle/MySQL/SQL Server等数据库都是采用的行式存储(Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适用于分布式文件系统,不足在于功能有限。
列式数据库将数据按照列进行存储,因为每列的数据格式是相同的,在存储过程时,可以使用有效的压缩算法进行压缩存储,在读取时,可以只读取需要的列到内存中,但如果是行式数据库,就需要将整行数据读入内存中,所以说列式数据库按照列式存储数据会大量降低系统的IO。
2.2.5 图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
3.SQL与NoSQL
3.1 NoSQL的分类很多,刚才提到的键值型、文档型、搜索引擎、列式存储和图形数据库等都属于 NoSQL