最近在看数据库相关的东西,正好看到 Redis 挺有意思。记录一下。
1、SQL and NoSQL
目前使用我接触最多的是关系型数据库,一般使用 SQL 来指代。NoSQL = not only sql,指非关系型数据库。
常见的关系型数据库有:MySQL、Oracle、SQL server、PostgreSQL 等。
常见的非关系型数据库有:Redis、MongoDB、HBase 等。
关系型数据库都使用二维表格模型来表示,但是非关系型数据库则有很多不同:
NoSQL 数据库分类:
- KV 键值对
临时性键值存储:Memcached,Redis
永久性键值存储:ROMA,Redis
应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等
数据模型:Key 指向 Value 的键值对,通常用 HashTable 来实现
- 优点:查找速度快
- 缺点:数据无结构化,通常只被当做字符串或者是二进制数据
- 面向文档的数据库:MongoDB,CouchDB
Mongodb 是一个基于分布式文件存储的数据库,由 c++ 语言编写。 为 web 应用提供可扩展的高性能数据存储解决方案,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据中功能最丰富,最像关系数据库的
应用场景:WEB 应用(与 key-value 类似,value 是结构化的,不同的是数据库能够了解到 value 的内容)
数据模型:Key-Value 对应的键值对,Value 是结构化的数据
- 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
- 缺点:查询性能不高,而且缺乏统一的查询语法
- 面向列的数据库:Cassandra,HBase
应用场景:分布式的文件系统
数据模型:以列簇式存储,将一列数据存储在一起
- 优点:查找速度快,可扩展性强,更容易进行分布式扩展
- 缺点:功能相对局限
- 面向图形的数据库:Neo4J,InfoGrid
应用场景:社交网络,推荐系统等,专注于构建关系图谱
数据模型:图结构
- 优点:利用图结构相关算法。比如最短路径寻址,N 度关系查找等等。
- 缺点:很多时候要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。
2、Redis 简介
Redis 是一个开源的、基于内存的数据结构存储,可用作数据库、缓存或者消息中间件。
它支持:strings、hashes、lists、sets、sorted sets with range queries、bitmaps、hyperloglogs、geospatial indexes with radius queries and streams 等数据结构。
Gitalking ...