NoSQL 与大数据

文|半吊子全栈工匠

概览一下大数据项目中可以使用的数据存储技术,聚焦于Couchbase 和 ElasticSearch,展示如何使用以及它们的区别,先理解一下NoSQL领域中各种不同的技术。

NoSQL

关系型数据库是过去的选择,几乎是许多开发者和DBA对于传统三层架构应用的唯一选择。使用这一场景有很多原因,数据建模方法,查询语言与数据交互,保证数据的一致性部署,并能够为复杂的应用服务。
然而,这不是解决所有数据存储问题的唯一方案,也是NoSQL 产生的原因。NoSQL 提供了新的方法而不是采用面向标准SQL的范式。
NoSQL 技术与高伸缩性无缝融合,很多技术同时具备了高分布性和高性能。大多数时间里,它们使 现有RDBMS 技术所实现的架构更加完整,例如 作为缓存服务器,搜索引擎,非结构化存储,易变信息存储等。主要分为4类:

Key/value

列存储

面向文档的存储

图存储

现在深入到各种技术,选择最适用于使用场景的技术。

Key/Value

第一个也是最早的 NoSQL 数据存储就是key/value. 这些数据就像字典一样根据key来匹配value,通常使用在需要高性能的基本信息存储,例如需要快速读写的session信息,这些存储在这样的情景非常高效,也通常具有高伸缩性。

Key/value也经常被用于上下文的队列化来保证数据不丢失,例如日志架构或搜索引擎的索引架构。Redis 和Riak KV 是非常有名的key/value数据存储; Redis 使用的更加广泛,因为它有着一个内存型 K/V 存储,并且持久化是可选的。Redis 经常用于web应用中来存储session相关的数据,例如node或者-
PHP的 web应用 ; 每秒钟可以提取成千上万的session信息而没有性能损失。另一个典型场景是后面要讲到的序列化:Redis位于 Logstash 和 ElasticSearch 之间来存储t ElasticSearch 查询中的索引。

Column

由于要存储超大量的记录信息 到达了key/value存储限制的时候就需要用到列存储。列存储技术对于RDBMS世界的工程师可能不太容易理解,但事实上非常简单。RDBMS 中数据是按行存储的,而列存储中是按列的。使用列数据库的主要好处是能高速访问海量数据。 RDBMS的一行在硬盘上是一个连续的存储,多行可能存储在硬盘不同的位置,使访问稍显复杂,在列数据库中的一列数据是连续存储的。

举个例子,考虑在RDBMS中查询索引博客的标题,尤其是有数百万数据的时候,需要大量的IO操作,而在列数据库中,这样的查询只是一次访问。这样的数据库在从特定簇提取海量数据中非常顺手,但此消彼长的是缺乏灵活性。使用最多的列存储数据库是
Google Cloud Bigtable, 但开源的列存储数据库是Apache Hbase 和Cassandra.
列存储数据库的另一个好处是容易伸缩,这些列在海量存储时具有高伸缩性。这就是为什么它们主要用于保存非易变且长久保留信息的原因。

Document

列存储数据库对于含有比较深嵌套结构的结构化数据的存储不是最好的,这种场景需要使用面向文档的数据存储。数据实际上以key/value 存储,但是所有压缩的数据叫做文档。 文档依赖于一个结构或者编码例如XML, 但更多时候是 JSON (JavaScript Object Notation).

尽管文档型数据库对于数据的结构化存储和表达都非常有用,但也有其脆弱的一面,特别是与数据的交互性操作。它们基本上要遍历整个文档,例如当读取某个特定字段的时候,遍历可能会影响性能。

当需要存储嵌套信息的时候,可以采用文档型数据库。例如,考虑怎样表达应用中的一个账户,大概有以下信息:

基础信息:姓名,生日,照片 ,URL, 创建日期等等

复杂信息: 地址,认证方法(password, Facebook, 等第三方认证),兴趣等等。

这也是NoSQL 文档型数据库经常用到web应用的原因: 表达嵌套对象非常容易,由于都使用JSON,还可以与前端的JavaScript技术无缝集成。

使用最多的文档型数据库是MongoDB, Couchbase, 和 Apache CouchDB,都非常容易安装和启动,有很好的文档说明,而且都是可伸缩的,除此之外,它们也是开放现代web应用的明确选择。

Couchbase 是这里架构中选择的技术,使用它来存储,查询和组织数据。原因是基于它的性能基准测试,它的高吞吐量操作时延低于MongoDB.
还有一个值得关注的是,Couchbase 今天是 CouchDB 和Memcached的结合体。从支持的角度上看,使用CouchBase更显得有意义。

Graph

Graph 数据库与其它数据库有着本质的区别。它使用了不同的范式来表达数据——树结构,节点和边连接起来叫做关系。这些数据库是随着社交网络而诞生的,例如表达用户的好友网络,他们的好友关系等等。对于其它类型的数据存储,可能把一个用户的好友关系存储在一个文档中,但是,存储好友关系还依然非常复杂;使用图数据库就非常简单,为每个好友创建节点,通过关系连接他们,依赖查询的需要和范围浏览图。

用户喜欢...

梳理 Opengl ES 3.0 (一)宏观着眼

Opengl ES 可以理解为是在嵌入式设备上工作的一层用于处理图形显示的软件,是Opengl 的缩水版本。 下图是它的工作流程示意图: 注意图中手机左边的EGL Layer Opengl ES是跨平台(即可支持不同操...


AdaBox003 ESP8266 基于 Feather 平台的物联网套件

AdaBox003 ESP8266 基于 Feather 平台的物联网套件 Adafruit 的物联网世界由 Digi-Key 策划 ADABOX003 是特别针对喜爱制作电子产品,尤其对物联网 (IoT) 世界感兴趣的初学者而推出的。Adafruit与 Digi-Key 合作,...


学习OpenGL ES之物理引擎

前言 本文将介绍3D物理引擎Bullet的基本使用方式以及如何将之前的OpenGL渲染代码和Bullet相结合,制造一个符合物理运动规则的虚拟3D场景。下面是效果图。 Bullet Bullet是一个开源的物理引擎,...


学习OpenGL ES之教你实现SkyBox

不知道大家是否还记得基于CubeMap的反射效果里介绍的CubeMap,本文将使用CubeMap来制作3D游戏中的一个经典技术,天空盒(SkyBox)。老规矩,先来看下效果图。效果中的地形模型在前面的文章中...


学习OpenGL ES之教你制作迷雾

前言 本文将为大家介绍一种常见的3D技术-雾(fog)。雾可以让你看不清远处的物体,除了模拟真实环境中的雾效果以外,还可以用来遮挡修饰远处细节精度比较低的模型,让它们看起来没那...


学习OpenGL ES之基于CubeMap的反射效果

本文将为大家介绍如何使用CubeMap制作反射效果,反射效果可以让材质具备光滑的质感,比如汽车的烤漆,就非常适合使用反射效果。先上2张效果图。我使用的是Blender内置的猴头模型进行的渲...


学习OpenGL ES之ShadowMap(二)

本文将为大家解决上一篇文章留下来的问题。 Shadow acne 在上一篇文末,我们看到了有问题的阴影效果,我们常把这种问题称为Shadow acne,在不该出现阴影的地方出现了亮暗相间的条纹。我们通...


学习OpenGL ES之ShadowMap(一)

本文将为大家介绍3D实时阴影技术ShadowMap,又称为阴影贴图技术。下面是效果图。 原理介绍 我们在了解ShadowMap这项技术之前,先来了解一下什么是阴影。在现实生活中,阴影伴随着光而生。...


学习OpenGL ES之纹理投影效果

本文将为大家介绍如何把一张纹理贴图投影到复杂的几何体上。下面是例子运行的结果。 下面是未开启纹理投影的效果图。 这张是用来投影的纹理图。 涉及到的重要知识点 • 基本几何体的...


学习OpenGL ES之渲染到纹理

本文将介绍渲染到纹理技术。之前的例子都是将3D物体渲染到屏幕上,在iOS中GLKView为我们做好了渲染到屏幕的所有准备工作,我们只需要调用Open GL ES的绘制方法就可以轻松的渲染到屏幕。那...


学习OpenGL ES之基本纹理

纹理通常来说就是一张图片,我们为每一个顶点指定纹理坐标,然后就可以在Shader中获取相应的纹理像素点颜色了。 纹理坐标 首先解释一下什么是纹理坐标。把一张图的左上角定为 0,0 点,...


贸泽电子与Pycom 签订全球分销协议 为全球用户带来IoT模块与开发板

最新半导体和电子元件的全球授权分销商贸泽电子 (Mouser Electronics) 与Pycom签订了全球分销协议,Pycom是一家多网络物联...


FADU使用Prodigy™ Virtex UltraScale原型平台完成新一代NVMe eSSD的验证

SoC开发周期大大缩短 S2C公司,业内领先的 FPGA 快速原型验证系统供应商,今日宣布FADU, 一家致力于内存和存储体系架构的初创公司,已经借助S2C VU440 Prodigy Logic Module完成了他们新一代NVMe...


本应用笔记阐释了该IEC水平的保护解决方案如何将下游保护要求降至相当于1 kV人体模型(HBM) ESD的水平。

本应用笔记说明ADI公司新一代集成过压保护(OVP)功能的故障防护系列开关,结合极少的外部元件,能够加快符合IEC 6...


基于OpenGL ES实现多媒体全景渲染

近几年来,VR型的多媒体变得越来越常见。在YouTube上就有很多360度视频,很多地图产品也提供全景街道图。作为开发者,我们不禁要想如何实现多媒体的全景渲染呢? 其实,渲染VR的多媒体其...


eSIM:要方便也要安全

eSIM:要方便也要安全,物联网的应用推广正在逐步加速,传统SIM卡由于其使用寿命短、操作环境要求苛刻、运营商绑定...