查看: 7169| 回复: 10
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] system design SQL vs NoSQL

全局:

2021(4-6月)-CS硕士+5-10年 | Other|BayArea湾区 工程类全职@未定

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
关于 system design 的数据库选择问题: design SQL vs NoSQL

我就自己工作中的经验来看, 基本是“完全看组里爱用啥"...
因为现在即使是用 SQL, 也是尽量少用 join, 可以当然 NoSQL 使用. . 1point3acres
如果需要 sharding, 可以自己手动 sharding (e.g. sharding userID, 存到不同 SQL DB instances)
所以经常是自己找不出很强的理由说: 哪种系统该用 SQL, 哪种该用 NoSQL
对工作中项目来说, 还有种情况, 如果是要用 transaction (e.g. purchase), SQL 要方便点.... Χ

想听听大家做 system design 时候, 针对 SQL vs NoSQL 选择的 ”标准套路答案"?? 先谢过了


上一篇:是我的幻觉吗还是今年面试的lc题变难了 new Grad
下一篇:亚麻team match求建议
地里匿名用户
推荐
匿名用户-GS9XE  2021-5-29 22:00:38
我的个人看法,这个题的答案有三种境界:
1. 认为有标准答案的(问题出在nosql 和 sql本身就不对等,对比的真实背景是在云上怎么用)
2. 认为没有标准答案的但无法提供细节tradeoff(这种是面试官最讨厌的哈哈,假大空).--
3. 认为没有标准答案可以提供案例,多个层面的tradeoff等(网上的教程不够,工作经验,主要是多个层面).google  и

但话说回来,这个问题凭平时的工作经验很难答全,平时工作首先接触nosql vs sql design讨论的机会就很少,那种做过sql nosql迁移的会对某些tradeoff印象比较深

这个问题想答好可以多看些YT上各家公司的tech talk,和官方的engineer博客. From 1point 3acres bbs
有人看兴趣的话我可以展开讲

评分

参与人数 1大米 +1 收起 理由
lonelyint + 1 赞一个

查看全部评分

回复

使用道具 举报

推荐
family2018 2021-5-30 04:20:24 | 只看该作者
全局:
回复

使用道具 举报

推荐
happynemo 2022-1-10 16:19:33 | 只看该作者
全局:
先回答几个问题。
. check 1point3acres for more.
“如果需要 sharding, 可以自己手动 sharding”。这个最好在设计中加上monitor,回答什么时候做sharding的问题。而且实际上在prod中做sharding没有那么容易。

“所以我说完 tradeoff 后,可以说 "看组里爱用啥" 么”。你可以说如果组里的已经有使用的数据库,用新的数据库会带来额外的set up和组员training的开销。如果差别不是特别明显的话,可以使用已有的数据库。

说一下自己的粗浅理解。

极端场景下的选择比较明确。比如系统需要做OLAP,需要执行ad hoc query,这些都是典型的需要使用SQL的场景。超大流量的OLTP系统,需要执行的transaction和query有限而且明确定义,典型的NoSQL。

需要注意的是,现在SQL在很多场景下也有很好的实时性和扩展性,有的NoSQL(比如DynamoDB),也支持一定程度的ACID。所以泛泛的说NoSQL用于实时应用,能scale,是不行的。

有的数据会天然适合某一类数据库。比如金融数据需要强一致性,通常用SQL。NoSQL的ACID相对传统数据库比较有限制,会不太够用,或者用起来很复杂。如果数据关系是图,那显然用graph database最合适。不需要强一致性的数据,例如social media,或者数据scheme不清楚,或者预计需求会有很大变化,用NoSQL可能是个不错的选择。.

很多非极端场景是两者都可以的,其实没有对错。我的建议是用你熟悉的系统,讲清楚你为什么这么设计,以及怎么monitor,怎么scale等更重要。如果你用自己不熟悉的系统,可能面试官多问两句就答不上来了。



回复

使用道具 举报

全局:
不需要很强的理由,但是必须得说明二者之间的不同和trade off
回复

使用道具 举报

🔗
 楼主| sntfinish 2021-5-29 11:41:02 | 只看该作者
全局:
inter1908 发表于 2021-5-29 07:00. ----
不需要很强的理由,但是必须得说明二者之间的不同和trade off

所以 interviewer 对这个的偏好也不是很明显
所以我说完 tradeoff 后,可以说 "看组里爱用啥" 么
回复

使用道具 举报

全局:
只要明白normalization和denormalization之间的区别就行了,当然transaction也可以提。. From 1point 3acres bbs

最好再吹一下cosmos DB,在说说cosmos db with gremlin API (graph),然后比较一下relationship database和graph database。
回复

使用道具 举报

全局:
sntfinish 发表于 2021-05-28 20:41:02. 1point 3acres
所以 interviewer 对这个的偏好也不是很明显
所以我说完 tradeoff 后,可以说 "看组里爱用啥" 么
可以的,有理有据就可以
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-GS9XE  2021-5-29 22:05:57
讲trade off的,某些场景只能用sql数据库,比如强一致性,可serializable的事务,普遍的nosql不提供,怎么tradeoff.1point3acres

另外所谓的nosql数据库提供商不断加feature,现在市面上流行的一些数据库,既具备sql型的一些主要优点,也具备nosql型的一些主要优点,如果面试官了解这些数据库(尤其是面大厂),你来一句最好用这个,最好用那个可能就不行了
回复

使用道具 举报

🔗
 楼主| sntfinish 2021-6-1 08:11:31 | 只看该作者
全局:
匿名者 发表于 2021-5-29 22:05
讲trade off的,某些场景只能用sql数据库,比如强一致性,可serializable的事务,普遍的nosql不提供,怎么t ...

对的, 所以我开始说有些 feature 比如 purchase 用 sql 比较好

综上所述, 貌似是能说清楚 trade off 就行.
回复

使用道具 举报

🔗
fwang 2022-1-10 05:44:28 | 只看该作者
全局:
我自己的面试经验是前后别矛盾,比如你nonfunctional requirement说,高可用牺牲掉Consistency,那最好是nosql,因为RDBMS是favor consistency over availability的。
其实现在cosmosDB/dynamo DB都牛的不像样子了,除了贵,其他各方面基本可以吊打RDBMS,也都有强一致性选项,也支持同parititon下的ACID transaction。如果面试官非说NOSQL不支持者不支持那的,只能说着面试官太水了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表