这个场景更适合使用NoSQL

本文通过对比SQL与NoSQL在联系人列表管理中的实施方式,展示了NoSQL的灵活性与便利性。NoSQL允许自由添加、删除记录中的特定项,通过使用JSON结构存储数据,避免了传统SQL中频繁修改数据库结构与复杂关联查询的问题,特别是在处理多电话号码、邮箱、地址等碎片化数据时更为高效。

来自一个朋友圈,

NoSQL的一个主要类型就是文档型NoSQL,例如 MongoDB,使用 json 结构存储数据,不需要事先定义好记录结构,自由添加删除记录中的某项,非常灵活


通过下面的这个场景,可以很好的看到NoSQL的便利性

场景 联系人列表

sql 的实现方式

我们要先定义好联系人的表结构,如

id (主键ID)
title (标题)
firstname (姓)
lastname (名)
gender (性别)
telephone (电话)
email (邮箱)
address1 (地址1)
address2 (地址2)
city (城市)

现在出现了新问题,很多人都有多个电话号码,例如 2个手机号,1个工作电话,或者其他,这时,为了可扩展性,我们需要单独建立一张电话表,就不关心联系人有多少个电话了

contact_id(联系人ID)
name (例如座机号,工作手机等)
number (电话号码)

同样的,邮箱、地址 也有这个问题,还按照上面的方式,新建 email表 和 address表

但很快,新问题又出现了,我们需要记录联系人的社交账号、他的喜好……,我们只好新建各种表来对应

这就造成了数据库管理员和开发人员都有点麻烦了,需要经常修改数据库结构,需要很多表的关联查询等

用sql来记录这种碎片化的数据就稍显费力了

NoSQL 的实现方式

每个联系人信息都是一个 json 数据,联系人列表就是一个 json 数据的集合,存储在一个文档里

例如

{

name: [ "Billy", "Bob" ],

 

company: "Corp",

 

jobtitle: "Data Management",

 

telephone: {
mobile: "9876543210",
work: "2244668800"

},

 

email: {
personal: "bob@mail.net",
work: "bob@mail.com"

},

 

address: {
home: {
line: "10 Non-Existent Street",
city: "Nowhere",
country: "Australia"
}

},

 

twitter: '@bobsfakeaccount',

 

note: "Don't trust this guy"
}

例如这个联系人多了一个电话号,直接在 telephone 中添加一个新数据项就好,例如

telephone: {
home: "0123456789",
mobile: "9876543210",
work: "2244668800"
}

又例如,现在需要记录用户的微信号了,直接在联系人的 json 中新加一个微信号的数据项即可

通个这个场景,可以看到在某些场景使用 NoSQL 会更便利一些,NoSQL已经比较成熟,可以在实际操作中多考虑下如何应用

转载于:https://www.cnblogs.com/meslog/p/5042117.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值