MongoDB 学习建模与设计思路--统计数据更新案例

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2700人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 )(1 2 3 4 5 6群均已爆满,7群400+,开 8群 9群)

最近在读萧少聪老师翻译的书,MongoDB DATA MODELING AND SCHEMA DESIGN,主要是关于如何对数据建模的部分,当然这里建模是有倾向性的,是对于NOSQL的部分进行数据建模的一些理论和案例。

同时也找了另一本书,对比着看,NOSQL 与 RDBMS的建模之间的差异点在哪里。

先说相同点 1 其中的一些相同都具有的固定的概念 实体,关系,属性,数据模型的三个层次,业务需求或叫做业务术语,逻辑概念或者称之为逻辑数据建模,以及都有的物理数据设计。

其中实体指的是具象化的数据本身,且可以进行归类的数据实体,通过第二个递进的关系,将实体和实体之间进行关联,关系一般分类为,一对一,一对多,多对一,多对多。

在进行细分的情况下,一对多中可以分为一对多,一对少,一对巨多的关系。关系的拿捏对于传统数据库和MongoDB这类数据库都十分的重要,相对于传统数据库,这里关系对于MongoDB更重要,起因在于MongoDB有更灵活的设计模式。

这里我们画一个表格

关系与设计 MongoDB
一对一关系推荐使用键值对嵌入到文档中
一对少关系推荐使用嵌入式文档
一对多关系根据"多"的一方的数量选择嵌入式文档或引用式文档
一对巨量关系推荐使用引用式文档,并将关系信息存储在"巨量"的一方
多对多关系推荐使用引用式文档,并在双方都维护关系信息

一对一关系:一个实体只与另一个实体关联。

例子:一个员工只在一个部门工作。

一对少关系:一个实体与少数几个其他实体关联。

例子:一个用户可能有多个地址。

一对多关系:一个实体与多个其他实体关联。

例子:一个产品可能包含多个零件。

一对巨量关系:一个实体与海量其他实体关联。

例子:一台服务器可能生成大量的日志消息。

多对多关系:多个实体与多个其他实体关联。

例子:一个用户可以拥有多个任务,一个任务也可以分配给多个用户。

其中建模的的三个过程,在NOSQL 和 RDBMS 之间也是有名词的区别,RDBMS 中的三个过程是概念,逻辑,物理,NOSQL的三个过程为对齐,细化,设计。

最终的目的都是为了完成业务的需求,业务数据的存取和提取。

在对实体的描述中,RDBMS 和 NOSQL 之间并无太大的差异,而到了逻辑或者称之为细化的时候,两者的差异才显现或者是有较大的不同。

在RDBMS的逻辑实现中,通常我们的设计人员可以没有数据库的经验,他根本不管你用的数据库是SQL SERVER 、ORACLE 、 PostgreSQL ,他们关注的是怎么通过LDM来实现业务的目的。

而MongoDB的数据库对设计人员的知识水平明显要更高一些,因为这些设计人员要懂得,业务中的主体是更倾向于写数据,还是读取数据,这也是需要关注的环节。比如我们要关注的查询的频率,结果的延迟,数据量,数据写入的速度,数据的更新等等。

举一个简单的容易让人理解的说法,传统的RDBMS数据库是一个做好的汽车模型,你需要将这个汽车模型放到该放的地方即可,而NOSQL数据库则是"乐高",他需要你有更多的数据库知识,将一块块的积木打造成你独一无二的汽车模型。

如何打破原有的传统的RDBMS理论中的一些概念如三范式,外键,级联等关系的概念有助于你设计出一个更好的基于NOSQL的业务系统。

废话了这么多,我们举几个书中的案例,且和可以在深入一下。

以书中的130页的近似案例为模型:

比如有一个统计页面被读取的统计的需求,按照原有的传统的数据库思路,我们只要一个用户读取这个页面我们就在我们的表中对应的字段UPDATE+1 即可。

但这样的做法如果是一个比较热的文字,比如川普被枪杀的新闻呢。可能在瞬间就有几万,几十万的阅读量,此时传统数据库的UPDATE 可能会干冒烟了。

这样的设计方式的确是不合适,在MONGODB中我们可以采用近似法的方式,如一个页面的阅读量是否是一个不能差的方式,而是我们采用一个近似值,通过我们的应用程序的访问的缓存进行计数,通过间隔法来进行数据的写入到NOSQL中集合中。

缓存在10秒内获得的数字是1000以内,900以上,我们就写1000,缓存10内获得数字是10000以内 90000万以上,我们就写10万,以此类推,我们UPDATE到NOSQL中的数字的频率大大降低了,可以10秒进行一次数据的更新,但付出多大代价是我们的页面的阅读量并不准确。

但从业务的角度来说,这并不完全重要他要的是一个近似值,且10秒内有10万的阅读量也不是太可能,我们的统计的数字大概率是不会有太多误差的,但是,但是,但是,我们的数据库的性能稳定了,再大的流量我们的MONGODB 也能承受,且这就是一种NOSQL思路的设计方式,当然用到传统的数据库也是可以的。

同时我们可以在进行扩展,比如我们的页面统计的方法不同,比如一个页面要统计国家宪法的准确阅读的数量,那么我们可以将程序的中间值进行调整,通过增加属性的字段来告诉程序这个页面的统计的docuemnt误差值更低,那么在MonogDB中我们仅仅需要的是在一个所需要的Document里面增加一个key value,而在传统数据库里面,你需要再整个表里面添加一个字段,来说明我们统计的这个数值的误差率,如果你的这个表里面有1亿个行,就为这一个页面你要将9千9百9十九万9百九十九的行都加上这个字段。

此时MongoDB的灵活性就大大的体现的他的好处,我们就只需要的document来增加这个属性即可,其他的几千万行,根本就没有这个字段或者KEY VALUE。

后续会继续读这本书,将一些数据建模中MongoDB在数据建模领域中的一些灵活的思路进行学习,有一些思路是可以用在传统的数据库中,将数据处理人员思考的维度逐步拉升是最终的目的。

MongoDB 相关文章

MongoDB 大俗大雅,高端的知识讲"通俗" -- 2 嵌套和引用

MongoDB 大俗大雅,高端的知识讲"低俗" -- 1 什么叫多模

MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通

MongoDB 年底活动,免费考试名额 7个公众号获得

MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)

数据库 《三体》"二向箔" 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维

MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?

17000多张MongoDB表的锅 自动分析删除表数据难题--从头到尾的处理过程(文尾有MongoDB开发规范)

MongoDB 插入更新数据慢,开发问哪的问题?附带解决方案和脚本

MongoDB 不是软柿子,想替换就替换

MongoDB 挑战传统数据库聚合查询,干不死他们的MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)

MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模

MongoDB 双机热备那篇文章是 "毒"

MongoDB 会丢数据吗?在次补刀MongoDB 双机热备

MONGODB ---- Austindatabases 历年文章合集

PostgreSQL 相关文章

PostgreSQL SQL写出变态味,可以!(附带两个哑谜)

PostgreSQL 什么都能存,什么都能塞 --- 你能成熟一点吗?

PostgreSQL 迁移用户很简单 --- 我看你的好戏

PostgreSQL 用户胡作非为只能受着 --- 警告他

全世界都在"搞" PostgreSQL ,从Oracle 得到一个"馊主意"开始 PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁

PostgreSQL "我怎么就连个数据库都不会建?" --- 你还真不会!

病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)

PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜

PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆

PostgreSQL 如何通过工具来分析PG 内存泄露

PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?

POSTGRESQL --Austindatabaes 历年文章整理

PostgreSQL 查询语句开发写不好是必然,不是PG的锅

PostgreSQL 字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"

PostgreSQL Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)

PostgreSQL 玩PG我们是认真的,vacuum 稳定性平台我们有了

PostgreSQL DBA硬扛 垃圾 "开发","架构师",滥用PG 你们滚出 !(附送定期清理连接脚本)

DBA 失职导致 PostgreSQL 日志疯涨

PolarDB 相关文章

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)

PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)

PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人

PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)

PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)

PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless

POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS

PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈

PolarDB 从节点Down机后,引起的主从节点强一致的争论

PolarDB serverless 真敢搞,你出圈了你知道吗!!!!

PolarDB VS PostgreSQL "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?

临时工访谈:PolarDB Serverless 发现"大"问题了 之 灭妖记 续集

临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一

PolarDB for PostgreSQL 有意思吗?有意思呀

PolarDB Serverless POC测试中有没有坑与发现的疑问

临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处

POLARDB 到底打倒了谁 PPT 分享 (文字版)

POLARDB -- Ausitndatabases 历年的文章集合

PolarDB for PostgreSQL 有意思吗?有意思呀

PolarDB 搞那么多复杂磁盘计费的东西,抽筋了吗?

临时工访谈系列

青学会抽奖送书活动---- 联动Oracle 设计思想,架构

Oracle 文化走后,你我只值9.9元

知人者智,自知者明,琼瑶一路走好

本地存储还有活路吗? 从上周一个供应商问我的问题开始

一年又一年,成了老梆子,别回头,往前看!

临时工说: 实际实例揭穿AI, 上云就不用DBA的谎言

临时工说:DBA 7*24H 给2万的工作,到底去不去?

国内最大IT服务公司-招聘DBA "招聘广告"的变化--分析与探讨

临时工说: 网友问35岁就淘汰,我刚入行DBA 怎么办?

OceanBase 相关文章

OceanBase4.0 跟我学--分布式到底可靠不可靠,到底丢不丢数-- 核心实现

OceanBase 送祝福活动,礼物和幸运带给您

跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)

跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)

跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)

跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)

聚焦SaaS类企业数据库选型(技术、成本、合规、地缘政治)

OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB

OceanBase 学习记录 -- 安装简易环境

OceanBase 学习记录 -- 开始入门

数据库最近第一比较多,OceanBase 定语加多了?

临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者

临时工说:OceanBase 到访,果然数据库的世界很卷,没边

数据库信息速递 阿里巴巴的分布式数据库OceanBase旨在进军中国以外的市场 (翻译)

SQL SERVER 系列

SQL SERVER维保AI化,从一段小故事开始

SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗

SQL SERVER 危险中,标题不让发,进入看详情(译)

SQL SERVER 我没有消失,SQL SERVER下一个版本是2025 (功能领先大多数数据库)

SQL SERVER 2022 针对缓存扫描和Query Store 的进步,可以考虑进行版本升级

MySQL相关文章

MySQL 怎么让自己更高级---从内存表说到了开发方式

MySQL timeout 参数可以让事务不完全回滚

"DBA 是个der" 吵出MySQL主键问题多种解决方案

MySQL 让你还用5.7 出事了吧,用着用着5.7崩了

MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验

用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊

MYSQL --Austindatabases 历年文章合集

阿里云系列

阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?

阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列

阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列

阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列

阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列

截止今天共发布 1287 篇文章

相关推荐
毋若成1 小时前
【搭建JavaEE】(3)前后端交互,请求响应机制,JDBC数据库连接
数据库·java-ee·交互
大丈夫立于天地间1 小时前
ospf收敛特性及其他的小特性
网络·网络协议·学习·算法·智能路由器·信息与通信
m0_748241701 小时前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
天天向上杰1 小时前
简识MySQL中ReadView、RC、RR的关系
数据库·mysql
久绊A1 小时前
理解CPU负载与使用率
服务器·网络·数据库·cpu
你疯了抱抱我1 小时前
Oracle知识点1:如何修改密码并登录sys/system账号
数据库·oracle
星雨流星天的笔记本3 小时前
英语外刊写作积累(2024.09)
学习
wangqiaowq3 小时前
Apache PAIMON 学习
学习
羊小猪~~4 小时前
MYSQL学习笔记(二):基本的SELECT语句使用(基本、条件、聚合函数查询)
数据库·笔记·sql·学习·mysql·考研·数据分析
然然阿然然4 小时前
2025.1.15——二、字符型注入
网络·数据库·sql·学习·网络安全