美文网首页
Nosql的入门介绍

Nosql的入门介绍

作者: 纸中圆 | 来源:发表于2019-04-09 13:59 被阅读0次

什么是Nosql?

  NoSQL是对不同于传统的关系数据库数据库管理系统的统称。

特点

  • NoSQL(Not Only SQL),意为“不仅仅是SQL”,泛指非关系型数据库;
  • Nosql不依赖业务逻辑方式存储,而以简单的key-value(键-值)模式存储,因此大大的增加了数据库的扩展能力;
  • 不遵循SQL标准;
  • 不支持ACID;
  • 远超于SQL的性能。

适用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展性的

不适用场景

  • 需要事务支持(如银行存钱)
  • 基于sql的结构化查询存储,处理复杂的关系,需要即席查询

Nosql的种类

  Nosql数据库的种类按类别分为四大类:键值(key-value)型存储数据库、列存储数据库、文档型数据库、图形(Graph)数据库。在此基础上又可细分。
  我们可以在这个网站查看不同种类的数据库使用情况排名:数据库使用排名

Memcached(键值型存储数据库)

  • 所用语言:C
  • 很早出现的Nosql数据库
  • 数据都在内存中,一般不能持久化
  • 支持简单的key-value模式
  • 一般是作为缓存数据库辅助持久化的数据库

Redis(键值型存储数据库)

  • 所用语言:C
  • 几乎覆盖了Memcached的绝大部分功能
  • 数据都在内存中,支持持久化,主要用作备份恢复
  • 主从(Master/slave)复制,哨兵监控,集群
  • 除了支持简单的key-value模式,还支持多种数据结构的存储,如list、set、hash、zset等等
  • 一般是作为缓存数据库辅助持久化的数据库

应用场景:手机验证码、排行榜、网站访客访问频率限制、各种计数器、缓存

mongoDB(文档型数据库)

  • 所用语言:C++

  • 特点:保留了SQL一些友好的特性(查询,索引)。

  • 主从(Master/slave)复制(支持自动错误恢复,使用 sets 复制)

  • 内建分片机制

  • 支持 javascript表达式查询

  • 在数据存储时采用内存到文件映射

  • 对性能的关注超过对功能的要求

  • 采用 GridFS存储大数据或元数据(不是真正的文件系统)

  • 高性能、开源、模式自由

  最佳应用场景:适用于需要动态查询支持;需要使用索引而不是 map/reduce功能;需要对大数据库有性能要求;需要使用 CouchDB但因为数据改变太频繁而占满内存的应用程序。

例如:你本打算采用 MySQL或 PostgreSQL,但因为它们本身自带的预定义栏让你望而却步。

Neo4j(图形数据库)

  • 所用语言: Java
  • 特点:基于关系的图形数据库
  • 可独立使用或嵌入到 Java应用程序
  • 图形的节点和边都可以带有元数据
  • 很好的自带web管理功能
  • 使用多种算法支持路径搜索
  • 使用键值和关系进行索引
  • 为读操作进行优化
  • 支持事务(用 Java api)
  • 使用 Gremlin图形遍历语言

最佳应用场景:适用于图形一类数据。这是 Neo4j与其他nosql数据库的最显著区别

例如:社会关系,公共交通网络,地图及网络拓谱

Hbase(列存储数据库)

  • 所用语言: Java
  • 特点:支持数十亿行X上百万列
  • 在 BigTable之后建模
  • 采用分布式架构 Map/reduce
  • 对实时查询进行优化
  • 高性能 Thrift网关
  • 通过在server端扫描及过滤实现对查询操作预判
  • 支持 XML, Protobuf, 和binary的HTTP
  • Cascading, hive, and pig source and sink modules
  • 基于 Jruby( JIRB)的shell
  • 对配置改变和较小的升级都会重新回滚
  • 不会出现单点故障
  • 堪比MySQL的随机访问性能

最佳应用场景:适用于偏好BigTable并且需要对大数据进行随机、实时访问的场合。

例如: Facebook消息数据库

相关文章

网友评论

      本文标题:Nosql的入门介绍

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