地里新农-请到考试中心学习规则
- 积分
- 1
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2021-8-5
- 最后登录
- 1970-1-1
|
先回答几个问题。
“如果需要 sharding, 可以自己手动 sharding”。这个最好在设计中加上monitor,回答什么时候做sharding的问题。而且实际上在prod中做sharding没有那么容易。. From 1point 3acres bbs
“所以我说完 tradeoff 后,可以说 "看组里爱用啥" 么”。你可以说如果组里的已经有使用的数据库,用新的数据库会带来额外的set up和组员training的开销。如果差别不是特别明显的话,可以使用已有的数据库。
. check 1point3acres for more.
说一下自己的粗浅理解。
极端场景下的选择比较明确。比如系统需要做OLAP,需要执行ad hoc query,这些都是典型的需要使用SQL的场景。超大流量的OLTP系统,需要执行的transaction和query有限而且明确定义,典型的NoSQL。. 1point 3 acres
需要注意的是,现在SQL在很多场景下也有很好的实时性和扩展性,有的NoSQL(比如DynamoDB),也支持一定程度的ACID。所以泛泛的说NoSQL用于实时应用,能scale,是不行的。 ..
有的数据会天然适合某一类数据库。比如金融数据需要强一致性,通常用SQL。NoSQL的ACID相对传统数据库比较有限制,会不太够用,或者用起来很复杂。如果数据关系是图,那显然用graph database最合适。不需要强一致性的数据,例如social media,或者数据scheme不清楚,或者预计需求会有很大变化,用NoSQL可能是个不错的选择。
很多非极端场景是两者都可以的,其实没有对错。我的建议是用你熟悉的系统,讲清楚你为什么这么设计,以及怎么monitor,怎么scale等更重要。如果你用自己不熟悉的系统,可能面试官多问两句就答不上来了。
|
|