當前位置:首頁 » 數據倉庫 » 天貓商城資料庫設計
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

天貓商城資料庫設計

發布時間: 2022-04-29 05:19:05

㈠ 淘寶的資料庫怎麼搭建

我們也了解到,現在淘寶的整個的資料庫團隊在逐漸的把一些資料庫從Oracle遷移到Mysql,然後呢,把一些伺服器由小型機轉到PC server,那你們整個轉變的動機是什麼?
主要是因為業務壓力給了我們最大的動力。07年我來到淘寶的時候,當時只有三個主要的資料庫,全部在小型機和存儲上面。以當時的壓力來看,它跑起來是非常順利的,而且大家也知道小型機它從Unix操作系統到硬體,穩定性都會比PC server其實要高很多,當時的情況下淘寶用小型機是一個非常自然的選擇。
從07年開始淘寶的業務量保持每年自然翻一番的增長,資料庫質量感覺到非常大的壓力。那麼前端業務量增長一倍,在資料庫上有可能增長是好幾倍,它有一個放大效應在里邊。當時我們第一步能夠想到很自然的架構,就是把三個資料庫拆成更多的資料庫,或每一個資料庫支持一個比較單一的業務。比如用戶、商品和交易,都會分成獨立的資料庫,然後放到獨立的小型計算中去,這是我們08年做的很大的事情就是垂直拆分,然後08年的業務我們就頂住了。
當時我們就預估09年、10年會有更大的壓力增長,這個時候我們應該怎麼辦?當時我們從業界能看到很多的經驗分享,包括eBay、亞馬遜這些國外的大公司,他們的經驗分享裡面,水平拆分是我們資料庫漲到一定程度後的架構選擇。我們從Oracle到MySQL轉移,主要是用水平拆分,這是我們未來的一個弱點,那水平拆分後機器、資料庫的數量都會多很多,那Oracle它本身的成本也是我們考慮的一個重要因素,所以當時從成本考慮的話,那個時候我們自然會選擇用MySQL資料庫。
給我們再簡單總結一下這幾年,淘寶整個資料庫的演變過程?
剛才說到08年我們做完垂直拆分以後,09年到今年我們主要做的工作其實就是水平拆分。今年在十月份之前我們全部完成了淘寶最核心的三個系統:交易資料庫、商品資料庫和用戶資料庫的水平拆分。所以到「雙十一」之前,在我們內部采訪中,我一直跟采訪人員說,當時資料庫情緒穩定。基本上我們沒有做什麼事情,只是在不停的看報表,看數據,然後很開心的看到交易曲線以超過45度的趨勢往上漲。
那前期還是做了非常完善的准備。據我們了解在整個從小型機到PC server的遷移,包括從Oracle到MySQL資料庫的遷移,你們在做這個事情的時候,都做過好幾個月的壓力測試。你講講這個背景和故事。
是這樣的,今年我們年初決定,我們商品庫從小型機遷到PC server上面去,這是淘寶壓力最大的一個資料庫,當時是用四台小型機加兩個高端存儲來支撐的。要把這么大一個資料庫進行遷移,我們心裏面也是沒有底的,因為不知道要多少台PC server能夠支撐,需要什麼樣的配置來支撐這個壓力?當時我們能夠想到一個很直觀的想法就是模擬線上完全一樣的壓力,甚至加上幾倍的壓力來測它的極限值。
我們和開發團隊、我們的性能測試團隊,加上DBA團隊和ops團隊,成立了一個非常大的項目組,然後做了接近兩個月的性能測試,在整個測試過程中發現了非常多的問題,包括我們給Oracle、MySQL等廠商都提交了很多Bug,有些Bug也得到廠商回應,進行修復。
那整體的轉變的過程到現在進行到了什麼樣的程度?包括你在整個轉變的過程中遇到哪些問題?
我們現在最核心的用戶資料庫今年已經徹底完成了從小型機、存儲和Oracle切入到PC server加MySQL的架構。
我們內部有一個提法叫做去O、去I、去E,其實就是我們要從高端硬體Scale up模式到低端硬體的Scal out水平擴展的模式,這是淘寶內部最大最核心的系統,今年已經順利完成了全部區的水平擴展。其他幾個系統,比如說交易和商品已經完成了一部分,完成了水平拆分的一部分,但是沒有達到我們希望的進度,這可能是明年我們需要做的事情。
在轉型過程中主要遇到哪些問題?
讓我們覺得比較大的問題就是我們從可靠的小型機遷移到大規模,大數據量的PC server上來,從架構上就對我們就是一個非常大的挑戰。大家都知道,每一個PC server的穩定性肯定和單台小型機會有一定的差距,再加上我們一個機群有可能是32台或者64台PC server。每一台PC server即使有四個9的可用性,但如果我們整個系統合在一起,可能它最後的兩個9的可用性都達不到。這就需要我們從軟體層、架構層要做非常多的改進,能夠要讓單點的一些失效對整體的系統不造成任何影響,因為我們和架構部門、開發部門一起做了很多事情,才能保證我們的集群穩定上線。
其實「雙十一」這個時間應該說是對過去的技術轉變的檢驗,現在回頭來看,這個檢驗的結果怎麼樣?
當時是有點提心吊膽的,之後又覺得相對來說今年我們做的很多事情還是非常成功的。但是現在再回頭仔細想想還是有點後怕,「雙十一」那天的凌晨零點不是有一次Ipad的秒殺嗎,當天晚上我們都在線上觀察數據,在零點的一瞬間,就看到所有資料庫指標已經達到了以前正常時候最高峰的指標,有些甚至還超過了。
當天晚上睡覺的時候心裡就有點在打鼓:才零點就這個樣子了,明天下午明天晚上最高峰的時候我們應該怎麼渡過?所以第二天早上八點多的時候我們一進到指揮部裡面就看到所有的指標, 包括CDN的指標、各個業務線的指標、資料庫的指標都是噌噌的往上漲,這時心裏面其實是很忐忑不安的。
但是我們比較放心的是這三大核心系統,商品、用戶和交易,在我們今年所有的水平擴展項目做完了以後,比如說商品功能做完了以後,從我們的機械壓測裡面它是有十倍的流量的,所以當天百分之一百,百分之兩百的流量基本上對資料庫沒有造成太大的影響,所以當時還是很開心的看到這個指標快速的往上漲,希望交易能夠通過10個億、20個億,我覺得都是能夠承受的。
那對於整個資料庫架構的演進下一步有什麼打算?
下一步其實就是剛剛說的我們有幾個核心系統還沒有完全的做到這個水平擴展,加上「雙十一」那天我們還是有一個小驚險:我們有一個資料庫,跟交易核心有一點點聯系的,但它還是放在小型機上面,當時已經提前為它准備了百分之一百的餘量,就是說它可以承擔平時最高壓力的兩倍。
但是那天已經達到平時最高壓力的1.8倍左右的時候,把我們嚇出了一身冷汗。如果當時淘寶的交易最高峰的流量再增長20%的話,有可能資料庫就會到瓶頸了。所以我們明年是要把更多這種Scale up能夠看到天花板的資料庫全部要拆分成水平庫存這種資料庫。
那你剛才所提到的去Oracle,去小型機,去高端存儲,這個「三去」的整體思路給淘寶網帶來了哪些經濟上的效應?
當時我們知道小型機和存儲的價格是非常昂貴的,還是拿我們剛才說壓力最大的商品資料庫舉個例子,當初我們資料庫是用了四台高端的小型機,兩套高端的存儲,成本加起來起碼都是三千萬以上。那目前我們用的是32台PC server來搭建的一個機群,價格也就是300萬~500萬的級別。相對來說我們做完這個事情以後,解決了兩三千萬的硬體成本。
這樣來講,整體的經濟效益還是非常不錯的。但是其實剛才我們在前期溝通的時候也提到,你要從Oracle轉到MySQL,包括從小型機轉到PC server,其實裡面還是會遇到蠻多問題的,包括它的不穩定性等等,那對於這一方面你有沒有什麼經驗可談?
在這一方面,我覺得有兩個很重要的因素。第一個是我們需要和我們的開發前端應用架構部門能夠緊密的合作,能夠讓我們的應用融入剛才說的整個機群的單點失效和容災的問題。都需要我們和架構部門一起來考慮的;第二個比較大的經驗就是目前我們在做的,深入研究MySQL的源代碼。我們從研究和壓力測試的過程中,發現MySQL它本身代碼的一些缺陷,可能在高並發大壓力下會有很多隱藏的Bug。
在我們最近的這次測試當中,我們還發現了Facebook發布的FlashCache二級緩存的軟體,當時我們是測出它一個非常大的Bug:並發壓力非常大的情況下,它會導致MySQL成為一個僵屍進程。我們發現了以後,很快反饋給Face book,然後Face book很快就修復了這個問題,這也是我們對使用開源軟體帶來更大的一個信心,就是開源能夠在全球得到更多的支持,大家都能夠從原代碼層面來解決更深層次的一個問題。
我想這也可能是淘寶技術團隊現在那麼開放,那麼注重開源的動力之一。那如果說想對MySQL的一些核心代碼做編譯,就需要對人才的儲備,包括各方面資源整合的要求還是蠻大的,那你在這方面有沒有什麼感觸?
說到人才這個話題,08年的時候,淘寶當時准備大規模的往MySQL方向上轉,我們內部也是有一些置疑的聲音。他們說淘寶DDA團隊以前都是在Oracle方面比較專精,在業界來說,淘寶的DDA團隊在Oracle方面更加有名氣一些。所以我們內部有置疑的聲音。就是說你們有MySQL專家嗎,MySQL出問題了以後能很快的解決嗎?所以從08年到現在,我們慢慢的一路走過來,內部培養了很多的MySQL的人才,包括這幾年我們的應屆生的成長,再加上我們從外部招到一些專家,我們對MySQL的理解已經越來越深。
剛才說到,我們已經能夠給MySQL打Patch,已經能夠給MySQL report這些Bug。到現在為止,我覺得MySQL的成長已經達到了非常高的一個程度,我們對MySQL已經越來越有信心,但是未來淘寶的MySQL肯定是要做得越來越大的,淘寶還有很多小型機上面擴展不太容易的系統需要遷移到可擴展的機群上面來,但我們也希望業界能夠有更多的MySQL夥伴加入我們,和我們一起來做這么一件非常有意義的事情。
我想能夠加入到淘寶的技術團隊,去經歷那麼多有大交易量的技術實踐還是非常寶貴的。另外一個問題就是雖然說現在我們用的越來越多的是MySQL,但是現在大家也知道MySQL已經被Oracle收購了,那對像淘寶這樣的團隊有什麼影響呢?
大家都知道MySQL其實是基於GPL的協議來開源的軟體,那淘寶在使用過程中,前期是已經考慮到一些風險。所以我們所有的MySQL都是自己來做編譯做優化的,而且我想MySQL被Oracle收購了以後,現在看起來Oracle應該是給MySQL在開發這方面是提供了更大的幫助,像之前在Sun的時候,MySQL的版本相對來說是比較混亂的,包括我們現在在用的5.0和5.1的正式版本,最近還有包括開發方面就還有兩個,一個6.0,一個5.4,這些特性會互相交織在一起,讓我們選擇的時候也有點不知道到底選哪個版本會更好一點。但現在Oracle收購MySQL以後,他把5.4跟6.0這些版本已經合成了一個比較規范的5.5的版本,並且為它制訂了很好的一個milestone15:31,未來要怎麼發展這個里程碑,M1、M2、M3、M4這種發展方向,而到現在為止這個5.5已經發展到5.6、5.7的版本,而且已經是IC版本了,很快就要GA了,那我想這對於MySQL來說應該是一個好消息。我們可以用到更多更穩定的新特性, 5.5版本里有幾個新的特性是我們非常關注的,比如Google已經達到英文15:57這個pach,所以我們覺得對我們未來的這個MySQL這個系統非常有用的一個功能。那我們也等著Oracle的5.5這個版本能夠盡快的GA出來。

㈡ 做一個類似淘寶的購物商城資料庫需要哪些表

開發網站啊
我們學校給的作業,JSP+oracle
我想做一個類似淘寶與趕集網的結合體,但資料庫不知該如何設計。五個人一起開發
大概有兩個月的時間

㈢ 淘寶用的什麼資料庫

淘寶選擇的是MySQL的MyISAM引擎作為底層的數據存儲引擎。

且為了應對海量數據,他們設計了分布式MySQL集群的查詢代理層-MyFOX

㈣ 這么資料庫設計合理嗎符合八個範式嗎淘寶網資料庫也這樣

這樣資料庫設計合理嗎?符合八個範式嗎?淘寶網資料庫也這樣 大潤發超市進銷存資料庫 入庫表 起初庫存表 當前庫存表 出庫表 有新產品入庫時,插入到入庫表,起初庫存表[與此同時,一個觸發器,更新一下當前庫存表] 有產品出庫時,插入到出庫表[與此同時,一個觸發器,更新一下當前庫存表] 請問,這樣的觸發器如何寫嗎?能實現這般復雜的東西。淘++++寶++++網資料庫是如何設計嗎呢?他人講,這般頻繁使用觸發器會出問題。 ------解決方案-------------------------------------------------------- 在一個事務嗎 ------解決方案-------------------------------------------------------- 觸發器能不用就不用。直接使用修改。比如說插入到入庫表,起初庫存表之後,再更新當前庫存表。別使用觸發器,根本也沒有必要。 ------解決方案-------------------------------------------------------- 一般來說互聯網行業的數據,不會使用觸發器,不會使用存儲過程,不會使用外鍵,不會使用關聯查詢! ------解決方案-------------------------------------------------------- 大型互聯網應用的資料庫基本上都會採用水平和垂直進行分表分庫處理,這樣的分表分庫對應用來說是透明的。 像一些交易歷史數據,原來只能查三個月之內的,不過現在已經遷到 HBase 上去了,可以查詢所有的了。 ------解決方案-------------------------------------------------------- 互聯網的資料庫結構有很多的冗餘,基本上不可能符合範式。

㈤ 如何利用淘寶網資料庫的結構,來提高自己的商品排名

你建個淘寶用戶 用到的欄位你都可以列出來 自己總結的好 分別放到不同的數據表下 建立主鍵及關系圖 既然問這個級別的問題就多練習下吧

㈥ 淘寶購物車的資料庫怎麼設計

無非兩種:
一種就是把購物車里的商品存在資料庫里
另一種就是用session或者cookie這種方式存儲在客戶端。
如果你是使用.net開發,那麼可以直接把添加購物車信息的函數放到「加入購物車」按鈕的事件里,如果是asp這種的,你可以做一個加入購入車動作的頁面,用來處理商品加入購物車的動作。
這個頁面接受商品信息和來自頁面的url,處理完畢直接response回去就可以了!

㈦ 天貓商城資料庫該怎樣分析呢

讓人在公共廁所里不再亂塗亂化而是紛紛對它引經據典的好帖

㈧ 請教 如淘寶網商品上架時間一到就自動下架,這是怎麼做的 sql server 資料庫要如何設計

我估計是有一個後台的作業, 周期處理需要下架的商品。

如果是 sql server 資料庫
那麼首先寫一個存儲過程
第一步是檢索,當前過期的數據。
第二步是把過期的數據,做一個處理的操作。
然後在作業裡面,每隔一段時間,處理一次。

當然了,理論上說,網頁上門,應該也有那個過期時間的判斷。
畢竟這個 存儲過程,也不能執行得太頻繁的。
間隔時間太短的話,會影響整體的性能的。

㈨ 淘寶的資料庫中商品表是怎麼設計的

您好
3個表,一個放訂單,有訂單號、下單時間、下單客戶等信息。
另一個放訂單包含的商品,有商品id,折扣,數量。一個訂單可以包含一個或多個商品。
再一個表放送貨地址、發票、付款方式等亂七八糟信息。

僅供參考~

㈩ 淘寶的資料庫怎麼搭建

淘寶的整個的資料庫團隊在逐漸的把一些資料庫從Oracle遷移到MySQL,然後呢,把一些伺服器由小型機轉到PC server,MySQL其實是基於GPL的協議來開源的軟體,那淘寶在使用過程中,前期是已經考慮到一些風險。
MySQL的版本相對來說是比較混亂的,包括我們現在在用的5.0和5.1的正式版本,最近還有包括開發方面就還有兩個,一個6.0,一個5.4,這些特性會互相交織在一起,讓我們選擇的時候也有點不知道到底選哪個版本會更好一點。
做網站的時候要找出性價比更高的合作夥伴,從價格,服務,技術等多方面考慮,而不是為做網站而做網站,不懂網站SEM的或只懂技術的最好別用,SEO的目的。