# NoSQL

# 1. NoSQL简介

NOSQL 不是“No SQL!”而是“Not Only SQL”,它不是用来替代关系型数据库的。而是在某些用关系型数据库不合适的地方做优化的。系统中的常规数据仍然用关系型数据库是最合适的。

NoSQL常用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。

现在 SQLServer、MySQL、Oracle 等数据库中也加入这些 NoSQL 的特性了,但是还是建 议“专业的人干专业的事情”。

# 2. NoSQL优缺点

优点:

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构的灵活性,半结构化数据
  • 没有复杂的关系

缺点:

  • 没有标准化
  • 有限的查询功能(到目前为止)
  • 最终一致是不直观的程序

# 3. NoSQL 数据库分类

类型 部分代表 特点
列存储 Hbase
Cassandra
Hypertable
按列存储数据。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储 MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value MemcacheDB
Redis
Berkeley DB
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储 Neo4J
FlockDB
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储 db4o
Versant
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库 Berkeley DB X
ML
BaseX
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

常用的 NoSQL 数据库有 Memcached、Redis、MongoDB 等。

# 4. 网络安全

NoSQL撞库风险较高,生产环境中建议设置复杂度较高的密码。

出于安全考虑NoSQL数据库、关系数据库等都不要暴露到公网,而是放到 web 服务器所在的内网服务器上。生产环境数据库服务器一般部署到 Linux 下比较高效。在生产环境最好都配置只允许局域网里某个 ip 才能访问,避免数据库被攻击。

更新时间: 8/18/2020, 5:58:42 AM