189 8069 5689

nosql学习笔记,什么是NoSQL

如何学习及选择大数据非关系型数据库NoSQL

是的,NoSQL(非关系型数据库)简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 NoSQL最普遍的解释是“非关系型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS。

成都创新互联是专业的翁源网站建设公司,翁源接单;提供成都网站建设、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行翁源网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

非关系型数据库特点

1.可以处理超大量的数据。

2.运行在便宜的PC服务器集群上。PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本。

3.击碎了性能瓶颈。NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。

4.没有过多的操作。

5.支持者来源于社区。因为NoSQL项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。

一份难得的数据库市场分析报告

目录

- 数据库分类维度:关系型/非关系型、交易型/分析型

- NoSQL数据库的进一步分类

- OLTP市场规模:关系型数据库仍占营收大头

- 数据库市场份额:云服务和新兴厂商主导NoSQL

- 开源数据库 vs. 商业数据库

- 数据库三大阵营:传统厂商和云服务提供商

最近由于时间原因我写东西少了,在公众号上也转载过几篇搞数据库朋友的大作。按说我算是外行,没资格在这个领域品头论足,而当我看到下面这份报告时立即产生了学习的兴趣,同时也想就能看懂的部分写点心得体会分享给大家。

可能本文比较适合普及性阅读,让数据库领域资深的朋友见笑了:)

数据库分类维度:关系型/非关系型、交易型/分析型

首先是分类维度,上图中的纵轴分类为Relational Database(关系型数据库,RDBMS)和Nonrelational Database (非关系型数据库,NoSQL),横轴的分类为Operational(交易型,即OLTP)和Analytical(分析型,即OLAP)。

按照习惯我们先看关系型数据库,左上角的交易型类别中包括大家熟悉的商业数据库Oracle、MS SQL Server、DB2、Infomix,也包括开源领域流行的MySQL(MariaDB是它的一个分支)、PostgreSQL,还有云上面比较常见的SQL Azure和Amazon Aurora等。

比较有意思的是,SAP HANA正好位于交易型和分析型的中间分界处,不要忘了SAP还收购了Sybase,尽管后者今天不够风光了,而早年微软的SQL Server都是来源于Sybase。Sybase的ASE数据库和分析型Sybase IQ还是存在的。

右上角的分析型产品中包括几款知名的列式数据仓库Pivotal Greenplum、Teradata和IBM Netezza(已宣布停止支持),来自互联网巨头的Google Big Query和Amazon RedShift。至于Oracle Exadata一体机,它上面运行的也是Oracle数据库,其最初设计用途是OLAP,而在后来发展中也可以良好兼顾OLTP,算是一个跨界产品吧。

再来看非关系型数据库,左下角的交易型产品中,有几个我看着熟悉的MongoDB、Redis、Amazon DynamoDB和DocumentDB等;右下角的分析型产品包括著名的Hadoop分支Cloudera、Hortonworks(这2家已并购),Bigtable(来自Google,Hadoop中的HBase是它的开源实现)、Elasticsearch等。

显然非关系型数据库的分类要更加复杂,产品在应用中的差异化也比传统关系型数据库更大。Willian Blair很负责任地对它们给出了进一步的分类。

NoSQL数据库的进一步分类

上面这个图表应该说很清晰了。非关系型数据库可以分为Document-based Store(基于文档的存储)、Key-Value Store(键值存储)、Graph-based(图数据库)、Time Series(时序数据库),以及Wide Cloumn-based Store(宽列式存储)。

我们再来看下每个细分类别中的产品:

文档存储 :MongoDB、Amazon DocumentDB、Azure Cosmos DB等

Key-Value存储 :Redis Labs、Oracle Berkeley DB、Amazon DynamoDB、Aerospike等

图数据库 :Neo4j等

时序数据库 :InfluxDB等

WideCloumn :DataStax、Cassandra、Apache HBase和Bigtable等

多模型数据库 :支持上面不只一种类别特性的NoSQL,比如MongoDB、Redis Labs、Amazon DynamoDB和Azure Cosmos DB等。

OLTP市场规模:关系型数据库仍占营收大头

上面这个基于IDC数据的交易型数据库市场份额共有3个分类,其中深蓝色部分的关系型数据库(RDBMS,在这里不统计数据挖掘/分析型数据库)占据80%以上的市场。

Dynamic Database(DDMS,动态数据库管理系统,同样不统计Hadoop)就是我们前面聊的非关系型数据库。这部分市场显得小(但发展势头看好),我觉得与互联网等大公司多采用开源+自研,而不买商业产品有关。

而遵循IDC的统计分类,在上图灰色部分的“非关系型数据库市场”其实另有定义,参见下面这段文字:

数据库市场份额:云服务和新兴厂商主导NoSQL

请注意,这里的关系型数据库统计又包含了分析型产品。Oracle营收份额42%仍居第一,随后排名依次为微软、IBM、SAP和Teradata。

代表非关系型数据库的DDMS分类中(这里同样加入Hadoop等),云服务和新兴厂商成为了主导,微软应该是因为云SQL Server的基础而小幅领先于AWS,这2家一共占据超过50%的市场,接下来的排名是Google、Cloudera和Hortonworks(二者加起来13%)。

上面是IDC传统分类中的“非关系型数据库”,在这里IBM和CA等应该主要是针对大型机的产品,InterSystems有一款在国内医疗HIS系统中应用的Caché数据库(以前也是运行在Power小机上比较多)。我就知道这些,余下的就不瞎写了。

开源数据库 vs. 商业数据库

按照流行度来看,开源数据库从2013年到现在一直呈现增长,已经快要追上商业数据库了。

商业产品在关系型数据库的占比仍然高达60.5%,而上表中从这列往左的分类都是开源占优:

Wide Cloumn:开源占比81.8%;

时序数据库:开源占比80.7%;

文档存储:开源占比80.0%;

Key-Value存储:开源占比72.2%;

图数据库:开源占比68.4%;

搜索引擎:开源占比65.3%

按照开源License的授权模式,上面这个三角形越往下管的越宽松。比如MySQL属于GPL,在互联网行业用户较多;而PostgreSQL属于BSD授权,国内有不少数据库公司的产品就是基于Postgre哦。

数据库三大阵营:传统厂商和云服务提供商

前面在讨论市场份额时,我提到过交易型数据库的4个巨头仍然是Oracle、微软、IBM和SAP,在这里William Blair将他们归为第一阵营。

随着云平台的不断兴起,AWS、Azure和GCP(Google Cloud Platform)组成了另一个阵营,在国外分析师的眼里还没有BAT,就像有的朋友所说,国内互联网巨头更多是自身业务导向的,在本土发展公有云还有些优势,短时间内将技术输出到国外的难度应该还比较大。(当然我并不认为国内缺优秀的DBA和研发人才)

第三个阵容就是规模小一些,但比较专注的数据库玩家。

接下来我再带大家简单过一下这前两个阵容,看看具体的数据库产品都有哪些。

甲骨文的产品,我相对熟悉一些的有Oracle Database、MySQL以及Exadata一体机。

IBM DB2也是一个庞大的家族,除了传统针对小型机、x86(好像用的人不多)、z/OS大型机和for i的版本之外,如今也有了针对云和数据挖掘的产品。记得抱枕大师对Informix的技术比较推崇,可惜这个产品发展似乎不太理想。

微软除了看家的SQL Server之外,在Azure云上还能提供MySQL、PostgreSQL和MariaDB开源数据库。应该说他们是传统软件License+PaaS服务两条腿走路的。

如今人们一提起SAP的数据库就想起HANA,之前从Sybase收购来的ASE(Adaptive Server Enterprise)和IQ似乎没有之前发展好了。

在云服务提供商数据库的3巨头中,微软有SQL Server的先天优势,甚至把它移植到了Linux拥抱开源平台。关系型数据库的创新方面值得一提的是Amazon Aurora和Google Spanner(也有非关系型特性),至于它们具体好在哪里我就不装内行了:)

非关系型数据库则是Amazon全面开花,这与其云计算业务发展早并且占据优势有关。Google当年的三篇经典论文对业界影响深远,Yahoo基于此开源的Hadoop有一段时间几乎是大数据的代名词。HBase和Hive如今已不再是人们讨论的热点,而Bigtable和BigQuery似乎仍然以服务Google自身业务为主,毕竟GCP的规模比AWS要小多了。

最后这张DB-Engines的排行榜,相信许多朋友都不陌生,今年3月已经不是最新的数据,在这里列出只是给大家一个参考。该排行榜几乎在每次更新时,都会有国内数据库专家撰写点评。

以上是我周末的学习笔记,班门弄斧,希望对大家有帮助。

参考资料《Database Software Market:The Long-Awaited Shake-up》

扩展阅读:《 数据库存储:互相最想知道的事 》

尊重知识,转载时请保留全文。感谢您的阅读和支持!

GitHub 上有哪些值得推荐的开源电子书

语言无关类

操作系统

鸟哥的Linux私房菜 (简体)

Linux 系统高级编程

The Linux Command Line (中英文版)

Linux 设备驱动 (第三版)

深入分析Linux内核源码

UNIX TOOLBOX

Docker中文指南

Docker —— 从入门到实践

FreeRADIUS新手入门

Mac 开发配置手册

FreeBSD 使用手册

Linux 命令行(中文版)

智能系统

一步步搭建物联网系统

web服务器

Nginx开发从入门到精通 (淘宝团队出品)

版本控制

Git教程 (本文由  @廖雪峰 创作,如果觉得本教程对您有帮助,可以去  iTunes 购买)

git – 简易指南

猴子都能懂的GIT入门

Git 参考手册

Pro Git

Git Magic

GotGitHub

Git Community Book 中文版

Mercurial 使用教程

HgInit (中文版)

沉浸式学 Git

Git-Cheat-Sheet (感谢 @flyhigher139 翻译了中文版)

GitHub秘籍

NoSQL

NoSQL数据库笔谈 (PDF)

Redis 设计与实现

Redis 命令参考

带有详细注释的 Redis 3.0 代码

带有详细注释的 Redis 2.6 代码

The Little MongoDB Book

The Little Redis Book

Neo4j 简体中文手册 v1.8

Neo4j .rb 中文资源

MySQL

MySQL索引背后的数据结构及算法原理

项目相关

持续集成(第二版) (译言网)

让开发自动化系列专栏

追求代码质量

selenium 中文文档

Joel谈软件

约耳谈软体(Joel on Software)

Web

关于浏览器和网络的 20 项须知

前端知识体系

浏览器开发工具的秘密

Chrome 开发者工具中文手册

Chrome扩展开发文档

Grunt中文文档

移动Web前端知识库

正则表达式30分钟入门教程

前端开发体系建设日记

移动前端开发收藏夹

JSON风格指南

HTTP 接口设计指北

前端资源分享(一)

前端资源分享(二)

前端代码规范 及 最佳实践

w3school教程整理

大数据

大数据/数据挖掘/推荐系统/机器学习相关资源

编程艺术

程序员编程艺术

每个程序员都应该了解的内存知识(译)【第一部分】

取悦的工序:如何理解游戏 (豆瓣阅读,免费书籍)

其他

OpenWrt智能、自动、透明翻墙路由器教程

语言相关类 AWK

awk程序设计语言

C/C++

C++ 并发编程指南 (@傅海平ICT)

Linux C编程一站式学习 (宋劲杉, 北京亚嵌教育研究中心)

CGDB中文手册

100个gdb小技巧

100个gcc小技巧

ZMQ 指南

How to Think Like a Computer Scientist (中英文版)

跟我一起写Makefile(PDF)

GNU make中文手册

GNU make 指南

Google C++ 风格指南

C/C++ Primer (by @andycai)

简单易懂的C魔法

Cmake 实践 (PDF版)

C++ FAQ LITE(中文版)

C++ Primer 5th Answers

CSS/HTML

学习CSS布局

通用 CSS 笔记、建议与指导

CSS参考手册

Emmet 文档

前端代码规范 (腾讯alloyteam团队)

Dart

Dart 语言导览

Fortran

Fortran77和90/95编程入门

Java

实时 Java 系列

Apache Shiro 用户指南

使用 Eclipse 和 Java SE 6 创建独立 Web Services 应用程序

第 1 部分: Web Services 服务端应用程序

第 2 部分: Web 服务客户端应用程序

JavaServer Faces 1.2 入门

第 1 部分: 构建基本应用程序

第 2 部分: JSF 生命周期、转换、检验和阶段监听器

用 Eclipse Europa 进行 Web 开发

第 1 部分: Eclipse Java EE

第 2 部分: PHP 开发工具

第 3 部分: Ruby Development Toolkit 和 RadRails

使用 JavaServer Faces 构建 Apache Geronimo 应用程序

第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序

第 2 部分: 在 JavaServer Faces 中使用 Tomahawk

第 3 部分: 使用 ajax4jsf 添加 Ajax 功能

第 4 部分: 使用 Apache Trinidad 组件扩展 JSF

第 5 部分: 将 JSF 应用程序与 Spring 集成

Apache Geronimo 和 Spring 框架

第 1 部分: 开发方法学

第 2 部分: 构建第一个应用程序

第 3 部分: 集成 DAO 与 ORM

第 4 部分: 混合使用 Spring AOP 和 Spring Web Flow

第 5 部分: Spring MVC

第 6 部分: Spring MVC:使用 Web 视图技术

终极 mashup —— Web 服务和语义 Web

第 1 部分: 使用与组合 Web 服务

第 2 部分: 管理 Mashup 数据缓存

第 3 部分: 理解 RDF 和 RDFs

第 4 部分: 创建本体

第 5 部分: 切换 Web 服务

Jersey 2.x 用户指南

MyBatis中文文档

JavaScript

Google JavaScript 代码风格指南

Airbnb JavaScript 规范

JavaScript 标准参考教程(alpha)

Javascript编程指南 (源码)

javascript 的 12 个怪癖

JavaScript 秘密花园

JavaScript核心概念及实践 (PDF) (此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)

《JavaScript 模式》翻译,此书中文版有售,但是纸质书翻译的还没有这个版本翻译的好

命名函数表达式探秘 (注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)

学用 JavaScript 设计模式 (开源中国)

深入理解JavaScript系列

ECMAScript 6 入门 (作者:阮一峰)

jQuery

jQuery 解构

简单易懂的JQuery魔法

How to write jQuery plugin

Node.js

Node入门

七天学会NodeJS

Nodejs Wiki Book (繁体中文)

express.js 中文文档

koa 中文文档

使用 Express + MongoDB 搭建多人博客

Express框架

nodejs文档

Node.js 包教不包会

Learn You The Node.js For Much Win! (中文版)

Node debug 三法三例

underscore.js

Underscore.js中文文档

backbone.js

backbone.js入门教程 (PDF)

Backbone.js入门教程第二版

Developing Backbone.js Applications(中文版)

AngularJS

AngularJS最佳实践和风格指南

AngularJS中译本

AngularJS入门教程

构建自己的AngularJS

在Windows环境下用Yeoman构建AngularJS项目

zepto 简明中文手册

Sea.js

Hello Sea.js

CoffeeScript

CoffeeScript Cookbook

The Little Book on CoffeeScript中文版

ExtJS

Ext4.1.0 中文文档

Chrome扩展及应用开发

JavaScript入门教程

PHP

PHP调试技术手册(PDF)

XDebug 2中文手册(译) (CHM)

PHP之道

PHP 最佳实践

PHP安全最佳实践

深入理解PHP内核

PHP扩展开发及内核应用

CodeIgniter 用户指南

Laravel4 中文文档

Laravel 入门

Symfony2中文文档 (未译完)

Phalcon中文文档(翻译进行中)

YiiBook几本Yii框架的在线教程

简单易懂的PHP魔法

swoole文档及入门教程

iOS

iOS开发60分钟入门

iOS7人机界面指南

Google Objective-C Style Guide 中文版

iPhone 6 屏幕揭秘

Apple Watch开发初探

马上着手开发 iOS 应用程序

网易斯坦福大学公开课:iOS 7应用开发字幕文件

Android

Android Design(中文版)

Google Android官方培训课程中文版

Android学习之路

Python

小白的Python教程

简明Python教程

零基础学Python

Python 2.7 官方教程中文版

Python 3.3 官方教程中文版

深入 Python 3

PEP8 Python代码风格规范

Google Python 风格指南 中文版

Python入门教程 (PDF)

Python的神奇方法指南

笨办法学 Python (PDF版下载)

Django 文档中文版

Django 最佳实践

The Django Book 中文版

web.py 0.3 新手指南

Web.py Cookbook 简体中文版

Dive Into Python 中文版

Bottle 文档中文版 (需翻墙)

Flask 文档中文版

Jinja2 文档中文版

Werkzeug 文档中文版

Flask之旅

Introduction to Tornado 中文翻译

Python自然语言处理中文版 (感谢陈涛同学的翻译,也谢谢  @shwley 联系了作者)

Python 绘图库 matplotlib 官方指南中文翻译

Scrapy 0.25 文档

ThinkPython

Ruby

Ruby 风格指南

Rails 风格指南

笨方法学 Ruby

Ruby on Rails 指南

Ruby on Rails 实战圣经

Ruby on Rails Tutorial 原书第 2 版 (本书网页版免费提供,电子版以 PDF、EPub 和 Mobi 格式提供购买,仅售 9.9 美元)

编写Ruby的C拓展

Ruby 源码解读

Shell

Shell脚本编程30分钟入门

Go

Go编程基础

Go入门指南

学习Go语言 (PDF)

Go Web 编程 (此书已经出版,希望开发者们去购买,支持作者的创作)

Go实战开发 (当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)

Network programming with Go 中文翻译版本

Groovy

实战 Groovy 系列

LaTeX

一份其实很短的 LaTeX 入门文档

一份不太简短的 LATEX 2ε 介绍 (PDF版)

LISP

ANSI Common Lisp 中文翻译版

Lua

Lua编程入门

Haskell

Real World Haskell 中文版

R

R语言忍者秘笈

Scala

Scala课堂 (Twitter的Scala中文教程)

Effective Scala(Twitter的Scala最佳实践的中文翻译)

Scala指南

Swift

The Swift Programming Language 中文版

Perl

Modern Perl 中文版

Perl 程序员应该知道的事

Prolog

笨办法学Prolog

Vim中文文档

Vimscript

笨方法学Vimscript 中译本

Vim中文文档

读书笔记及其它 读书笔记

编译原理(紫龙书)中文第2版习题答案

把《编程珠玑》读薄

Effective C++读书笔记

Golang 学习笔记、Python 学习笔记、C 学习笔记 (PDF)

Jsoup 学习笔记

学习笔记: Vim、Python、memcached

图灵开放书翻译计划–C++、Python、Java等

蒂姆·奥莱利随笔 (由译言网翻译,电子版免费)

Octave 入门 (PDF版)

SICP 解题集

精彩博客集合

正则表达式简明参考


本文标题:nosql学习笔记,什么是NoSQL
网站地址:http://cdxtjz.cn/article/dseoocg.html

其他资讯