新聞中心
近在工作中我需要把數(shù)據(jù)從公共的Data Warehouse(數(shù)據(jù)倉(cāng)庫(kù))導(dǎo)出來(lái),放到屬于我們team自己賬號(hào)的云端存儲(chǔ)資源中去,然后再在我們的應(yīng)用中查詢這樣的資源。需要導(dǎo)出數(shù)據(jù)是因?yàn)橹苯?從Data Warehouse查詢數(shù)據(jù)是一個(gè)緩慢而且異步的過(guò)程,而我們的應(yīng)用數(shù)據(jù)查詢需要實(shí)時(shí)性?,F(xiàn)在要解決這個(gè)問(wèn)題有一些AWS的服務(wù)可供我們可以選擇,基本上 分成了兩大類(lèi):

成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的鄂州網(wǎng)站建設(shè)公司,鄂州接單;提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鄂州網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
第一類(lèi)是存儲(chǔ)和內(nèi)容分發(fā)(Storage & Content Delivery):
- CloudFront:CloudFront是用于內(nèi)容分發(fā)給不同地區(qū)用戶的,它在全球設(shè)有數(shù)個(gè)“edge”,作為臨近網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù)的入口。就如同大網(wǎng)站建立的CDN設(shè)備一樣。這顯然不是我需要的。
- Glacier:Glacier非常用來(lái)適合存儲(chǔ)不常用的、壓縮的和備份的海量文件數(shù)據(jù),在集中文件存儲(chǔ)的服務(wù)中,它是最便宜的。比如存儲(chǔ)日志、備案資料等等。當(dāng)然,它犧牲了數(shù)據(jù)傳輸?shù)男阅芎鸵恢滦浴o@然它也不適合我的場(chǎng)景。
- S3:S3(Simple Storage Service)適合存儲(chǔ)原始數(shù)據(jù)、大對(duì)象(單個(gè)上限5Tb),費(fèi)用比數(shù)據(jù)庫(kù)服務(wù)低。如果我最終決定使用文件系統(tǒng)來(lái)存儲(chǔ)數(shù)據(jù),它是一個(gè)好的選擇。另外,無(wú) 論是Glacier還是S3,層級(jí)概念上最大的以及都是地區(qū)級(jí)別的(在Glacier里面叫做vault,在S3里面叫做bucket,每個(gè)這樣的單元都 位于某一個(gè)地區(qū),例如Asin Pacific),因此如果需要全球多個(gè)節(jié)點(diǎn)訪問(wèn)同一份數(shù)據(jù),需要額外把數(shù)據(jù)分發(fā)到各個(gè)地區(qū)去。
- Storage Gateway:Storage Gateway是用于集成IT環(huán)境的內(nèi)部部署的,它支持基于網(wǎng)關(guān)緩存的優(yōu)化或者是網(wǎng)關(guān)存儲(chǔ)的優(yōu)化,便于本地和臨近網(wǎng)絡(luò)快速獲取數(shù)據(jù)。它可以用于公司內(nèi)部不同地理位置的文件共享、鏡像或者備份,也不適合我這里的場(chǎng)景。
選擇文件存儲(chǔ)不能提供數(shù)據(jù)庫(kù)的條件查詢等功能,目前我的場(chǎng)景下并不需要,我只需要根據(jù)不同的區(qū)域和數(shù)據(jù)唯一鍵來(lái)獲取數(shù)據(jù)集就可以了,否則,我需要考慮數(shù)據(jù)庫(kù)服務(wù):
- DynamoDB:DynamoDB 是掛在云上的NoSQL數(shù)據(jù)庫(kù)服務(wù),每一張表都需要指定一個(gè)hash的主鍵或者是hash加range兩層的主鍵,同時(shí),它的數(shù)據(jù)讀取和存儲(chǔ)的最小單位是 4KB,也就是說(shuō),存取0.5KB和4KB的數(shù)據(jù),性能表現(xiàn)是幾乎一樣的。從數(shù)據(jù)量來(lái)看,如果選擇數(shù)據(jù)庫(kù)服務(wù),它是最適合解決我的問(wèn)題。
- SimpleDB: 和DynamoDB相似,非關(guān)系型數(shù)據(jù)庫(kù),結(jié)構(gòu)可隨意變換,而且數(shù)據(jù)自動(dòng)索引,所以查詢是非??斓?。它的數(shù)據(jù)容量小得多,有一個(gè)典型用法是使用 SimpleDB來(lái)存儲(chǔ)S3的文件地址,就像“指針”一樣。但是它的容量限制需要考慮,每個(gè)domain只有10G的上限,可以建立多個(gè)domain,但 是那樣就需要應(yīng)用自己來(lái)路由選擇domain了。關(guān)于一致性,它和DynamoDB一樣,可以選擇最終一致性和強(qiáng)一致性,當(dāng)然,強(qiáng)一致性需要花費(fèi)更多錢(qián), 還會(huì)降低吞吐量。
- ElastiCache:把Memcached或者Redis搬到了云上,這顯然不是我需要的。
- RDS:RDS(Relational Database Service)相當(dāng)于把關(guān)系型數(shù)據(jù)庫(kù)搬到了云上,它和DynamoDB或者SimpleDB的區(qū)別,主要就是RDB和NoSQL DB的區(qū)別。
- RedShift:RedShift是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)服務(wù),利用列式存儲(chǔ)技術(shù)及節(jié)點(diǎn)間并行分布式查詢,對(duì)于上P的數(shù)據(jù)訪問(wèn)做了優(yōu)化。
在這里還可以找到這幾個(gè)AWS上數(shù)據(jù)庫(kù)服務(wù)的不同,用一表以蔽之:
| If You Need | Consider Using | |
| A relational database service with minimal administration | Amazon RDS, a fully managed service that offers a choice of MySQL, Oracle or SQL Server database engines, scale compute & storage, Multi-AZ availability and more. | |
| A fast, highly scalable NoSQL database service | Amazon DynamoDB, a fully managed service that offers extremely fast performance, seamless scalability and reliability, low cost and more. | |
| A NoSQL database service for smaller datasets | Amazon SimpleDB, a fully managed service that provides a schemaless database, reliability and more. | |
| A relational database you can manage on your own | Your choice of relational AMIs on Amazon EC2 and EBS that provide scale compute & storage, complete control over instances, and more. |
再有另一個(gè)技術(shù)選型的例子,在web容器中選擇Tomcat還是Jetty。Jetty結(jié)構(gòu)簡(jiǎn)單,容易定制其組件,也就是說(shuō),小和簡(jiǎn)單(這也是當(dāng)初Google選擇它作為app引擎的最重要原因), 是它最大的優(yōu)勢(shì)。Jetty在同時(shí)處理大量連接并且需要長(zhǎng)時(shí)間保持這些連接的時(shí)候,性能上更有優(yōu)勢(shì),因?yàn)樗腔贜IO,而不是Tomcat的BIO來(lái)處 理請(qǐng)求的;但是我們也能找到很多性能測(cè)試的數(shù)據(jù),在對(duì)于連接生命周期非常短而且非常頻繁的請(qǐng)求,Tomcat的性能要優(yōu)于Jetty。
以下摘選自《Jetty VS Tomcat Performance Comparison》的二者比較:
Jetty Features and Powered:
- Full-featured and standards-based.
- Embeddable and Asynchronous.
- Open source and commercially usable.
- Dual licensed under Apache and Eclipse.
- Flexible and extensible, Enterprise scalable.
- Strong Tools, Application, Devices and Cloud computing supported.
- Low maintenance cost.
- Small and Efficient.
Tomcat Features and Powered:
- Famous open source under Apache.
- Easier to embed Tomcat in your applications, e.g. in JBoss.
- Implements the Servlet 3.0, JSP 2.2 and JSP-EL 2.2 support.
- Strong and widely commercially usable and use.
- Easy integrated with other application such as Spring.
- Flexible and extensible, Enterprise scalable.
- Faster JSP parsing.
- Stable.
#p#
在選擇實(shí)現(xiàn)技術(shù)的時(shí)候經(jīng)常會(huì)遇到這樣或那樣的選擇題,上面的兩個(gè)例子,都是相對(duì)理性地分析和比較的例子。我們考慮的內(nèi)容往往包括功能、性能、社區(qū)支持、擴(kuò)展性和定制性、已知問(wèn)題和約束等等。
但是,具有諷刺意味的是,仔細(xì)想想,實(shí)際上我們選擇某一項(xiàng)技術(shù)的最重要的原因,卻遠(yuǎn)遠(yuǎn)不是那些“理智的分析”,而是下面這些:
- “因?yàn)榇蠹叶荚谟盟 ?,比如?xiàng)目用Java或者C++作為主要語(yǔ)言來(lái)實(shí)現(xiàn),我想很多人和我一樣,經(jīng)常并沒(méi)有經(jīng)過(guò)太多思考,這似乎是一個(gè)思維慣性。
- “因?yàn)槲覜](méi)有用過(guò)這項(xiàng)技術(shù),我感興趣,我想學(xué)一下”,其實(shí)這也無(wú)可厚非,我以前也經(jīng)歷過(guò)一個(gè)項(xiàng)目組,大部分人(包括主管在內(nèi)),都排斥使用新技 術(shù),原因是擔(dān)心風(fēng)險(xiǎn)。我原則上認(rèn)同風(fēng)險(xiǎn)一說(shuō),但是適度范圍內(nèi)給程序員選擇技術(shù)的自由從長(zhǎng)遠(yuǎn)看是有好處的,尤其是技術(shù)也是需要進(jìn)步的。把所有問(wèn)題都讓“工程 商人”來(lái)解決,只會(huì)讓目光過(guò)于淺近。
- “因?yàn)槲抑恢浪 保@種情況更多。你為什么選擇C3P0連接池?因?yàn)槟菚r(shí)候我不知道還有哪些別的數(shù)據(jù)庫(kù)連接池……
工程師總會(huì)在技術(shù)選型的時(shí)候?qū)ふ夷撤N平衡,紙面上未必會(huì)寫(xiě)這三條理由,但是心里面,有意識(shí)無(wú)意識(shí)地,一定會(huì)給向著這三條理由傾斜。
現(xiàn)在讓我們退一步,倘若我們都非常理性地評(píng)估了類(lèi)似技術(shù)的優(yōu)缺點(diǎn),但是在真正使用技術(shù)實(shí)現(xiàn)的時(shí)候,卻發(fā)現(xiàn),實(shí)際上這幾條類(lèi)似的技術(shù)都可以實(shí)現(xiàn),選哪 個(gè)關(guān)系并不大。因?yàn)閿?shù)據(jù)規(guī)模、問(wèn)題大小,都不足以到了非得區(qū)分類(lèi)似技術(shù)優(yōu)劣的地步。舉例來(lái)說(shuō),持久層使用MyBatis還是Hibernate,優(yōu)秀的程 序員可以說(shuō)出二者各自的好處是什么,也許對(duì)于大型項(xiàng)目至關(guān)重要;但是也有程序員會(huì)吐槽,其實(shí)用哪個(gè)都可以啊,好處壞處的差異并沒(méi)有那么明顯,因?yàn)槲业捻?xiàng)目 那么小,需要的數(shù)據(jù)庫(kù)讀寫(xiě)如此簡(jiǎn)單……
有人說(shuō),小項(xiàng)目可以幫助拓寬技術(shù)視野,但是只做小項(xiàng)目無(wú)法深入了解技術(shù)本身,因?yàn)槟銦o(wú)從比較并理解類(lèi)似技術(shù)的優(yōu)劣。這也是“玩具代碼”在學(xué)新東西的時(shí)候有成就感,也很適合技術(shù)分享的膠片之用,卻無(wú)法帶來(lái)工程師持續(xù)成長(zhǎng)的原因。
你覺(jué)得是不是這樣呢?
名稱(chēng)欄目:實(shí)際技術(shù)選型的考慮因素
當(dāng)前地址:http://www.dlmjj.cn/article/dhicdgp.html


咨詢
建站咨詢
