第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

當對你的業(yè)務進行數(shù)據(jù)庫選型時,你真的會選擇嗎?

数据库选型的背景

随着计算机技术的发展,数据库已经成为计算机系统里面最不可或缺的关键基础设施之一。相比于其他基础设施软件,如操作系统、编译器等,数据库不仅需要提供基础功能,还要于业务发生联动,并通过提供更广泛的能力来满足不同的业务诉求。
特别是,数据库软件相比于操作系统等软件,具有更多的可选择性,不同的数据库软件也是各有特色。这就面临着,我们在真实的业务场景中,需要根据业务诉求的不同进行技术选型。
但是,面对复杂的数据库软件系统,你真的会选择吗?

常规选型方式

有的人说,对于关系型数据库,就无脑选择MySQL就行了,反正业内就是这么用的。而如果是商业版应用,那就选择Oracle即可。这种说法在某些场景下是ok的,但是对某些具体的业务诉求来说,可能就是埋了个坑。
首先,对于数据库来说,上面两种数据库都是典型的OLTP业务场景下的选型。虽然Oracle具备较强的OLAP能力,但是这毕竟是商业数据库,对于绝大多数小公司或者互联网公司来说,是根本不在选型列表里的。
那么,对于互联网业务,首先需要做的就是识别业务场景,看看数据规模如何,数据模型是什么,是否需要选择关系型数据库,是否需要支持较强的可扩展性,是否能够容忍数据丢失,要求的端到端性能指标是多少等等。

选型示例

以类似微博这种应用场景为例,我们不妨进行一个简单的系统设计。

  1. 首先,需要有一个表结构来记录用户信息,这个表结构需要有一个主键,来记录用户的唯一id
  2. 需要存在一个记录信息流的地方,由于信息流非常大,这里需要面对处理大量数据的场景
  3. 需要有地方承载起他用户评论、点赞、转发等相关信息
  4. 需要具备缓存能力,否则当业务规模很大的时候,无法及时响应用户信息
  5. 如果具备缓存能力,我们虽然提升了响应速度,但是这个缓存的数据可能及时性又不够强,完全存在用户看到的数据不是最新数据的情况
  6. 对于搜索场景,如何进行快速的检索?

对于这个业务场景中存在的系统设计问题,我们只是进行了非常粗浅的讨论,便可以列举出一系列的问题,这里面我们做一个简单的总结,即在不同的业务场景中,我门可能需要面对的是不同数据规模、数据一致性、响应速度、可用性等问题。这里面其实都可以通过关系数据库来承载,也可以通过进行SQL语句进行业务抽象。但是MySQL显然不可以胜任,这就需要我们选择其他更适合的数据库产品了,例如ClickHouse,Cassandra等。

其中,如果我们识别到数据等价值密度很大,一点都不能出错(例如银行转账场景,或者用户充值场景)那就必须要选择ACID完整性支持很好的数据库,否则真出现问题的时候,面临的是公司破产的风险。至于这里为什么?其实事务本身的特性就已经告诉我么答案了。

总结

更进一步地,我们其实也能看出来,如果想要更深入地理解数据库选型,那我们必须更深入地理解数据库的特点,那么我们就必须更了解数据库的底层原理和实现机制。只有知其然,才能知其所以然,才能真正做到万变不离其宗地理解业务系统、数据库系统乃至整个计算机软件系统的底层原理。

有关更多关于数据库底层原理实现,大家可以关注我的新课《从0到1带你手写一个数据库系统》课程,链接:https://coding.imooc.com/class/711.html

點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消