MongoDB 2023年度纽约 MongoDB 年度大会话题 -- 企业级从传统数据库到NOSQL,你会更好...

news2024/11/22 17:57:48

978fcccf530907a2b905eedc7b5be055.png

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共1300人左右 1 + 2 + 3 + 4) 3群即将突破 400 (目前387)会关闭自由申请,新人会进4群,另欢迎 OpenGauss 的技术人员加入。

每天感悟

每时每刻我都认为我是正确的,每时每刻我都发现我的认知需要修正,不停的探索,不停的刷新自己曾经的认知,而不是和动物一样吃饱就行

正文:——————————————————————————

这是2023年纽约NYC MongoDB大会的第二期,这期的主题是在企业级别从RDBMS 迁移到 NoSQL. 

请不要找我要原文,没有原文,音译,翻译水平有限,如有错误,尽请谅解。

ed244ea1f545bd077cefe444139bcdb6.png

正文:

下面我们为大家介绍重量级的,或者都不需要介绍,Rick Houlihan, 他之前在 AWS 工作,现在他是全球NOSQL 技术上的领导,现在我们欢迎他

76a87db4b9d513a8bd1bf47bf12fa1e0.png

大家好,非常感谢大家抽出宝贵的时间,来参加纽约2023 MongoDB技术大会,正如刚才那位女士提到的,我在AWS工作了10年,作为NOSQL方面的全球的技术专家,我负责亚马逊零售 NOSQL 技术团队,你们下面的诸位可能会很熟悉,从有关系,到无关系的数据迁移,我的团队拥有最先进的设计模式和最佳的实践开发经验。

722242fd641e4521688e45d2b5eea893.png

我想大家都感兴趣,为什么像 亚马逊这样的大型企业,选择的新技术是NoSQL ,而不是 RDBMS 关系型数据库,那些经过多年验证的数据库产品,实际上当初我们在这个名为 Rolling stone 的项目初衷并不是要替代传统数据库, 而我们的目的是让ORACLE 滚蛋,因为ORACLE的存在让亚马逊的领导非常的难堪,这样一个又贵有X的数据库的存在,让亚马逊的领导每次都需要在演讲台上重塑,aws 有非常出色的数据库服务,然后Larry(oracle ceo), 也站在讲台上反唇相讥,说既然你有最好的数据库服务,为什么ORACLE 是 AWS 最大的服务商。所以最早的这个项目的目的就是让ORACLE 滚蛋。

我们的技术路径就是,数据库是自由的路径,截止到今天我们的很多数据库工作都是在进行数据库的关系建模,归根结底我们的工作就是要让人们认识到,不存在关系性数据这类东西,非关系型的数据就和无线频道之间的空间传输一样,关系本身只存在于查询的时候,以及如何对这些关系型进行建模。

建模是否适合你,关系型数据库是否适合你,我们是否可以有效的进行设计,一旦你认识到我们再以全新的方式来定义,今天我们要谈的即使,The great migration ,why nosql ?

f473ddd6407274afa349bb357db7943d.png

我们迁移路线是否正确,我们迁移的基准点在哪里,我们如何关心开发的模式。

91f2933c0c7ca256112c05f2f79571a1.png

台下很多人可能会说,AWS 就是云企业,你们迁移到NOSQL上很简单,实际上你们是错误的,AWS 诞生于1995年,他是开发面向服务架构前就存在的公司,价值50亿美元的企业,所以我们并不是你们想象的我们有很多传统的技术,各种堆栈,以及基于应用开发的大型的服务,我们要摆脱这一切是从rolling stone项目开始的,让ORACLE 滚蛋,我们曾经是Oracle 许可证拥有最多的企业,在2018年达到了顶峰 3000 多的ORACLE 上部署了10000个应用,当我们拆分这些服务的时候,我们发现工作量超级大,这个项目超级大。同时传统数据库项目的成本问题非常高,在转换了NOSQL后为什么同样的成本上,运行的工作更多了,效率更高了,这就是我们转换中的一些感悟。

cb9be52a5e52d726a75c3a946f5fd31c.png

(注明:这个老头的确是一个演说家,后面说的一些关于数据处理的历史问题,这里就不进行翻译了,大致意思是在数据库领域发展是曲折的,每次的发现数据处理瓶颈的开始都是一个新的技术产生的契机。)

a43e73ccbb9c24c2378e3db44432b6ba.png

在数据库发展的历史中,我们对于关系型数据库的依赖来源与廉价的CPU ,因为关系型数据库强依赖与CPU ,廉价的CPU 给关系型数据库的数据处理带来了强大的,传统数据库的依赖对象是硬件产品,强依赖,而NOSQL 数据库依赖的数据建模,这是这两种数据库产品最大的不同。从成本上,NOSQL数据库本身可以在好的建模设计的基础上,大量减少硬件的投资。

cb10ee9dcdf9b6b93a79aa9b7aa2b3df.png

你们可以看看关系型数据库的推动者,你们看一下上面的图左面的图,这是当今全球最大的数据计算群前500,他们在技术的投入petaflops 或者叫浮点计算,已经不在遵从摩尔定律了CPU的能力被挤压到 10年没有符合摩尔定律的规则了,为什么因为CPU的性能提升趋势已经接近平缓了。为什么因为成本的原因,(这里讲了CPU的成本)为什么他们降低了5纳米的研发速度,因为3纳米的的晶圆每片 3万美元,CPU的成本上升,效率降低。我们能看到的是存储越来越便宜,CPU的成本越来越贵。这不是一个新闻,这是事实。

65c1b47ac22f7252a65967f1f78b3c7a.png

Edgar Frank 发明关系型数据模型,其中数据的范式就是要批量的规范化数据,和数据的通信的方式,去除冗余的数据,但是他本人也谈论过反范式的效率,如果你在系统中存在冗余的数据,你将大幅度的对于某些查询在CPU 方面进行提高。

5676ad1be5fc731383e4b0ed94ec3c9e.png

埃德加·弗兰克·科德(Edgar Frank "Ted" Codd,1923年8月19日-2003年4月18日)是一位英国计算机科学家,曾在IBM工作期间发明了数据库管理的关系模型,为关系型数据库和关系数据库管理系统打下了理论基础。他在计算机科学领域还做出了其他宝贵的贡献,但关系模型作为一种非常有影响力的数据管理通用理论,被广泛提及、分析和赞誉为他最为著名的成就。

这点就印证了在开发NOSQL为数据库基座的应用产品,你可能想的是提高查询的效率, Edgar说运行100次 ,运行1000次这是我关心的成本的问题。每天,每周运行一次,我才不在乎什么运行效率。SQL的口头禅就是,在最重要的地方最大化效率。所以这个人告诉我们上面那张图的标准化成本的 ERD,实际上我们为什么没有遵循 ERD的理论,还是依赖了CPU 效率的提高,满足了我们不使用ERD 某些的理论。

0732ff2a6106d913fae94bb17a659866.png

但是在进行AWS 应用程序的拆分中,我们发现关系型数据库本身和工作负载之间存在着成本效率的差异关系。在我们的工作中,如果你的对未来的查询是什么不清楚的情况下,传统数据库是一个好的解决方案,尤其OLAP,这些是对运行的时间不存在要求的。他们可能是对数据进行分析或帮助后台寻找一些潜在的问题之类的数据查询,没有人关心他是在10毫秒还是100毫秒内返回。

而NoSQL要工作的地方和传统数据库是不存在矛盾的,NoSQL 不构建SQL ,对于大规模的OLTP,我们将为高速查询优化查询的数据模型设计,和MongoDB 一样,通过分片进行扩展,同时从 MongoDB Altas你可以用SQL 来读取MongoDB 来支持OLAP 的工作负载的工作。通过MongoDB 开发人员只需要学习一个 API 就可以了,而不是10个,通过一个API 就可以完成大部分的工作。

f8118aaf2b7dd438b0ce5df7a8b1e1bc.png

d73230152e88f3972cd4a5eddbc5e154.png

关系数据库是怎么设计,运行和维护的,实际上在我们AWS进行数据库转换中,3000个实例的ORACLE 中,70%的数据查询都是单表查询,实际上很多数据被写入,并没有被读取过,最后我们分析发现10%的查询是JOIN 的查询模式,非常的昂过的查询模式。

0f4a397b07d4f7c62552272fdb8acdff.png

361ae9800c685310d2c6294341381804.png

这是一个产品的目录,我们来看看如何将这些产品目录的数据存储在关系型数据库,我们可能会在这些表中分解内容,我们这里会有一个产品表,里面存储不同类型的产品,这些表有一对一的链接,专辑和曲目之间有一对一的链接,在此之间演员之间有多对多的链接,如果我们考虑一下系统如何访问他想要的,按照类别来选择产品,可能按照价格排序或按某些特定的属性进行排序等等,所以我不想要的数据也被卷入到计算中,这就是为什么很多传统数据库前面会放置一个缓存,因为我知道每次查询数据的成本很昂贵,现在我不需要这样了,同时原来我还需要通过ETL 来将数据传输到另一个数据库上,还要确保数据的一致性,现在我也不需要了。以前我对产品的列表需要进行关系的设计和查询,现在我不需要了我只需要一个Documents 就存储了产品的列表。

6c7b3e5c789a830110fcb9685920c30e.png

beca290280b329c66baf28d30fca7000.png

以前我们建模讨论时间复杂度的问题,然后把代码编译好,去找关系型数据库,然后你的应用程序 和 你的数据库存储之间的中间层抽象层,数据被分散的存储,在进行重组进行查询,这些查询被转换为时间的复杂度,我在传统数据库中看到的就是一个表和多个表有关系,一对一,一对多,多对多,等等然后在重复上面的额关系,时间复杂度在复杂查询里面,直接爆炸了,这就是传统关系型数据库。

我们在回过头看看NOSQL ,我们首先讨论的是键值的访问模式,当然我们不止讨论这个,应用程序讨论的访问模式有很多种,但是键值的查询的速度是最快的。(后面讲了一个例子,如何将传统数据库中的JOIN 多表,在MongoDB中通过重新设计建模的方式进行数据查询方式的重新设计),比如建立索引表,将原有的多链接查询变为简单的索引查询,通过这些设计,我们降低了CPU 额外的消耗。

6ed2a74212227812a908415f7b47e802.png

在上周我们的电话会议上,金融机构Temenos 他们的全球金融服务运营完全架设在yugabyte 和 mongodb 两种数据库上,基于之前的传统数据库的硬件需求,与他们在转换新的开发模式和使用mongodb 后,整体的硬件设施,削减了一半,每秒负载 150000 个事务,为什么他们能减少硬件,因为他们把 JOIN 都取消掉了。

456c7dc9949f0a9045f3d1ab9c9472ee.png

5826f7b34c132cfaed107b5ed06b1aaf.png

现在越来越多的和我们当初在 AWS 一样的项目,正如我们提到的,一些在转换了开发方和数据库的使用后,在数据库基础架构方面的支出,与2017年一样多,并未增加。就像我所说的,现在企业中最大的IT花销就是数据库,我们能够降低正在执行查询的时间的复杂性我们就可以降低数据库基础的成本。

89512884c23787bc599f1d083a18be5c.png

实际上如何执行这个计划,其实很简单我们现场有没有DBA ,来回答我一下,开发人员有几个懂SQL 和 懂RDBMS数据库的,或者对于关系数据库的建模他们擅长吗?   台下有声音,NO 。

这些开发根本就不知道怎么建立关系,怎么建立索引,怎么优化,开发很难掌握这些,程序员需要的是对象,对象 ,对象,他们熟知怎么构建对象,我们的数据库就是面向对对象的反映了应用程序需要的数据。看上图的一个曲线,在两个技术都需要学习的情况下,开头是一样的,都很难,但后面,适合的技术给你带来的不是,干了半天不知道那是个什么东西的情况,NOSQL数据库跨越了这个鸿沟,可以说MongoDB 在这个领域属于外太空的科技,但现在还有很多人,不知道也不知道如何使用这项技术。虽然我这样说,但是我不是销售,我讨厌销售,我不会告诉你,来你来消费MongoDB吧, 我所做的事情就是让你们了解有这样的技术,适合你的开发团队并且我们要做的就是和你们聊聊天,然后你们的开发人员恍然大悟,原来还能这样解决问题。这就是我今天所有TALK 和大家分享的关于NoSQL 我知道的东西。

注:后面他说的太快了,跟不上,并且说的与数据库无关,但口才真不是一般的好。

cb499d11609cd87510351d14f81ea975.png

f7fd820f61c75aeb764a0f946ba9e7d5.png

c49ac39ce09c28e9a18af34d1f535877.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android学习之路(17) Android Adapter详解

Adapter基础讲解 本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用这个Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式显示到view上,提供 给用户看…

读取一张图片各种颜色占比

提问之初 <small> 读取一张图片各种颜色占比 /storage/emulated/0/Pictures/Screenshots/Screenshot_20230725_195440.jpg有趣优雅热情沉着的代码与注释/每行每行 from PIL import Image # 导入PIL大法&#xff0c;这是处理图像的必备神器# 图片路径&#xff0c;此处为…

2023年哪款PDF虚拟打印机好用?

PDF文档想必大家都不陌生&#xff0c;在工作中经常会用到该格式的文档&#xff0c;那么有哪些方法能制作PDF文档呢&#xff1f;一般都是借助PDF虚拟打印机的&#xff0c;那么有哪些好用的软件呢&#xff1f; pdfFactory不仅为用户提供了丰富的PDF文档生成、打印功能&#xff0…

蓝桥杯每日一题2023.10.1

路径 - 蓝桥云课 (lanqiao.cn) 题目分析 求最短路问题&#xff0c;有多种解法&#xff0c;下面介绍两种蓝桥杯最常用到的两种解法 方法一 Floyd&#xff08;求任意两点之间的最短路&#xff09;注&#xff1a;不能有负权回路 初始化每个点到每个点的距离都为0x3f这样才能对…

00后老程序员不讲武德 偷袭 猿人学第二题解题记录 match/2

我是一个00后的老程序员&#xff0c;半夜00点有个Python群友发来一个题目&#xff0c;我以为是leetcode算法题呢&#xff0c;这不轻而易举、手到擒来、简简单单、有手就行&#xff0c;哪怕是博利叶排序我也能招架得住啊&#xff0c;结果发来一个链接。 题发出来了&#xff0…

GD32F10X ----RTC

1. RTC的简介 STM32 的实时时钟&#xff08;RTC&#xff09;是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置…

BUUCTF-WEB-刷题记录

题目地址 https://buuoj.cn/challenges[HITCON 2017]SSRFme 代码理解 进入主页后发现是代码审计/ escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数— 抑制错误输出 mkdir — 创建目录 chdir 更改目录 shell_exec — 通过 shell 环境执行命令&#x…

第5章-宏观业务分析方法-5.3-主成分分析法

5.3.1 主成分分析简介 主成分分析是以最少的信息丢失为前提,将原有变量通过线性组合的方式综合成少数几个新变量;用新变量代替原有变量参与数据建模,这样可以大大减少分析过程中的计算工作量;主成分对新变量的选取不是对原有变量的简单取舍,而是原有变量重组后的结果,因此…

Spring注册Bean系列--方法1:@Component

原文网址&#xff1a;Spring注册Bean系列--方法1&#xff1a;Component_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring注册Bean的方法&#xff1a;Component。 注册Bean的方法我写了一个系列&#xff0c;见&#xff1a;Spring注册Bean(提供Bean)系列--方法大全_IT利刃出鞘…

C++代码示例:排列数简单生成工具

文章目录 前言代码仓库内容代码&#xff08;有详细注释&#xff09;编译和运行命令结果总结参考资料作者的话 前言 C代码示例&#xff1a;排列数简单生成工具。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) …

PHP 数码公司运营管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 数码公司运营管理系统系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php 数码公司运营管理系统 代码 https://download.csdn.net/download/qq_41…

实战教程:如何在API监控中实现高效报警和通知

问题 因一业务需要&#xff0c;想要对API服务接口添加一些监控&#xff0c;以帮助跟踪应用程序的性能、问题和用户活动等。实现监控的方式有多种多样的方式&#xff0c;以下是一些常用的方法&#xff1a; 日志记录&#xff1a; 在应用程序中添加详细的日志记录&#xff0c;包括…

如何开发一个微信小程序

微信小程序是微信公众平台推出的一种全新的应用形态&#xff0c;它具有跨平台、小巧、高效等特点&#xff0c;深受用户喜爱。 一直想学习开发小程序&#xff0c;最近找了一个教程来看&#xff0c;发现原生小程序写起来还是挺简单的&#xff0c;主要分为以下几步。 准备开发环境…

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)

目录 一、Sentinel 限流规则 1.1、簇点链路 1.2、流控模式 1.2.1、直接流控模式 1.2.2、关联流控模式 a&#xff09;在 OrderController 中新建两个端点. b&#xff09;在 Sentinel 控制台中对订单查询端点进行流控 c&#xff09;使用 JMeter 进行测试 d&#xff09;分…

C语言 Cortex-A7核 PWM实验

1 实验目的 驱动开发板蜂鸣器风扇、马达进行工作 2 代码 pwm.h #ifndef __PWM_H__ #define __PWM_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_ti…

网页一直跳转到国家反诈中心页面

很明显&#xff0c;我进入的是vscode的官方下载地址。 但是一直会出现反诈中心的拦截 我们需要在控制面板中&#xff0c;找到网络&#xff0c; 将Internet 协议版本 4 (TCP/IPv4)的属性改成 使用下面的DNS 服务地址(E)&#xff1a;8.8.8.8 这样就可以正常访问相关的页面了

【day10.01】使用select实现服务器并发

用select实现服务器并发&#xff1a; linuxlinux:~/study/1001$ cat server.c #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8880#define IP "192.168.31.38"int main(int argc, c…

动态规划算法(1)--矩阵连乘和凸多边形剖分

目录 一、动态数组 1、创建动态数组 2、添加元素 3、删除修改元素 4、访问元素 5、返回数组长度 6、for each遍历数组 二、输入多个数字 1、正则表达式 2、has.next()方法 三、矩阵连乘 1、什么是矩阵连乘&#xff1f; 2、动态规划思路 3、手推m和s矩阵 4、完…

Vue封装全局SVG组件

1.SVG图标配置 1.安装插件 npm install vite-plugin-svg-icons -D 2.Vite.config.ts中配置 import { createSvgIconsPlugin } from vite-plugin-svg-icons import path from path export default () > {return {plugins: [createSvgIconsPlugin({// Specify the icon fo…

cesium 热力图(CesiumHeatmap)

cesium 热力图 可添加、删除、显示、隐藏 完整代码 <!DOCTYPE html> <html lang="en"><head><meta charset="utf-8">