NoSQL数据模型简介
案例设计以一个电商客户,订单,订购,地址模型来对比下关系型数据库和非关系型数据库
传统的关系型数据库你如何设计?
ER图(1:1/1:N/N:N,主外键等常见)
用户对应多个订单多个地址
每个订单对应每个商品、价格、地址
每个商品对应产品
闲聊:用户画像分析,女人心是琢磨不透的,看了男装,剃须刀,根据她的信息找到她男朋友的生日就
在最近,后台画像已经分析完毕,准备推送广告了,结果她买了一个零食就走了~
90后的程序员真的在一点点的改变生活中的点点滴滴,假设你有幸进入了大厂,你会发现周围的小伙伴
都在努力,真的就是那种可以在海底捞吃着吃着饭,突然就掏出笔记本写代码的那种,别人都以为他们
是疯子,只有他们自己内心才懂。这才是对技术的痴迷。
NoSQL你如何设计
可以尝试使用BSON。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档
对象和数组对象
用BSon画出构建的数据模型
代码语言:javascript复制{
"customer":{
"id":1000,
"name":"Z3",
"billingAddress":[{"city":"beijing"}],
"orders":[
{
"id":17,
"customerId":1000,
"orderItems":[{"productId":27,"price":77.5,"productName":"thinking in
java"}],
"shippingAddress":[{"city":"beijing"}]
"orderPayment":[{"ccinfo":"111-222-
333","txnid":"asdfadcd334","billingAddress":{"city":"beijing"}}],
}
]
}
}
想想关系模型数据库你如何查?如果按照我们新设计的BSon,是不是查询起来很简单。
高并发的操作是不太建议有关联查询的,互联网公司用冗余数据来避免关联查询
分布式事务是支持不了太多的并发的