【有书共读】MongoDB实战第二版第四章

【有书共读】MongoDB实战第二版第四章

面向文档的数据

schema设计原则

需要考虑如下问题:

  • 应用访问的模式是什么,读写比率?查询是否简单?key的复杂度?
  • 数据库的功能是什么?
  • 数据库的基本单位是什么?
  • 如何记录生成的唯一主键?

设计电商网站的数据模型

MongoDB可以通过在文档里定义数组实现RDBMS多表关联关系

图片说明

唯一的URL slug

提供一个有意义的url,有利于SEO.

https://mysite.org/products/wheelbrow-23455

slug是唯一索引

内嵌文档

允许一个key指向一个子文档

多对多关系

如一盒商品可以被分为很多个类别,定义一个类别的tag:

categories_ids{
id1,
id2
}

包含对象id数组,,每个数组是指向文档的指针,相当于join链接。

用户和订单

通常RDBMS会有一个用户表一个订单表,用外键相连,但是MongoDB可以使用订单对象的id作为引用很方便的建立一对多的关系。可以将商品,订单快递信息等内容都封装到一个个体对象中

图片说明

数据库文件

创建一个数据库后会产生一系列的文件,包含所有的集合,索引还有其他原数据

如创建garden数据库后
图片说明
mongodb.lock,储存服务器进程id等

garden.ns储存命名空间

garden.0,garden.1是原数据文件,有初始大小,如果数据过大可以扩容

图片说明

TTL集合

一种允许在特定时间后废弃的文档,需要创建一个特殊索引time_field设置一个时间值

文档序列化

所有的文档在发给mongoDB之前都会序列化为BSON格式,在从BSON反序列化

字符串

必须使用UTF-8编码

#MongoDB#
全部评论

相关推荐

10-19 10:28
已编辑
西南石油大学 后端工程师
团孝子已上线feeling:面了很多家公司,能感受到目前只有小公司+外包喜欢问八股。大厂虽然也问八股,但是是从实习、项目中进行提问,并且大厂会问很深,面试官也会对你的回答进行思考➕追问,所以准备大厂面试前一定要备好相关资料。对于算法,我做的是codetop前100+力扣hot100+力扣高频150,面试中实感hot100就足够,基本上只要是hot100就秒答。对于项目和八股,我做的也是烂大街的星球项目,八股则是看小林和问ai,自己也写了很多技术博客和画了很多思维导图,并且自己也尝试用嘴巴说出来,不只停留于纸面。运气也很重要,必须要让面试官/HR看到简历才行,所以建议投递时间是下午两点。tl:第一岗位9.9 投递9.10 一面(一面评价:最近见过最强的大三,结束五分钟后约二面,都晚上九点了不下班吗)9.11 二面(三道算法a出两道,反问评价:经验不够等横向,我实习生要啥经验)9.21挂(实习时间过短+其他原因,想要一年实习的,为什么不招个正职)第二岗位10.10投递10.11约面(主管打电话,说看到我之前投递记录了想要我挂qa职进去干后端,同意)10.14 一面(无八股,主动说确实很强,意愿很强)10.16 oc其余,友邦,东软,东华,惠择,用友oc已拒京东测开一面挂(投后端被测开捞)腾讯测试已拒(投后端被测开捞)ps:表扬惠择的主管面,没怎么问技术(可能是一面面试官沟通过了),全程一起讲大道理,解答了心中很多疑惑,也告诉我以面试官角度来看怎么选候选人,如果可以下次一定选惠择
HeaoDng:美团好像可以触发一面通
点赞 评论 收藏
分享
程序员牛肉:你这其实一点都没包装,标准的流水线产品。 实习现在不一定能解决你的问题,你太浮躁了。你看了多少源码?看了多少技术博客?真的没必要这么浮躁的着急找实习,沉下心来学习
投递实习岗位前的准备
点赞 评论 收藏
分享
12-03 15:20
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务