SlideShare una empresa de Scribd logo
1 de 60
架構設計-
資料存取的選擇
大綱
• 架構設計的個人想法
• 架構設計演化的原因
• 關聯式資料庫的喜與悲
• CAP理論
• NoSQL的掘起
• NoSQL分類
• 混合式資料存取系統
• RDBMS的逆襲
架構設計的個人想法
• 為什麼我會想要架構設計
• 原因
• 過程
• 挫折
• 轉變
• 想法
• 架構設計給我的感受
• 合理的約束
架構設計-
從無到有
• 每個領域都有它的推定架構存在,可以先參考該領域是否有牛人分
享推定架構。
• 或是問…
避免脫序-
合理的約束
• 車軌是火車的約束
• 車軌帶來了:
• 摩擦力
• 穩定
架構設計的囧境
• 很多時候架構設計需要考量的不止是技術方面,還有管理方面:
• 沒人瞭解你設計的架構
• 新人上手難度
• 死亡時間的壓力
• 市場壓力
架構設計的意義是什麼
回到設計的意義
• 內顯-
• 設計是用來解決特定問題的
• 外顯-
• 設計是意圖的表達
思路
• 設計既然是要解決問題,那在設計之前是不是應該犛清問題?
• 先確定此次系統所要面對的問題,再釐清系統應具備的品質屬性。
架構設計演化的原因
• 識別出未識別的風險
品質屬性之間的矛盾
品質屬性的優先順序
• 由於品質屬性彼此會相生相剋,所以不可能讓系統同時存在所有品
質屬性。
• 排定品質屬性的優先順序是思考架構的第一步。
又再度分析癱瘓
再回歸原點思考系統當下
• 系統會隨著專案的進行的而改變,要隨時重新分析系統的風險。
• 某些風險會隨著時間消失或是重現。
• 設立一個CheckPoint,重新回顧和思考系統當下的風險
一直存在但是大家都不知道的風險….
• 大多數系統都採用關聯式資料庫作為資料儲存系統,原因是….
其實你的系統不一定適合
關聯式資料庫的喜與悲
• 關聯式資料庫為保障資料的一致性,採用鎖的方式處理。
• 關聯式資料庫因為產品化的關係,放了很多你不一定需要的模組。
• 關聯式資料庫有擴充上的瓶頸。
ACID的回顧
• 原子性(Atomic): 一個交易中所有的操作,不是全部完成就是全部取
消。
• 一致性(Consistency): 交易一旦允諾(Commit),則所有Client的資料會
是相同。
• 隔離性(Isolation): 多個交易同時執行時,彼此不會互相干擾。
• 持久性(Durability): 交易完成後,異動過的資料不會消失。
要想達到ACID,得付出多少?
衍生的問題
• 鎖不止消耗資源,還帶來死結。
• 當系統規模需要擴充的時候,鎖更是一個絆腳石。
• 當系統ScaleUp的時候,鎖會讓CPU的能量無法發揮
CAP理論
• 在CAP理論中,強調不會出
現
• 在出現網路實體分裂的狀
態下,資料仍能保持一致性
且系統仍具可用性
• CAP理論大多描述三者取
二,這是因為當網路實體分
裂的時候,必需要從A或C中
犧牲其中一個。
• 但….網路實體分裂又不是
每天都會,有必要考慮這個
而放棄C和A其中之一嗎?
一致性
每個用戶
總是
看到同樣的資料
A
C P 分區容忍
縱使實體網路
遭到分割系統
依然能夠運作
可用性
每個用戶
總是
隨時可讀可寫
AP
Dynamo
Vodemort
Tokyo Cabinet
KAI
Cassandra
SimpleDB
CouchDB
Riak
CP
BigTable
Hypertable
HBase
MongoDb
Terrastore
Scalaris
Berkerley DB
MemcacheDB
Redis
CA
RDBMS
(SQL Server,
MySQL..)
Aster Data
Greenplum
Vertica
CAP理論的反思
• 若分區不常出現,那麼CA就可以保持住,一旦P發生時系統再去犧牲
C和A中其中一個。若要做到這個則需要:
• 未發生P時,系統運行時要保持CA
• 偵測P是否發生
• 當P發生時限制某些操作,並著手啟動恢復機制
• 恢復後一致化每個分區的資料
分區恢復
進入分區模式
狀態: S2
狀態: S1狀態: S 狀態: S’
發生分區 分區結束
最終一致性
• 關聯式資料庫選擇CA是因為過去時空因素,具超大型跨洲際系統並
不多,但隨著資訊的發展,跨洲際系統已經是常態了。
• 關聯式資料庫也有提供許多P方面的機制(但是Lic的費用太貴了..)
• NoSQL在CAP的選擇中多半是選擇AP而選擇性的犧牲掉C。
• 其實NoSQL並非是直接地犧牲掉C,而是讓C晚一點發生,它們通常稱
之為- 最終一致性。
NoSQL的掘起
• 這個名詞最早出現在1998年,其主旨為:不提供SQL的關聯式資料庫。
• 2009年,發起分散式資料庫的議題,此時的NoSQL已不強調關聯,開
始放棄ACID。
NoSQL的特性
• 執行在一堆便宜的機器上。
• 降低效能瓶頸
• 適量的功能模組
• 開放原始碼
• SchemaLess
NoSQL的分類
儲存類型 NoSQL產品 特性
Document MongoDb Document儲存一般會使
用類似於Json格式,如此
就可以針對某些欄位建
立索引
欄(Column) Hbase,Cassandra,Hyperta
ble
依欄位儲存,方便將儲存
的內容結構化(壓縮)
圖形 Neo4J,FlockDB 用於社群系統的實體之
間的關係處理
鍵值組 Redis,Tokyo Cabinet 透過鍵,快速檢索到值;值
沒有特定格式
聚合導向
• 定義: 一組相關的物件,被視為一個整體來操作。
• NoSQL中的鍵值對/Document/欄儲存 這三種都是屬於聚合導向的
NoSQL資料庫。
• 採用聚合的好處,就是當處在分散式的環境中,可以依資料特性放
置到同一台機器上,藉此減少通訊成本。(不需要考慮資料表之間
的關聯)
• NoSQL中聚合導向類型的資料庫,雖然不允許跨聚合結構進行交易
控制,但可以從應用程式開發的角度去思考,如何以聚合結構來處
理交易問題。
目前使用的狀況
• 目前在.Net方面,較常使用到的是MongoDb與Redis。
• 主要原因在於社群的活躍與支持度;MongoDb提供Driver而Redis則
有MSOpenTech。
MongoDb
• 2007年10gen公司想開發一個PaaS的雲端平台,但開發人員只對他
們的資料庫有興趣,後來抽出來成為MongoDb。
• MongoDb是以C++撰寫,採用GNU_AGPL方式授權。
• 2009年11月推出1.0版,其後每三個月改版一次,目前穩定版本是
2.4.10。
• 是一種以Document-Oriented的資料庫。
• 適合Web環境。
MongoDb的資料結構
• MongoDb的資料庫結構如下:
• DataBase
• Collection: 類似於RDBMS中的Table
• Document: 類似於RDBMS中的一筆資料
• Field: 類似於RDBMS中的欄
• 一個Database可以擁有好幾個Collection,一個Collection可以有好幾
筆Document。
MongoDb的前題假設
• 假設有足夠大的硬碟空間。
• 記憶體足夠放入所有的熱資料。
• 系統是64位元。
• 系統採用Little-Endian。
• 多台提供給MongoDb使用的機器。
• 允許安全性不高的環境。
MongoDb的HA
• MongoDb提供兩種ScaleOut的機制:
• Replica
• Sharding
• Replica採用主從式叢集架構,資料的儲存都由主節點來提供服務,而
從節點則僅供讀取。
• Sharding是資料水平分割技術,設定好分割條件後MongoDb會自動
將資料進行分割/移轉/合併等工作。
MongoDb的WriteConcern/ReadPrefer
• MongoDb支援ScaleOut,但是這也引發了資料一致性的議題:
• 寫入到所有節點才算成功?
• 讀到的資料一定要最新?
• MongoDb在寫入方面提供Write Concern機制,讓應用程式寫入時可
以決定寫入的深度到什麼程度。
• 在讀取方面,基於效能考量MongoDb提供讀取的機制稱之為Read
Prefer;應用程式可以決定讀取的資料是來自最新的主節點或是某
個最靠近的從節點。
MongoDb的適用與不適用場景
• 適用:
• 網站登入/出
• 快取(Cache)
• 大型檔案的儲存(其實不怎麼好…)
• ScaleOut
• 事件紀錄(Log)
• 不適用:
• 高交易需求的系統
• BI應用
Redis
• 屬於鍵值對型的資料庫,與Memcached不同的是,它內部擁有豐富
的資料結構,可利用這些資料結構搭配出合適的資料儲存的操作。
• 未避免資源競爭,Redis採用單執行緒處理。
• Redis與Memcached同樣都是記憶體型資料庫,但是Redis提供持久
化(Durability)的機制
• 快照
• Log檔(Append式)
• Redis還提供訊息推播的功能,用戶端與訊息發送端可以藉由這個
功能同步訊息,目前在.Net技術中應用最廣泛的當屬SignalR。
Redis的內部結構
• 由於Redis的誕生是某公司老闆一時氣憤下的產物,當時並沒有想到未來
會有這麼多人使用,故其資料庫系統的設計方面稍嫌薄弱;Redis一個實
體僅提供16個資料庫,並且資料庫以整數命名。
• Redis在設計上其資料結構分為:內/外兩層;其內部資料結構是用來實現
外部資料結構的底層設計,而外部資料結構是供使用者使用的資料結構
亦即值的資料型別。
• Redis提供的資料型別:
• 字串
• HashTable
• List
• Set
• 有序Set
redisObject
字串
List
有序集合
HashTable
集合
整數
字串
雙端鏈結串列
跳躍表
壓縮串列
字典
整數集合
記憶體不足的時候
• 雖說未來記憶體不再是二維,而將會出現三維柱狀體(?),但是現行
的伺服器其記憶體仍是有限,在這種狀況下,Redis提供頁切換機制,
讓不常被使用的資料卸載(LRU),但這要配合它的持久化機制。
• Redis的持久化機制是自行fork出一個執行緒去處理,在某些情況下
會阻塞主執行緒處理命令。(要小心!)
Redis的資料復原機制
• Redis提供兩種資料復原機制:
• RDB
• AOF
• RDB是Redis會對有儲存在資料庫中的資料定期快照並儲存在硬碟
中。
• AOF彷彿RDBMS的寫入日誌一般,可設定在什麼條件下觸發寫入硬
碟中;Log中的資料操作是Append,不會有修改或刪除。
Redis適用與不適用場景
• 適用
• 小型資料的操作(<100k效能最佳)
• 快速的資料處理需求
• 快取
• 不適用
• 大型資料操作
• 交易處理(語法錯誤有RollBack效果,語意錯誤則無)
• 多CPU環境(浪費資源)
Cassandra
• 由Facebook提供,交遞給Apache協會,但是自家用的是另一個版本的
Cassandra。
• 以Amazon專有的Dynamo為基礎,結合Google BigTable的欄儲存型
NoSQL。
• 一度曾是欄儲存型NoSQL的霸主,後來在Twitter甚至是Facebook棄
用之後衰敗,後由DataStax公司重啟V2.0後重登寶座。
Cassandra的資料結構
• 基本儲存單元: 行,每個行都是一個名值對。名也作為鍵使用。
• 每個行都有一個時間戳記,可以控制值的生命週期或寫入沖突。
列1列鍵
1
列
名稱1: 值1 名稱2: 值2
列2
Cassandra的內部結構
• 由相似的業務或結構所組成的集合稱之為-欄族(Column Family)。
• 標準欄族 – 欄族內部的名值對都只有一層。
• 超欄族- 欄族內部的名值對呈現巢狀。
名稱1: 值1
列1
名稱2: 值2
列2列鍵
2
名稱1: 值1
列1
名稱2: 值2
列2列鍵
1
列
列
列族
{
“pramod-sadalage” : {
firstnName : “Pramod”,
lastName : “Sadalage”,
lastVisit: “2012/12/12”
},
“martin-sadalage” : {
firstnName : “Martin”,
lastName : “Forler”,
lastVisit: “2012/12/12”
}
}
Cassandra的資料操作
• 寫入操作:
• 先將資料寫入提交日誌(CommitLog)
• 再將資料寫入SSTable(i.e. 記憶體型資料表)
• 當SSTable中的快取寫入資料庫,此SSTable就無用了,將會被回收。
• 讀取操作:
• 讀取資料時,等待過半節點響應
• 節點響應後,回傳時間戳記中最近的資料
• 將最新資料覆寫資料已陳舊的節點
• Cassandra列的操作是原子級別
Cassandra的HA機制
• Cassandra的構造並沒有主節點,每個節點的關係是平等的(P2P)。
• 每個節點都會定期複製和備份到其它節點。
Cassandra的適用與不適用場景
• 適用:
• 高併發交易環境
• 不適用:
• 開發初期,專案查詢模式尚未確立
Neo4J
• 以Java撰寫,兼容ACID的圖型資料庫。
• 核心是一種極快的圖型引擎,針對圖型網絡進行優化。
• 提供REST服務層,可以使用REST的方式操作。
• 大多應用在社交網路的應用上。
Neo4J的內部結構
• Neo4J利用圖型理論來儲存資料庫,每個節點之間的連線可以放置
屬性來說明兩個節點之間的關係。
• 修改或對現有節點進行修改時都需要啟動交易。
• 若刪除的節點身上仍有連線則刪除會失敗,這是為了保障圖的完整
性。
圖資料庫的價值
• 其實圖資料庫檢索關係也可以使用RDBMS來完成,那圖資料庫的價
值在那裡?
• 圖資料庫可以從任意一個節點開始,遍覽所有節點,特別是深度大
於1的時候。
• Neo4J具有索引的功能,查詢時會先查詢索引中的資料,而查詢引擎
採用的是Lucene
Neo4J的叢集
• Neo4J的叢集由主節點負責所有資料的儲存,而後複製給從節點;從
節點僅能做讀取使用。
• Neo4J會盡可能將所有資料放入記憶體中,但若資料量過大則叢集
會發生問題,為避免這個狀況,可在應用程式面處理,將資料依領域
特定知識切割。
北美
路易斯安那 紐約
芝加哥
代理商
供貨商
分銷商
貨倉
供貨商
亞洲
孟買 新加坡
西安
生產
供貨商
分銷商
生產
供貨商
應用程式
Neo4J適用與不適用場景
• 適用:
• 關係型資料。
• 路徑規劃
• 推薦引擎
• 不適用:
• 高併發交易
混合式資料存取系統
• 資料存取系統若將其看作是一種資料儲存的工具,則系統架構的設
計是否會有新的一片天地?
RDBMS的逆襲
• 有鑑於資料儲存的特性以及硬體的發展,SQL Server從其2012版板
開始就開始採用不同於以往關聯式資料的方式進行資料儲存,而
2014版更是提出記憶體型資料庫。
ColumnStore Index
• 開發專案名稱: Apollo
• 讓超大量資料能夠有效率的執行彙總操作(Sum,Average…)。
• 在SQL Server 2012的ColumnStore Index中,必需設定資料表為唯讀
才能使用,但是SQL Server 2014之後若將ColumnStoreIndex建在叢集
索引上,則可以對資料進行異動。
• 以Column為導向的儲存,因為是相同的資料型別,所以可以進行高
壓縮,這讓資料的容量和存取的效率可以大幅的提升。
Clustered ColumnStore Index建構流程
CCI允許資料異動的秘密
• 資料新增:
• 新資料會直接插入DeltaStore資料表,當DeltaStore資料表Row的筆數超過之
後會由背景Job將其轉成Row Group並轉變成ColumnStore。
• 資料修改:
• 若欲修改資料在ColumnStore中,則標註此筆資料已刪除,並且新增一筆資
料到DeltaStore資料表中;反之,則直接修改DeltaStore中的資料。
• 資料刪除:
• 若欲刪除資料在ColumnStore中,則標註此筆資料已刪除;反之,則是直接刪
除DeltaStore中的資料。
In-Memory Table
• 模組名稱: Hekaton
• 其用意在於提升資料表存取的速度;放棄傳統採用悲觀鎖定的方式
而改用樂觀版本鎖藉此提高效能。
• 在使用上建議搭配Native式的預存程序;這種預存程序經過特殊優
化,可讓硬體指令碼數量減少藉此提高CPU使用率。
• Hekaton的Durability是可選的,若採用Durability則因其需要進行Log
而會降低效能。
• 由於是In-Memory,因此,當記憶體不足的時候並不會Crash而是進入
唯讀狀態。
Hekaton的概觀
選擇癱瘓?
結語
• 資料儲存系統的選擇與系統本質有關,只有不斷觀察本質並且識別
出風險,再去選擇所需要的儲存系統即可。

Más contenido relacionado

La actualidad más candente

bada-data-beautiful
bada-data-beautifulbada-data-beautiful
bada-data-beautiful
宗志 陈
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
drewz lin
 

La actualidad más candente (20)

基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
豆瓣数据架构实践
豆瓣数据架构实践豆瓣数据架构实践
豆瓣数据架构实践
 
bada-data-beautiful
bada-data-beautifulbada-data-beautiful
bada-data-beautiful
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率
 
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
 
当当网Docker应用实践
当当网Docker应用实践当当网Docker应用实践
当当网Docker应用实践
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
D baa s_in_xiaomi
D baa s_in_xiaomiD baa s_in_xiaomi
D baa s_in_xiaomi
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?
 
从开发到上线-实战持续交付
从开发到上线-实战持续交付从开发到上线-实战持续交付
从开发到上线-实战持续交付
 

Destacado

Destacado (20)

Vue
VueVue
Vue
 
前端網頁自動測試
前端網頁自動測試 前端網頁自動測試
前端網頁自動測試
 
前端測試
前端測試前端測試
前端測試
 
API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013
 
Cassandra架构与应用
Cassandra架构与应用Cassandra架构与应用
Cassandra架构与应用
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
PM大我們換個方式寫文件吧
PM大我們換個方式寫文件吧PM大我們換個方式寫文件吧
PM大我們換個方式寫文件吧
 
Cassandra 2.1 簡介
Cassandra 2.1 簡介Cassandra 2.1 簡介
Cassandra 2.1 簡介
 
林佳賢/資料視覺化的 20 個小訣竅
林佳賢/資料視覺化的 20 個小訣竅林佳賢/資料視覺化的 20 個小訣竅
林佳賢/資料視覺化的 20 個小訣竅
 
網站壓力測試與實戰
網站壓力測試與實戰網站壓力測試與實戰
網站壓力測試與實戰
 
Are you scaling smart or scaling towards failure?
Are you scaling smart or scaling towards failure?Are you scaling smart or scaling towards failure?
Are you scaling smart or scaling towards failure?
 
Actividad 5
Actividad 5Actividad 5
Actividad 5
 
Az új alkotmány tervezete
Az új alkotmány tervezeteAz új alkotmány tervezete
Az új alkotmány tervezete
 
Moar tools for asynchrony!
Moar tools for asynchrony!Moar tools for asynchrony!
Moar tools for asynchrony!
 
actividad 3
actividad 3actividad 3
actividad 3
 
μυλοπετρα
μυλοπετραμυλοπετρα
μυλοπετρα
 
Distribución normal
Distribución normalDistribución normal
Distribución normal
 
Internet And Self-organizing1
Internet And Self-organizing1Internet And Self-organizing1
Internet And Self-organizing1
 
Website design
Website designWebsite design
Website design
 

Similar a 架構設計-資料存取的選擇

基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
锐 张
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
Yiwei Ma
 
Cassandra Technical and history overview
Cassandra Technical and history overviewCassandra Technical and history overview
Cassandra Technical and history overview
Xu Wang
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
lovingprince58
 

Similar a 架構設計-資料存取的選擇 (20)

新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
数据库架构师做什么 58同城数据库架构设计思路-沈剑
数据库架构师做什么 58同城数据库架构设计思路-沈剑数据库架构师做什么 58同城数据库架构设计思路-沈剑
数据库架构师做什么 58同城数据库架构设计思路-沈剑
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
NoSQL-MongoDB
NoSQL-MongoDBNoSQL-MongoDB
NoSQL-MongoDB
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 
mercury
mercurymercury
mercury
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
 
Cassandra Technical and history overview
Cassandra Technical and history overviewCassandra Technical and history overview
Cassandra Technical and history overview
 
大數據
大數據大數據
大數據
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维
 
給開發人員的資料庫效能建議
給開發人員的資料庫效能建議給開發人員的資料庫效能建議
給開發人員的資料庫效能建議
 

Más de 國昭 張

Más de 國昭 張 (19)

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th ddd taiwan study group  bounded context integration
8th ddd taiwan study group bounded context integration
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模
 
單元測試
單元測試單元測試
單元測試
 
Docker實務
Docker實務Docker實務
Docker實務
 
Scrum essential
Scrum essentialScrum essential
Scrum essential
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js
 
React js
React jsReact js
React js
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
 
ASP.Net MVC Framework
ASP.Net MVC FrameworkASP.Net MVC Framework
ASP.Net MVC Framework
 
Linq初階
Linq初階Linq初階
Linq初階
 
Linq實戰
Linq實戰Linq實戰
Linq實戰
 
Entity Framework實戰
Entity Framework實戰Entity Framework實戰
Entity Framework實戰
 
C#版本3~5的新特性
C#版本3~5的新特性C#版本3~5的新特性
C#版本3~5的新特性
 

架構設計-資料存取的選擇