0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TableStore實(shí)現(xiàn)億級訂單數(shù)據(jù)庫管理

電子設(shè)計 ? 2018-10-26 10:12 ? 次閱讀

訂單系統(tǒng)存在于各行各業(yè),如電商訂單、銀行流水、運(yùn)營商話費(fèi)賬單等,是一個非常廣泛、通用的系統(tǒng)。對于這類系統(tǒng),在過去十幾年發(fā)展中已經(jīng)形成了經(jīng)典的做法。但是隨著互聯(lián)網(wǎng)的發(fā)展,以及各企業(yè)對數(shù)據(jù)的重視,需要存儲和持久化的訂單量越來越大。數(shù)據(jù)的重視程度與數(shù)據(jù)規(guī)模的膨脹帶來了新的挑戰(zhàn)。

需求場景

某電商平臺A,需要進(jìn)行持久化所有平臺產(chǎn)生的訂單數(shù)據(jù)。同時,基于所有的訂單數(shù)據(jù),系統(tǒng)又需要向外提供面向多種角色:消費(fèi)者、店家、平臺三類人群的多元化的查詢服務(wù)。消費(fèi)者可以查詢自己的歷史訂單,商家可以統(tǒng)計熱銷產(chǎn)品,平臺也可以分析用戶行為、平臺交易規(guī)模等。主要查詢方式涵蓋訂單的多維度檢索,以及訂單數(shù)據(jù)的分析、統(tǒng)計等,例如:

面向消費(fèi)者:【A消費(fèi)者】*【近1年】*【賣出電腦】訂單查詢;

面向售貨員:【B售貨員】*【近1個月】銷售訂單;

。。.。。.

技術(shù)點(diǎn)

在訂單場景中,技術(shù)上通常需要考慮的技術(shù)點(diǎn),主要包含如下幾個方面:

查詢能力:需要具備豐富的查詢類型,如多維度、范圍、模糊查詢等,同時具備排序、統(tǒng)計等功能;

數(shù)據(jù)量:存儲海量數(shù)據(jù)的同時,滿足強(qiáng)一致、高可用、低成本等要求;

服務(wù)性能:應(yīng)對高并發(fā)請求高并發(fā)的同時,保證低延遲;

實(shí)現(xiàn)多維、實(shí)時查詢功能,是訂單管理解決方案的核心功能,官網(wǎng)控制臺地址:項(xiàng)目樣例

二、方案演進(jìn)

應(yīng)對訂單場景,電商通常會采用MySQL傳統(tǒng)方案。借助關(guān)系型數(shù)據(jù)庫強(qiáng)大的查詢能力,用戶可直接通過SQL語句實(shí)現(xiàn)訂單數(shù)據(jù)的多維度查詢、數(shù)據(jù)統(tǒng)計等。所謂數(shù)據(jù)膨脹,分為橫向、縱向兩種,橫向即不斷迭代引入的新字段維度,縱向即總的存儲數(shù)據(jù)量。在面對這兩種訂單數(shù)據(jù)膨脹上,單MySql方案逐漸變得吃力。 SQL + NoSQL的組合方案(以下稱:組合方案)便應(yīng)運(yùn)而生,借助兩個數(shù)據(jù)庫各自的優(yōu)勢分別解決不同場景各自的需求。但組合方案同樣也帶來了新的問題,組合方案犧牲空間成本,同時也增加了開發(fā)工作量與運(yùn)維復(fù)雜度。在保證數(shù)據(jù)一致性上產(chǎn)生額外開銷。

下面讓我們看一下如下幾個常規(guī)方案:

常規(guī)方案

1、MySql分庫分表方案

MySql自身擁有強(qiáng)大的數(shù)據(jù)查詢、分析功能,基于MyQql創(chuàng)建訂單系統(tǒng),可以應(yīng)對訂單數(shù)據(jù)多維查詢、統(tǒng)計場景。伴隨著訂單數(shù)據(jù)量的增加,用戶會采取分庫、分表方案應(yīng)對,通過這種偽分布式方案,解決數(shù)據(jù)膨脹帶來的問題。但數(shù)據(jù)一旦達(dá)到瓶頸,便需要重新創(chuàng)建更大規(guī)模的分庫+數(shù)據(jù)的全量遷移,麻煩就會不斷出現(xiàn)。數(shù)據(jù)迭代、膨脹帶來的困擾,是MySql方案難于逾越的。僅僅依靠MySql的傳統(tǒng)訂單方案短板凸顯。

1、數(shù)據(jù)縱向(數(shù)據(jù)規(guī)模)膨脹:采用分庫分表方案,MySql在部署時需要預(yù)估分庫規(guī)模,數(shù)據(jù)量一旦達(dá)到上限后,重新部署并做數(shù)據(jù)全量遷移;

2、數(shù)據(jù)橫向(字段維度)膨脹:schema需預(yù)定義,迭代新增新字段變更復(fù)雜。而維度到達(dá)一定量后影響數(shù)據(jù)庫性能;

2、MySql+HBase方案

引入雙數(shù)據(jù)的方案應(yīng)運(yùn)而生,通過實(shí)時數(shù)據(jù)、歷史數(shù)據(jù)分存的方案,可以一定程度解決數(shù)據(jù)量膨脹問題。該方案將數(shù)據(jù)歸類成兩部分存儲:實(shí)時數(shù)據(jù)、歷史數(shù)據(jù)。同時通過數(shù)據(jù)同步服務(wù),將過期數(shù)據(jù)同步至歷史數(shù)據(jù)。

1、實(shí)時訂單數(shù)據(jù)(例如:近3個月的訂單):將實(shí)時訂單存入MySql數(shù)據(jù)庫。實(shí)時訂單的總量膨脹的速度得到了限制,同時保證了實(shí)時數(shù)據(jù)的多維查詢、分析能力;

2、歷史訂單數(shù)據(jù)(例如:3個月以前的訂單):將歷史訂單數(shù)據(jù)存入HBase,借助于HBase這一分布式NoSql數(shù)據(jù)庫,有效應(yīng)對了訂單數(shù)據(jù)膨脹困擾。也保證了歷史訂單數(shù)據(jù)的持久化;

但是,該方案犧牲了歷史訂單數(shù)據(jù)對用戶、商家、平臺的使用價值,假設(shè)了歷史數(shù)據(jù)的需求頻率極低。但是一旦有需求,便需要全表掃描,查詢速度慢、IO成本很高。而維護(hù)數(shù)據(jù)同步又帶來了數(shù)據(jù)一致性、同步運(yùn)維成本飆升等難題;

3、MySql+Elasticsearch方案

組合方案還有MySql+Elasticsearch,該方案同樣是將數(shù)據(jù)分兩部分存儲,可以一定程度解決訂單索引維度增長問題。用戶自己維護(hù)數(shù)據(jù)同步服務(wù),保證兩部分?jǐn)?shù)據(jù)的一致性;

1、全量數(shù)據(jù):將全量的訂單數(shù)據(jù)存入MySql數(shù)據(jù)庫,訂單ID之外的數(shù)據(jù)整體存為一個字段。該全量數(shù)據(jù)作為持久化存儲,也用于非索引字段的反查;

2、查詢數(shù)據(jù):僅將需要檢索的字段存入Elasticsearch(基于Lucene分布式索引數(shù)據(jù)庫),借助于Elasticsearch的索引能力,提供可以應(yīng)付維度膨脹的訂單數(shù)據(jù),然后必要時反查MySql獲取訂單完整信息;

該方案應(yīng)付了數(shù)據(jù)維度膨脹帶來的困擾,但是隨著訂單量的不斷膨脹,MySql擴(kuò)展性差的問題再次暴露出來。同時數(shù)據(jù)同步至Elasticsearch的方案,開發(fā)、運(yùn)維成本很高,方案選擇也存在弊端。

表格存儲(TableStore)方案

如果使用表格存儲(TableStore)研發(fā)的多元索引(SearchIndex)方案,則可以完美地解決億量級訂單系統(tǒng)問題。TableStore具有即開即用,按量收費(fèi)等特點(diǎn)。多元索引隨時創(chuàng)建,是海量電商訂單元數(shù)據(jù)管理的優(yōu)質(zhì)方案。

TableStore作為阿里云提供的一款全托管、分布式NoSql型數(shù)據(jù)存儲服務(wù),具有【海量數(shù)據(jù)存儲】、【熱點(diǎn)數(shù)據(jù)自動分片】、【海量數(shù)據(jù)多維檢索】等功能,天然地解決了訂單數(shù)據(jù)大爆炸這一挑戰(zhàn);

同時,SearchIndex功能在保證用戶數(shù)據(jù)高可用的基礎(chǔ)上,提供了數(shù)據(jù)多維度搜索、統(tǒng)計等能力。針對多種場景創(chuàng)建多種索引,實(shí)現(xiàn)多種模式的檢索。用戶可以僅在需要的時候創(chuàng)建、開通索引。由TableStore來保證數(shù)據(jù)同步的一致性,這極大的降低了用戶的方案設(shè)計、服務(wù)運(yùn)維、代碼開發(fā)等工作量。

基于表格存儲搭建的訂單系統(tǒng)頁面一覽

樣例內(nèi)嵌在表格存儲控制臺中,用戶可登錄控制臺體驗(yàn)系統(tǒng)(若為表格存儲的新用戶,需要點(diǎn)擊開通服務(wù)后體驗(yàn),開通免費(fèi),訂單數(shù)據(jù)存儲在公共實(shí)例中,體驗(yàn)不消耗用戶存儲、流量、Cu)。

注:該樣例提供了【億量級】訂單數(shù)據(jù)。官網(wǎng)控制臺地址:項(xiàng)目樣例

二、搭建準(zhǔn)備

若您對于億量級訂單系統(tǒng)的體驗(yàn)不錯,希望開始自己系統(tǒng)的搭建之旅,只需按照如下步驟便可以著手搭建了:

1、開通表格存儲

通過控制臺開通表格存儲服務(wù),表格存儲即開即用(后付費(fèi)),采用按量付費(fèi)方式,已為用戶提供足夠功能測試的免費(fèi)額度。表格存儲官網(wǎng)控制臺、免費(fèi)額度說明。

2、創(chuàng)建實(shí)例

通過控制臺創(chuàng)建表格存儲實(shí)例,選擇支持多元索引的Region。(當(dāng)前階段SearchIndex功能尚未商業(yè)化,暫時開放北京、上海、深圳、杭州四地,后續(xù)逐漸開放)

創(chuàng)建實(shí)例后,提交工單申請多元索引功能邀測(商業(yè)化后默認(rèn)打開,不使用不收費(fèi))。

邀測地址:提工單,選擇【表格存儲】》【產(chǎn)品功能、特性咨詢】》【創(chuàng)建工單】,申請內(nèi)容如下:

問題描述:請?zhí)顚憽旧暾圫earchIndex邀測】

機(jī)密信息:請?zhí)顚憽镜赜?實(shí)例名】,例:上海+myInstanceName

3、SDK下載

使用具有多元索引(SearchIndex)的SDK,官網(wǎng)地址,暫時java、go、node.js三種SDK增加了新功能

java-SDK

go-SDK

$ go get github.com/aliyun/aliyun-tablestore-go-sdk

4、表設(shè)計

訂單系統(tǒng)不僅僅是訂單一張數(shù)據(jù)表,它應(yīng)包含:消費(fèi)者表、售貨員表、產(chǎn)品表、供貨商表、交易訂單表、支付訂單表等。在本樣例中,豬腰使用最基本的四張表(消費(fèi)者表、售貨員表、產(chǎn)品表、交易訂單表),僅以訂單表舉例如下:

表名:order_contract

三、開始搭建(核心代碼)

1、創(chuàng)建數(shù)據(jù)表

四張表:訂單表、消費(fèi)者表、售貨員表、產(chǎn)品表

用戶僅需維護(hù)一個實(shí)例,按如下方式創(chuàng)建:通過控制臺創(chuàng)建、管理數(shù)據(jù)表(用戶也可以通過SDK直接創(chuàng)建):

2、創(chuàng)建數(shù)據(jù)表索引

TableStore自動做全量、增量的索引數(shù)據(jù)同步:用戶可以通過控制臺創(chuàng)建、管理SearchIndex(用戶也可通過SDK創(chuàng)建):

3、數(shù)據(jù)導(dǎo)入

插入部分測試數(shù)據(jù)(控制臺樣例中插入了1億條數(shù)據(jù),用戶自己可以通過控制臺插入少量測試數(shù)據(jù));

4、數(shù)據(jù)讀取

數(shù)據(jù)讀取分為兩類:

主鍵讀取

基于原生表格存儲的主鍵列獲?。篻etRow, getRange, batchGetRow等。主鍵讀取用于索引(自動)反查,用戶也可以提供主鍵(訂單md5)的單條查詢的頁面,億量級下查詢速度極快。單主鍵查詢方式不支持多維度檢索;

索引讀取

基于新SearchIndex功能Query:search接口。用戶可以自由設(shè)計索引字段的多維度條件組合查詢。通過設(shè)置選擇不同的查詢參數(shù),構(gòu)建不同的查詢條件、不同排序方式;目前支持:精確查詢、范圍查詢、前綴查詢、匹配查詢、通配符查詢、短語匹配查詢、分詞字符串查詢,并通過布爾與、或組合。

如【c0001號消費(fèi)者,且消費(fèi)在99.99以上的訂單】組合方式如下:

作者:云棲社區(qū) wangtantan

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7077

    瀏覽量

    89161
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    817

    瀏覽量

    26622
收藏 人收藏

    評論

    相關(guān)推薦

    常見的數(shù)據(jù)庫管理

    大型數(shù)據(jù)庫(大型機(jī))Oracle(),中型數(shù)據(jù)庫(分布式超大型)mysql(百萬),輕型數(shù)據(jù)庫
    的頭像 發(fā)表于 10-10 16:19 ?2094次閱讀

    數(shù)據(jù)庫管理系統(tǒng)層次安全技術(shù)

    數(shù)據(jù)庫管理系統(tǒng)層次安全技術(shù) 數(shù)據(jù)庫系統(tǒng)的安全性很大程度上依賴于數(shù)據(jù)庫管理系統(tǒng)。如果數(shù)據(jù)庫
    發(fā)表于 06-17 07:45 ?725次閱讀

    Informix數(shù)據(jù)庫管理

    Informix數(shù)據(jù)庫管理: 一、Informix數(shù)據(jù)庫的安裝
    發(fā)表于 08-01 15:29 ?1308次閱讀

    數(shù)據(jù)庫管理系統(tǒng)(DBMS)是什么意思

    數(shù)據(jù)庫管理系統(tǒng)(DBMS)是什么意思 數(shù)據(jù)庫管理系統(tǒng)提供了定義數(shù)
    發(fā)表于 03-18 15:21 ?1.1w次閱讀

    iPhone訂單數(shù)量被砍證據(jù)確鑿 高通、博通都有所暗示

    之前有傳聞蘋果大幅削減iPhone訂單數(shù)量應(yīng)該是蘋果應(yīng)對智能手機(jī)市場未來增長減緩的一種策略。而且蘋果今后調(diào)制解調(diào)器很可能會和intel合作,所以高通的數(shù)量大量被消減也是正常的。但是還是存在不認(rèn)
    發(fā)表于 02-01 14:19 ?564次閱讀

    目前流行的數(shù)據(jù)庫_構(gòu)建數(shù)據(jù)庫系統(tǒng)的流程

    本文主要介紹了目前流行的數(shù)據(jù)庫以及構(gòu)建數(shù)據(jù)庫系統(tǒng)的流程??梢园?b class='flag-5'>數(shù)據(jù)庫定義為數(shù)據(jù)的集合,或者說數(shù)據(jù)庫就是為了
    發(fā)表于 02-04 11:22 ?7158次閱讀

    數(shù)據(jù)庫教程之數(shù)據(jù)庫的創(chuàng)建與管理詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫教程之數(shù)據(jù)庫的創(chuàng)建與管理詳細(xì)資料免費(fèi)下載。內(nèi)容包括了:SQL Server數(shù)據(jù)庫概述, 創(chuàng)建數(shù)據(jù)庫,修改
    發(fā)表于 10-19 10:41 ?18次下載
    <b class='flag-5'>數(shù)據(jù)庫</b>教程之<b class='flag-5'>數(shù)據(jù)庫</b>的創(chuàng)建與<b class='flag-5'>管理</b>詳細(xì)資料免費(fèi)下載

    iPhone XR銷售不如預(yù)期 蘋果開始削減訂單數(shù)

    11月12日,援引兩位知情人士的話稱,價格稍低的iPhone XR銷售不如預(yù)期,蘋果已經(jīng)向兩家中國組件商發(fā)出通知,削減訂單數(shù)量。
    發(fā)表于 11-21 15:30 ?654次閱讀

    數(shù)據(jù)庫管理系統(tǒng)的功能

    本視頻主要詳細(xì)介紹了數(shù)據(jù)庫管理系統(tǒng)的功能,分別是數(shù)據(jù)定義、數(shù)據(jù)操作、數(shù)據(jù)庫的運(yùn)行管理、
    的頭像 發(fā)表于 02-22 15:52 ?5935次閱讀

    數(shù)據(jù)庫系統(tǒng)的三模式

    數(shù)據(jù)庫領(lǐng)域公認(rèn)的標(biāo)準(zhǔn)結(jié)構(gòu)是三模式結(jié)構(gòu),它包括外模式、模式和內(nèi)模式,有效地組織、管理數(shù)據(jù),提高了數(shù)據(jù)庫的邏輯獨(dú)立性和物理獨(dú)立性。用戶
    的頭像 發(fā)表于 02-22 16:32 ?5428次閱讀

    華為5G訂單數(shù)量被愛立信反超

    2020年對于華為而言,可謂是諸事不順的一年,美國不斷加大制裁力度,致使華為手機(jī)業(yè)務(wù)、通信業(yè)務(wù)都受到了一定程度的影響。華為手機(jī)市場份額正在快速萎縮,5G訂單更是長時間陷入停滯更新的狀態(tài),這也導(dǎo)致華為5G訂單數(shù)量被其他廠商輕松反超。
    發(fā)表于 12-31 10:16 ?721次閱讀

    華為將縮減今年智能手機(jī)訂單數(shù)

    多家供應(yīng)商透露,華為已通知將縮減今年智能型手機(jī)訂單數(shù)量,預(yù)計訂單降幅達(dá)到60%。
    的頭像 發(fā)表于 02-22 11:05 ?1704次閱讀

    10種減少數(shù)據(jù)庫誤操作的方法

    無論是開發(fā)、測試,還是DBA,都難免會涉及到數(shù)據(jù)庫的操作,比如:創(chuàng)建某張表,添加某個字段、添加數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)等等。 正常
    的頭像 發(fā)表于 10-13 17:12 ?2756次閱讀

    特斯拉開啟“全球降價”后特斯拉訂單數(shù)環(huán)比漲500%

    特斯拉開啟“全球降價”后特斯拉訂單數(shù)環(huán)比漲500% 現(xiàn)在特斯拉把價格戰(zhàn)推向全球;特斯拉開啟“全球降價”后特斯拉訂單數(shù)環(huán)比漲500%??磥泶蠹疫€是很誠實(shí),特斯拉開啟“全球降價”就很多人誠實(shí)的下單了
    的頭像 發(fā)表于 01-17 16:54 ?9942次閱讀
    特斯拉開啟“全球降價”后特斯拉<b class='flag-5'>訂單數(shù)</b>環(huán)比漲500%

    MySQL數(shù)據(jù)庫管理與應(yīng)用

    MySQL數(shù)據(jù)庫管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被認(rèn)為是最流行和最常見的開源數(shù)據(jù)庫之一。它可以被用于多種不同的應(yīng)
    的頭像 發(fā)表于 08-28 17:15 ?981次閱讀