别忘记数据处理时并非只有使用SQL

举报
码乐 发表于 2024/04/17 08:39:04 2024/04/17
【摘要】 3 简介存储和使用数据只能使用sql阵营的吗?答案是否定的。 4 概念mongodb 是2009发布的 一个全新的通用平台类. 它就是开发者最想要的数据库。充分利用关系模型的优点和 NoSQL数据库。 启用mongodb 几乎可以满足任何类别的客户需求的现代应用。它包括以下功能。应用服务 应用领域的服务 MongoDB 图形 驱动 --- 适配器数据功能 Mo...

3 简介

存储和使用数据只能使用sql阵营的吗?答案是否定的。

4 概念

mongodb 是2009发布的 一个全新的通用平台类. 它就是开发者最想要的数据库。

充分利用关系模型的优点和 NoSQL数据库。 启用mongodb 几乎可以满足任何类别的客户需求的现代应用。

它包括以下功能。

  • 应用服务

          应用领域的服务
          MongoDB 图形
          驱动 --- 适配器
    
  • 数据功能 MongoDB图集

       图集 搜索
       数据湖 data lake
       移动客户端  数据同步功能 
    
  • 云基础设施

          aws
          azure
          google cloud
    

我们简单使用mongodb。

4.1 数据库架构

数据和软件是每个 商业的核心,但是对于许多组织,充分发挥数字经济的能力仍然是一项重大挑战。
由于现有关系数据的问题:

  • 在要求更高的生产力和更快的时间时

    受到严格的关系数据的阻碍与现代代码不匹配的模型和强加复杂的相互依赖的 工程团队关系。

  • 无法适应大量增加的新的和快速变化
    由今天的应用程序生成的结构化、半结构化和多态数据 无法从数据中获得有价值的洞见。

  • 单一且脆弱的遗留数据库抑制了大规模转向分布式系统和云。
    限制了提供弹性和规模的计算数字业务需求的同时 满足对数据隐私的全新监管要求。

  • 以前独立的交易、分析、搜索和移动工作负载正在融合,以创造丰富的、数据驱动的应用程序和客户体验。

每个工作负载都是通过自己的数据库提供数据 服务,
可通过访问不同的开发者 API 把重复的数据孤岛与脆弱的 ETL 管道缝合在一起。

针对这些问题,很多 NoSQL 数据库只是提供了一些创可贴,提供了一个基本功能集。

典型的 NoSQL 数据库可以很好解决一个或两件事——它们可能会提供更多的灵活性,
因为数据模型优于传统数据库,或支持轻松横向扩展。

为了做到这一点,他们放弃了最有价值的特征:关系数据库。

他们经常牺牲数据完整性 , 以构建一种 所需的结构 满足处理数据的能力
丰富而有价值的应用程序标准:
这些应用程序是否是新的数字接触点,或现代化的核心后端业务流程。

4.2 文档模式 和 mongodb 查询语言

Document Model & MongoDB Query Language
支持开发者 以创新的方式 建设 交易操作和分析。

优点:

类似json的 Bson格式数据,可以在一个表中 处理类似关系数据库的多个表的数据。

减少 类似 解析拆分json 或 构建ORM层的操作。

数据被集中在一起被访问,可以使用较少的代码 和 更高的性能来访问数据。

灵活的模式用于 动态的 适应改变。

文档的模式 是 动态的,和 自描述的,所有开发者不需要 预先在数据库中定义它。

在迁移数据库时,也不必与 被破坏的 数据模型纠结。

如果需要添加 新的数据字段,也不用影响其他应用功能,同时也不必停机 去更新数据字段。

如果需要修改数据 的模型,文档数据库 可实时的更新和上传数据对象,而无需执行代价高昂的 ALTER TABLE 操作。

文档数据库 允许 多个版本的 模型存在于 相同的表空间。 ORM中间件,多开发者同时操作,
DBA 和 运维团队, 新的和旧的应用程序可以同时存在。

mongodb 支持模型验证,所以你可以对每个文档结构强制执行标准。

使用 模型验证(Schema Validation),当应用进入生产环境时,开发者可以对每个文档应用数据治理,并同时在开发时,维持灵活的数据模式。

json 随处都是,它是轻量级的,无语言依赖,人类可读的。 json已经变成一种 数据通信和存储的事实标准文件(Documents) 是一种超级数据模型,可以满足你的应用所有需求。
如 富文本对象,键值对,表,geo数据,时间序列数据,也包括 图形的节点或边。

以上优点完全可以做到 使你使用一个数据库 服务多个应用,同时可以使用一种查询语言 (无论选择哪种数据模型)都可以为你提供一致性的开发经验。

mongodb 不似其他数据库 直接存储json的字符串和数字,它编码了json数据除BSON,还包括 int,long, date, floating point, decimal123。

以方便 mongodb 应用于可靠的程序,方便排序,和对比数据。

4.3 性能和可靠性:服务任何工作量

  • 性能

全面而且有表现力的 查询语句,丰富的索引,数据完整性控制。

    Ad hoc queries    # 临时查询
    indexing       # 索引
    real time appregations  # 实时聚合

以上查询语言的优点 提供强大的 数据访问,数据分组,数据转换 和 分析数据

federate queries # 联合查询 可以支持事务 以及存档你的数据到 数据湖(data lake).

使用mongodb 查询语言 和 驱动 在单个数据库连接 使用联合查询 可以支持事务 以及存档你的数据到 数据湖(data lake)

  • 可靠性

    ACID transactions 可以实现 all-or-nothing (全部成功或无一执行)
    快照隔离 保证 mongodb为可靠的。
    无论是单个文档 或 横向扩展 mongodb (scale-out architecture)
    或者 是分布在 不同地区不同分片的 geo 数据

  • 强大的数据一致性保证

一致性是可以 调整平衡性的,以保证数据的新鲜程度,原文:

    consistency guarantees are fully tunable allowing you to balance data freshness against performance.
  • mongodb 驱动

    多个语言的驱动支持,可以 避免用户 像使用SQL那样 建立脆弱的 ORM 关系层。

    mongoDB Compass # 图形管理界面
    mongodb 的 图形驱动界面。

    mongo连接至 BI: bi-connector
    mongo连接至 spark: spark-connector # apache 开源软件,用于大规模数据处理的统一 分析引擎。
    mongo charts: charts

    mongo实时数据流: changeStreams
    triggers: 数据库订阅
    mongo连接至kafka: kafka-connector

  • 运行要求:

mongodb 可以运行在任何地方。

4.4 多个云服务的 全局mongo 数据库

Multi-Cloud,Global Database
在多个云之间切换 而无需 修改代码。
mongodb可以工作在 私有云,公有云,混合云。

在多个云中部署 使用 (最佳级联自动化)best-in-class automation and proven practices
以此保证 可用性(guarantee) 可扩展性(availability) 合规性(compliance)

  • 在线mongo数据服务 MongoDB Atlas
    使用在线的mongo数据服务
    支持按使用计费(pay-as-you-go)的模式。

  • 自动部署 ops-manager
    支持自动部署,监控,备份,缩放 mongodb

k8s kuberneetes
MongoDB Enterprise Operator for Kubernetes

4.5 分布式 Distributed Architecture

可扩展 Scalable
弹性 Resilient
关键任务 mission critical

支持以低延时 用户访问,同时强制执行数据隐私法规的主权控件。
GDPR 规范

4.6 数据安全副本 Data Protection with Replica Sets

保存数据 最多 50份拷贝。
可用于 分离节点 sepatate nodes, 数据中心 data centers , geo regic 地理数据

私人安全数据集 设计基于 安全性,如果主要节点 断电 或 关闭。
mongo的从节点将自动 替换 成为主节点。
在mongodb atlas中,可靠性为 99.995%

安全集控制 基于共识协议(Raft consensus protocol)

可扩展性(availability)
Scale-Up, Scale-Out, Scale Across Storage Tiers(跨存储层)
与其他数据库一样,可通过导入 大型数据库实例 扩展 mongodb

    集群状态下,支持数据库 重新分片。

通过更多样化的工作负载
远程分片 Ranged Sharding
哈希分片 Hashed Sharding
MD5 hash 键值
分区分片 Zoned Sharding

4.6 隐私与安全 Privacy and Security

防御 defend
检测 detect
数据访问控制 control access to data

认证 Authentication
控制到数据库的简单访问 挑战-响应机制(SCRAM-256) challenge-response
一体化的企业 认证 包括 LDAP , windows active directory,
kerberos,X.509 certificates AWS IAM

授权 Authorization
RBAC Role-Based Access Control 以角色为基础的 授权机制。
授权粒度 基于 用户或应用 他们所需完成工作 需要的特权。

审核 auditing
合规性检查, regulatory compliance
安全管理员 可以使用mongodb 本机日志来 记录所有数据库的访问和修改。

网络隔离 network isolation
mongodb atlas 用户数据 和 潜在的系统 是完全与其他用户隔离的。
数据资源与 一个用户组关联。
它被包含在自己的 VirTual Private Cloud(VPC)中
访问时必须 授予 IP 白名单 或 VPC Peering (VPC对等权)
任意加密 Encryption Everywhere
mongodb 的数据在 穿越互联网时 支持加密传输。 无论是在 数据库内存 还是 rest 网络,或者在磁盘 或备份文件中。

Client-Side Field Level Encryption(FLE)
用户侧安全策略。

用户无需编写 额外的 高度复杂的加密。
不需要 用户有能力 去 查询 加密数据。
显著提高性能
更好的 管理删除权限。
Personally Identifiable Information (PII, 个人用户数据)
误删是 不可读的 也是不可恢复的。

用户侧 域加密策略
这一额外的安全层强制执行一个均匀的使用的人之间更细粒度的职责分离数据库,以及管理和管理数据库的人员数据库。

4.6 mongodb云 中的操作

提供一种 底层架构,帮助 开发者 用于构建现代应用,跨过云的边际限制。
整合应用服务。

现代数据架构不仅限于事务数据库。许多应用程序还需要分析和搜索功能,这通常需要团队学习、部署和管理其他系统。
如果您正在构建移动应用程序,您需要处理数据设备并将其同步到后端。
mongodb 帮助 实现以下功能:

mongo 提供 可视化工具: 不需要 自己构建数据可视化工具,
mongo 之间迁移数据 不需要写很多胶水在数据服务之间移动数据的代码,或创建和操作自定义数据访问 API
mongo 的文档模式 是 一致、统一的体验 -- 对双方而言
    
    开发人员和支持他们的运营团队——公司 避免分散的数据孤岛蔓延
    满足 操作模型和安全性要求
    
mongo cloud

    该数据库与其他具有自动同步、数据分层的数据服务,和联合查询

    将您的基础设施作为代码 使用 Kubernetes 和 Terraform 管理集成,插入您的监控和警报工具,
  • 搜索 Search

    搜索索引与数据库并自动保持同步。老化数据可以自动存档到云存储,提供完整的管理数据分层,同时保留访问权限。

    查询是自动路由到适当的数据层,无需要求您考虑数据移动、复制或ETL。 MongoDB Cloud 甚至可以自动同步后端数据到移动设备上的嵌入式数据库。

可以轻松创建快速、相关的全文在云中的数据之上的搜索功能,并且建立在行业标准库 Apache Lucene 之上。

该服务是完全托管的,在操作上是不可见的,并且集成在 Atlas 云数据库中,删除了
需要团队部署和管理单独的搜索平台。

搜索功能也通过MongoDB 查询语言,因此开发人员不需要学习一个新的接口。

要构建的查询语言复杂的搜索查询。
模糊搜索,自动完成、方面和过滤器、自定义评分、分析器
(fuzzy search, autocomplete, facets and filters, custom scoring)
Atlas Search 适用于 30 多种语言。

  • 数据湖 Data Lake

mongo cloud 提供一致的和优雅的开发者体验。

从数据库或数据湖 data lake中分析 有一个共同点简化开发的数据处理方式。与其他需要学习的云数据平台不同完全不同的技术。

一致的界面在一个系统中展示其所有服务。

你可以选择底层基础设施 AWS,GOOGLE,AZURE 并获得一致的体验、部署和控制。

一致的单个 UI ,在不同云中的集群。利用不同的云供应商的服务,但是避免锁定。 实现跨云的简单数据可移植性。

Data Lake 带来无服务器、可扩展的数据湖 具有按需查询服务的云平台 使您能够分析云对象存储中的数据

无需设置或管理基础设施,也无需自动将容量规划为 Atlas Data Lake
Atlas通过分解查询来并行化操作,然后将工作分配到多个计算节点。

Data Lake 还可以自动优化您的工作负载通过在最接近您的数据的区域中使用计算。

这对数据权限 相关的需求很有用,授予您能够指定 数据需要位于哪个区域处理,
并为您数据的全局视图 提供更高的安全性。

联合查询允许 在 AWS S3 中组合和分析数据。
支持的数据格式:

    JSON, BSON, CSV, TSV, Avro, ORC and Parquet

Atlas data允许您自动将历史数据从数据库中移出到云对象存储,
同时通过相同的方式保留查询访问连接字符串。

4.7 边缘数据的 领域 Realm for Data at the edge

扩展数据基础到网络边缘,并完全集成 Realm 是轻量级的 客户设施。
帮助解决 如手机的唯一挑战。
Realm Sync # 边缘数据同步
Realm Application Services
移动端 Mobile

5 小结

本节整理基本概念和特性,下一节我们实例示范如何使用。

参考
docs.mongodb.com/manual/replication/

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 01 天,点击查看活动详情

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。