NoSQL数据库的介绍、NoSQL的产品、NoSQL数据库的分类等;

2023-10-26

1.1 什么是NoSQL?

NoSQL,指的是非关系型的数据库。
NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系 型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

1.2 为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人 信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进 行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发 的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库 则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种 类带来的挑战,尤其是大数据应用难题。

1.3 RDBMS(传统关系型数据库) vs NoSQL:特点对比

RDBMS
- 高度组织化结构化数据 
- 结构化查询语言(SQL) 
- 数据和关系都存储在单独的表中。 
- 数据操纵语言,数据定义语言 
- 严格的一致性 
- 基础事务

NoSQL
- 代表着不仅仅是SQL 
- 没有声明性查询语言 
- 没有预定义的模式 
- 键 - 值对存储,列存储,文档存储,图形数据库 
- 最终一致性,而非ACID属性 
- 非结构化和不可预知的数据 
- CAP定理 - 高性能,高可用性和可伸缩性

1.4 NoSQL 简史

NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。 2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的 Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模 式。2009年在亚特兰大举行的"no:sql(east)“讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false;”。因此,对NoSQL最普遍的解释是"非关联型的",强调Key- Value Stores和文档数据库的优点,而不是单纯的反对RDBMS

1.5 NoSQL 产品

常见的NoSQL产品:redis、memcache、mongdb等
NoSQL产品的显著特点:
 1、NoSQL产品一般不使用严格的表关系;
 2、NoSQL产品的数据查询一般不用在sql上;

在这里插入图片描述

http://nosql-database.org/—NoSQL数据库的详解
通过此页面可以更好的了解各种NoSQL
在这里插入图片描述

1.6 NoSQL 数据库分类

1、键值数据库 
相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached 
应用:内容缓存 优点:扩展性好、灵活性好、大量写操作时性能高 
缺点:无法存储结构化信息、条件查询效率较低 
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和 Memcached)

2、列族数据库 
相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS 
应用:分布式数据存储与管理 
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低 
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、 Facebook(HBase)

3、文档数据库 
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit 
应用:存储、索引并管理面向文档的数据或者类似的半结构化数据 
优点:性能好、灵活性高、复杂性低、数据结构灵活 
缺点:缺乏统一的查询语言 
使用者:百度云数据库(MongoDB)、SAP(MongoDB)

4、图形数据库 
相关产品:Neo4J、OrientDB、InfoGrid、GraphDB 
应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱 
缺点:复杂性高、只能支持一定的数据规模 
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

NOSQL数据库分类的部分代表和特点

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

1.7 目前谁在使用NoSQL

现在已经有很多公司使用了 NoSQL:
 • Google 
 • Facebook 
 • Mozilla 
 • Adobe 
 • Foursquare 
 • LinkedIn 
 • Digg 
 • McGraw-Hill Education 
 • Vermont Public Radio

1.8 NoSQL 在国内使用的案例

1、新浪微博
目前新浪微博是 Redis 全球最大的用户。 在新浪有 200 多台物理机在运行着 Redis, 有大量的数据跑 在 Redis 上来为微博用户提供服务。 新浪 NoSQL 和 MySQL 在大多数情况下是结合使用的, 根据应用的特点选择合适的存储方式。 关系型数 据, 如索引使用 MySQL 存储。 非关系数据库, 例如: 一些 K/V 需求的,对并发要求比较高的放入 Redis 存储。

2、淘宝数据平台
淘宝网拥有国内最具商业价值的海量数据。 截至当前, 每天产生超过 30 亿的店铺及商品浏览记录, 10 亿在线商品数, 上千万的成交、 收藏和评价数据。 如何从这些数据中挖掘出真正的商业价值, 进而帮助淘 宝和商家进行企业的数据化运营, 帮助消费者进行理性的购物决策, 是淘宝数据平台与产品部的使命。 淘宝 Tair 是由淘宝自主开发的 Key/Valiie 结构数据存储系统, 并且于 2010 年 6 月 30号在淘宝 开源平台上正式对外幵源, 在淘宝网有着大规模的应用。

3、视觉中国网站
在“ 视觉中国” 成立之初, 他们选用的数据库是 MySQLo 2009 年之后他们才选用了MongoDB 作为系统 的支撑数据库

4、优酷运营数据分析
目前优酷的在线评论业务已部分迁移到 MongoDBo 运营数据分析及挖掘处理目前在使用 Hadoop/HBase。 在 Key-Value 产品方面, 它也在寻找更优的 Memcached 替代品, 如Redis。 相对于 Memcached, 除 了 对 Value 的存储支持三种不同的数据结构外, 同一个 Key 的 Value 进行部分更新也会更适合一些对 Value 频繁修改的在线业务。 同时在搜索产品中应用了 Tokyo Tyrant。

5、飞信空间
HandlerSocket 是日本 DeNA 公司的架构师 Yoshinori 开发的一个 NoSQL 产品, 以MySQL 插件的 形式运行。解决了高并发写入,弱一致性,HandlerSocket 还帮飞信解决了缓存的问题。

6、豆瓣社区
BeansDB 是一个由国内知名网站豆瓣网自主开发的主要针对大数据量和高可用性的分布式 Key/Value 存储 系统, 采用 HashTree 和简化的版本号来快速同步保证最终一致性。相当于一个简化版的 Dynamo,它在伸 缩性和高可用性方面有非常好的表现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NoSQL数据库的介绍、NoSQL的产品、NoSQL数据库的分类等; 的相关文章

  • 在 Python 中,如果我有 unix 时间戳,如何将其插入 MySQL 日期时间字段?

    我正在使用 Python MySQLDB 我想将其插入 Mysql 中的 DATETIME 字段 我该如何使用cursor execute 来做到这一点 要将 UNIX 时间戳转换为 Python 日期时间对象 请使用datetime fr
  • where 子句中的双 %% ?

    我有一个 where 子句 如下例所示 WHERE subject LIKE chef AND dep LIKE psy 使用 1 或 2 符号有什么区别 我知道其中一个的含义 通配符 但不知道第二个添加的功能是什么 该查询可能是一个拼写错
  • 重命名猫鼬中的字段[重复]

    这个问题在这里已经有答案了 我有两个 JSON 对象 每个对象都有一个名字字段 我想将名字重命名为名称 还想使用猫鼬将现有的名字值导入到名称 Schema const mongoose require mongoose const Sche
  • MongoDB中批量FindAndModify的解决方案

    我的用例如下 我在 mongoDB 中有一组文档 我必须发送这些文档进行分析 文件格式如下 id ObjectId 517e769164702dacea7c40d8 日期 1359911127494 状态 可用 其他字段 我有一个阅读器进程
  • 我应该检查代码中的数据库约束还是应该捕获数据库抛出的异常

    我有一个将数据保存到名为 作业 的表中的应用程序 Jobs 表有一个名为 Name 的列 该列具有 UNIQUE 约束 名称列不是主键 我想知道在尝试保存 更新新条目之前是否应该自己检查重复条目 或者最好等待数据访问层抛出异常 如果这个应用
  • Cassandra - 使用 ORDER BY 和 UPDATE 集群键的替代方法

    我的架构是 CREATE TABLE friends userId timeuuid friendId timeuuid status varchar ts timeuuid PRIMARY KEY userId friendId CREA
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • 导轨中的多个 DB 连接

    我正在尝试在 ROR 应用程序中连接多个数据库 我的 database yml 如下所示 在你的database yml文件中 发展 adapter mysql username root password database example
  • 使用 mongoose 更新 mongoDb 中数组内的对象[重复]

    这个问题在这里已经有答案了 我正在 MongoDB 上工作 以更新 MongoDB 集合中数组内部的对象值 我的收藏就像 id ObjectId 59b7e839200a5c00ee2d2851 player New playesList
  • 在没有数据库的情况下运行 WordPress

    我一直在寻找一种将 WordPress 配置为仅使用文件系统数据库运行的方法 有点像 Java 中或内存中的 H2 任何人 仅用于演示目的 不可能 Wordpress 的要求之一是 MySQL http wordpress org abou
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • JPA 乐观锁与同步 Java 方法

    使用 JPA 乐观锁定 我们可以通过 Version 字段控制数据库表是否已被另一个事务同时更新 从而允许在数据库中存储可靠的数据 如果一个Java应用程序只有一个CRUD服务负责数据库中的特定实体 我们也可以同步其方法并管理信息在数据库中
  • jsp/servlet 从数组填充下拉框

    大家好 我正在尝试创建一个表单 允许您为某个主题创建一个实验室 它有一个下拉框 您可以在其中选择与该用户相关的主题 但是 当我去加载页面时 我收到此错误g apache jasper JasperException java lang Nu
  • drupal 7 将实际内容存储在数据库中的哪里?

    我打开了 drupal 7 的数据库并在表中查找node node revisions and node types并且找不到 drupal 存储实际的位置body节点 内容 的 有人有线索吗 哦 我刚刚找到了 在 D7 中 他们实现了字段
  • Postgres 上的 C 语言环境和 Posix 语言环境有什么区别?

    我知道 Postgres 上的数据库区域设置负责国家字符的正确顺序 正确的小写 大写等 但为什么有两种语言中立的语言环境 posix and c 它们之间有什么区别 还是只是一个中立的语言环境有两个不同的名称 UPDATE正如 Magnus
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1

随机推荐

  • pnpm install 安装依赖失败

    在使用 pnpm install pnpm i 遇到了一个报错 在使用 EPERM operation not permitted unlink E pnpm store v3 files 9e 经过咨询和查询 得到解决方案是 键盘 win
  • python-pptx处理替换文本

    python中使用python ppt库操作ppt来替换文本内容 包括图片在前方的 from pptx import Presentation from pptx enum shapes import MSO SHAPE TYPE def
  • Whitted光线追踪

    更详细的内容可以看知乎的这篇文章 这里简要的说了一下几何光学的规则 这里引出了光线追踪 正向 从光源开始 和反向 从眼睛开始 在介绍光线追踪前 先来看一些比较简单的 W h i t t e d
  • 面试题.17.07.婴儿名字--并查集

    LeetCode 面试题 17 07 婴儿名字 每年 政府都会公布一万个最常见的婴儿名字和它们出现的频率 也就是同名婴儿的数量 有些名字有多种拼法 例如 John 和 Jon 本质上是相同的名字 但被当成了两个名字公布出来 给定两个列表 一
  • 二、MySQL底层存储原理与结构

    1 前言 本章目标 了解构成MySQL数据库和InnoDB存储引擎的各种类型的文件 理解InnoDB存储引擎的内存结构和磁盘结构 2 文件 MySQL数据库和InnoDB存储引擎的文件有参数文件 日志文件 socket文件 pid文件 表结
  • js逆向技巧(三)

    js伪造原理 js逆向的原理的就是在本地 脱离浏览器的情况下 有着js引擎里面运行 js代码 因为浏览器是 js引擎 BOM DOM这里面有着一些内置方法 所以要想在本地 只有js引擎的情况下运行js代码 对于简单的网站 你可能只扣取 js
  • python从入门到放弃(一)

    python解释器的环境搭建 上一篇简单介绍了一下pythonpython该如何使用呢 专业点说我们需要下载一个python解释器 简单点说就是下个python 首先呢 找到python官网点这儿 进去以后点下载 电脑已经装过3 7 所以这
  • 少儿编程入门应该从机器人Scratch编程开始

    人工智能时代到来 家长们渐渐感知编程对孩子们学习的重要性 那么到底让孩子学习那种编程语言呢 下面就和南京小码王少儿编程培训机构一起来看看吧 很多家长都在为孩子们规划编程学习 在种类繁多的编程语言面前 大人和孩子都犯了难 应该从何起步 学Py
  • Linux上 Mongodb6.0及以上的版本没有mongo命令解决方案

    首先 自行下载 Linux版本mongodb的tgz 当启动服务时 mongod f mongodb conf mongod config mongodb conf 进入数据库 mongocd 6 0之前的版本才有这个命令 如果在这里使用
  • C++OpenCV(1):安装与配置

    文章首发于我的个人博客 欢迎大佬们来逛逛 OpenCV项目地址及源代码 点击这里 文章目录 下载与配置项目环境 最简单的opencv项目 下载与配置项目环境 点击下方连接进入官网下载 Releases 选择合适的版本 直接下载即可 下载完成
  • Kubernetes 网络排错“狂飙”级指南,运维请收好

    本文将引入一个思路 在 Kubernetes 集群发生网络异常时如何排查 文章将引入 Kubernetes 集群中网络排查的思路 包含网络异常模型 常用工具 并且提出一些案例以供学习 1 Pod 网络异常 网络异常大概分为如下几类 网络不可
  • C、C++中出现nan、inf原因

    在数据处理输入输出时 极有可能遇到数据读入空值 极大 极小 运算中分母为0或0 0 对0取对数等操作 这将产生nan或inf的产生 这篇博文旨在分析C C 产生nan和inf的操作及判断是否有nan或inf产生 NAN的产生原因 nan n
  • zigbee入网过程分析(mac层分析),附Ubiqua抓包

    普通开关 插座 门锁设备入网流程一般到basic就结束了 灯到identity结束 低功耗传感器设备一般到IAS zone结束 设备入网流程如下 1 beacon request 由endpoint发出 请求入网 设备一般会全信道扫描找网
  • binlog数据恢复

    不管你什么架构 一切都是为数据服务的 数据是一个企业最核心的价值 不过出现问题的话 数据一旦被删除 每过一秒 都将对企业造成巨大的损失 最近 还真的发生了一起删库跑路事件 微盟7 24小时紧急恢复数据 商家赔付1 5亿 一 binlog2s
  • View那些事儿(2) -- 理解MeasureSpec

    View的绘制的三大流程的第一步就是Measure 测量 想要理解View的测量过程 必须要先理解MeasureSpec 从字面上看 MeasureSpec就是 测量规格 的意思 其实它在一定程度上决定了View的测量过程 具体来讲它包含了
  • C++_数据存储_药名整理(代码+注释)

    题目描述 输入输出格式 样例 输入样例 4 AspiRin cisapride 2 PENICILLIN Cefradine 6 输出样例 Aspirin Cisapride 2 penicillin Cefradine 6 代码 注释 a
  • 西门子PLC S7-200系列有哪些基本硬件及优点?

    西门子SIMATIC系列PLC 诞生于1958年 经历了C3 S3 S5 S7系列 已成为应用非常广泛的可编程控制器 西门子S7 200系列PLC的基本硬件组成 SIMATIC S7 200的应用领域从更换继电器和接触器一直扩展到在单机 网
  • 【MySQL】复合查询

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 基本查询 1 查询工资高于500或岗位为MANAGER
  • 智明星通 CEO 唐彬森:创业过程中的几笔学费

    编者按 本文来自创新工场 微信号 chuangxin2009 创业公开课 本期课程是由从海外市场起家的唐彬森老师分享 创业过程中的几笔学费 在移动互联网时代背景下 产品为王 只有真正了解用户 才能发现背后的规律 而互联网的基本规律是幂定律
  • NoSQL数据库的介绍、NoSQL的产品、NoSQL数据库的分类等;

    目录 1 1 什么是NoSQL 1 2 为什么使用NoSQL 1 3 RDBMS 传统关系型数据库 vs NoSQL 特点对比 1 4 NoSQL 简史 1 5 NoSQL 产品 1 6 NoSQL 数据库分类 1 7 目前谁在使用NoSQ