MongoDB World 2017 參會全記錄
作者簡介
張友東,阿裏雲數據庫技術專家,Mongoing中文社區聯合發起人,主要關注分布式存儲、NoSQL數據庫等技術領域,目前主要從事MongoDB雲數據庫的研發工作,致力於讓開發者用上最好的MongoDB雲服務,本次給大家分享上周(6.19-6.21)在芝加哥參加 MongoDB Wolrd 2017 的一些收獲。
去年的會議場景還曆曆在目,MongoDB World 2016參會全記錄 ,感歎時光飛逝。
會議安排
Pre conference 6.19
- Advacacy summit, Pattern summmit, Workshop(SQL opt, security, ops manager, data modeling)
會議的前一天也有不少的議題,基本都是邀請製的,包括開發者峰會、合作夥伴峰會、以及一係列的收費workshop。
Conference 6.20 - 6.21
- Keynotes (09:00 - 10:50, 17:00 - 18:30)
- Session (MongoDB production intro, MongoDB internal, user case)
會議2天的安排主要分為keynotes 和 session,keynotes 是所有的參會者(1000+)聚在一塊,主要內容是MongoDB公司的產品發布,產品新特性介紹,以及合作夥伴的主題演講; Session 部分內容很豐富,每個 Session 約40分鍾,每個時間段都有多個不同主題的 Session 可選,內容包括 MongoDB 產品,MongoDB 內部機製,用戶使用案列等。
Just for fun
- After party: 第一天會議結束有一個after party 的活動,把參會者拉到一個類似酒吧的地方,聽音樂、吃東西、聊天 ...
- Fun run: 第二天的早上有一個晨跑的活動,
- Taste beer:會議結束後,會提供各種類型的啤酒供大家品嚐,參會者喝酒聊天,很有意思,可惜我對啤酒完全不感興趣。
如此豐富多彩的活動,我隻能說老外真會玩。難得出遠門一趟,加上好奇心比較重,上麵所有的活動我去都參加了,今年跑步帶了裝備,3 miles 妥妥的。
App
跟去年一樣,今年大會也開發一款 APP,方便大家在手機上安排會議內容,並可以對speaker做點評以及提問,還能方便的認識其他的參會者,就是一個簡單版本的朋友圈。
After party 活動現場
Taste beer 活動現場
Advocacy summit
通過 TJ 的介紹,聯係到負責 Advocacy summit 的同學,參加了本次的 advocacy summit 活動,主要是 MongoDB 社區比較活躍的一些開發者聚在一塊,聽 MongoDB 的CXO 們聊未來的一些技術方向,針對一些 topic 進行技術討論,一共50人左右,圓桌的形式,一整天吃飯、討論都在這個房間了,收獲很大。(注:被右後方大胖哥擋住的人就是我,[捂臉])
Atlas
MognoDB 公司在去年 MongoDB world 的時候發布來 DBaas 服務 Atlas,能基於 AWS 來構建 MongoDB 雲服務,Atlas 經過一年的發展,多了許多新特性,同時還有很多特性正在開發中,非常值得期待。
Atlas feature
- Live migration,在線遷移,可以將你原來的實例數據無縫的遷移到 Atlas
- Queryable backups, 備份集支持直接查詢,這樣當隻需要部分數據時,可以直接到備份集裏查詢出來,而不用恢複整個數據集
- 支持AWS、Azure、GCP,這個特性比較給力,基本上國外主要的雲平台都支持上了,不論你在哪個雲上,都可以方便的使用 Atlas 的服務。
Atlas future
- Perfromance advisor 支持智能的性能分析及建議
- M2 大規格實例的支持
- Full CRUD in data explore 能在atlas控製上直接操作數據,執行命令等,數據庫管理員的福音
- Hosted BI connector BI分析進一步加強
- MongoDB charts integration 整合 MongoDB chart,方便的根據數據出圖形報表
- Cross Cloud 未來 Atlas 能跨多個雲服務商部署,可能一個複製集,Priamry 在 AWS 上,Secondary 在 Azure 上
- LDAP authentication、KMIP integration 安全方麵的加強
另外今年也發布了新的產品 MongoDB stitch,能更方便的基於 MongoDB 構建應用,MongoDB stitch 目前隻能在 Atlas 上使用。
Storage
Wiredtiger 團隊的負責任介紹了 MongoDB 存儲方麵的一些開發計劃
- 3.6 會支持存儲引擎級別的 upgrade/downgrade,主要是有新壓縮算法的支持、以及考慮將大文檔的更新隻存儲「改變的內容」,這樣可能會導致存儲格式發生變化,upgrade/downgrade 就是為了支持數據級別的版本升降級。
- 3.8 會支持transaction,同時在大量集合、大量更新的場景做優化,然後完全廢棄 mmapv1 引擎。
- 4.0 及以後的版本,MongoDB 會支持 LSM 來適應大量寫入場景,以及針對分析場景做 column store 的支持,同時還會考慮在移動領域,以及雲存儲場景的應用。
Drivers
3.6 版本裏,Driver 方麵主要有幾大改進
- 協議上的統一,MongoDB 的通信協議經過多次迭代改進,會在3.6進行統一,所有的請求走一種協議,並支持網絡數據包的壓縮(3.4已經支持snappy壓縮,3.6會支持更多的壓縮算法)。
- 支持 retryable write,所有的寫都可重試,這樣用戶就不用擔心寫失敗的場景,可以完全交由Driver處理(後麵有個主題專門介紹)。
- Notification API,支持訂閱數據庫的所有修改,比如用戶可以訂閱指定集合的insert、update操作,當集合的數據發生變化時就會得到通知,一種典型的場景就是訂閱oplog的修改,可以用於做增量備份,也可以將oplog應用到其他的地方,擴展更多的應用場景。
Unconference session
上述議題結束後,有一個 unconference 環節,議題大家現場提,每個人都可以提出想討論的問題,每個人也可以對提出的議題投票,最後得票數比較多的議題會拿出來進行圓桌討論,我提出向大家介紹一下 MongoDB 中國社區的發展情況,以及用戶遇到的主要問題,將這些問題feedback給官方團隊。
China MongoDB community: Introduction and Feedbacks
第一次用英文做分享,居然完整的講完了,大家對中國用戶會一次活動有200+人表示非常震驚,並對我們社區的工作高度讚揚,感謝社區裏每一位同學的努力付出。
Mongoing中文社區(mongoing.com)今年已經在杭州、深圳、北京、成都組織了四場用戶交流會,後續我們將會組織更多的線上、線下的技術交流活動,給 MongoDB 的用戶建立了一個良好的技術交流平台,大家可以關注「Mongoing中文社區」的公眾號,後續的技術活動、幹貨文章會第一時間推送給你。
Sessions
本次的 Session 內容豐富,每個時間段都有多個可選的topic,我主要關注 MongoDB internal、MongoDB schema design 等方麵的主題。
Scale wiredtiger to 1m collections
這個topic裏介紹 wiredtiger 如何支持100萬個集合,wiredtiger 相比 mmapv1 有很大的性能提升,但在大量集合的場景,wiredtiger 的表現不如 mmapv1,是因為 wiredtiger 每個集合/索引都對應一個物理文件,對文件係統的性能依賴很大;而 mmapv1 將同一個數據庫的數據合並存儲在一塊,不會產生大量物理文件。
Wiredtiger 在成為 MonogDB 存儲引擎之後,發現很多最初的設計跟 MongoDB 的場景是不相匹配的,比如wiredtiger假設用戶隻會創建很少的table,也隻有少量的線程會並發讀寫,而在 MongoDB 的場景裏可能會有大量的集合,同時因為 MongoDB one thread per connection 的網絡服務模型,會導致同時可能有大量的線程讀寫wiredtiger數據。
Wiredtiger 為了更好的支持大量集合的場景,主要做了如下改進
- cache handle 的管理,由原來的鏈表改為hash表,實現O(1)的查找和刪除。
- eviction 和 checkpoint 的時候,考慮到大量集合的場景,而大量集合中可能隻有少數集合是活躍的,會盡量高效的跳過未修改的集合數據。
- 增加 --groupCollecitons 選項,同一個數據庫的所有集合及索引隻會對應2個wiredtiger的table,一個用來存儲數據,一個用來存儲索引;這個特性目前還在開發中。
Session in MongoDB 3.6
這個topic 主要介紹 3.6 版本裏即將引入 的 Session 特性,Driver 連接 MongoDB server時,可以先建立一個 Session,Session 的狀態信息會存儲到 server 端,即使 Client 斷開重連,Session 的信息不會丟失,基於這個特性,在3.6裏會實現
- Retryable write,因為 Session 信息在server端,所有的寫操作在客戶端都是可重試。
- Session 自動超時,能自動回收 Session 關聯的所有資源
- 實現 cluster 級別的killOp,mongos 上的 Session,mongos 會自動跟 shard 上的 Session 關聯起來,當用戶 killOp 清理 mongos 上的Session操作時,mongos 會自動將 shard 上關聯的 Session 操作也清理掉;用戶不再需要連接到每個shard上去逐個 killOp。
Advanced schema design
這個 topic 主要介紹文檔數據庫常用的設計模式,其實這些模式都是比較通用的,在很多場合都適用。
Attribute
文檔數據庫最大的特點就是其靈活性,可以通過 field: value 來表達各種數據,在設計時field可以盡量抽象成 attribute,比如一個文檔用於記錄每個城市的氣溫。
{
weather:
{
wuhan_temp: 30
hangzhou_temp: 28
beijing_temp: 20
...
}
}
這樣做有個比較大的問題就是字段數量不確定,並且非常不便於索引,更好的方式應該是進一步抽象,提取出城市以及氣溫這2個Attribute,比如
{
weahter[
{city: "hangzhou", temp: 30},
{city: "wuhan", temp: 20},
{.... }
}
這樣改進後結構更清晰,而且能方便的針對 weather.city, weather.temp 建索引。
Subset
Subset 主要針對大文檔,在有些場景,用戶的文檔可能很大,但需要訪問/修改的部分可能很少,其中大部分內容都是靜態的,並且很少被訪問,這樣的數據就沒必要加載到內存,這樣就可以通過 Subset 的方式,將靜態很少被訪問的數據以子集的方式存儲到其他地方。比如下述文檔
{
field1: value1,
field2: value2,
...
filedN: { } // very big, and rarely access
}
這是可以將filedN 存儲到另外的集合,然後加上對應的引用,這樣就隻有經常需要訪問的數據被加載到內存,內存利用的效率更高。
Computed
Computed 主要用於減少頻繁需要的重複計算,比如針對某個集合,經常需要對集合的某個字段進行求和,這是就可以考慮在每次插入時,進行求和計算,並把計算結果存儲下來,這樣每次求和時就不用全表掃描來計算。
Approxmiation
Approxmiation 是 Computed 的改進,如果每次插入時更新計算結果開銷太大,並且應用能夠接受不精確的結果,則可以考慮周期性的進行更新,比如MongoDB本身對集合的文檔數、大小信息就是使用周期性更新的策略來維護的,所以每次db.coll.count() 都能很快的返回,但風險就是如果中間出現crash,可能導致count值與實際文檔數不一致。
Overflow
Overflow 主要思路是將數據存儲到多個bucket裏,比如以天為單位組織數據,先把數據存儲到當天的bucket(也可以是一個集合),到第二天又創建一個新的bucket存儲新的數據,劃分bucket的方式可以很靈活。
Sizing your cluster
這個 topic 主要介紹如何做容量評估,主要幾個方麵
- Data size 根據需要的集合數量、文檔數量、以及文檔平均大小來預估總的數據量,來評估需要的磁盤存儲空間
- Working set 根據索引大小、經常需要訪問的文檔數來預估活躍數據集來評估需要的內存大小
- Queries IOPS 根據讀寫訪問請求評估需要的IOPS量
- Shard Collections 根據容量、讀寫需求評估是否需要進行分片,以及分片的規模
上麵的方法隻是一個理論上的預估,要精確的了解容量及性能需要,最好是進行實際測試來評估。
Duriablity over sneakernet
這個 topic 主要介紹WriteConcern、ReadConcern的設計初衷,以及各個level分別解決什麼問題,這個官網文檔很詳細了就不做過多的介紹了。值得一提的是,Speaker 以獨特的方式演講,把問題解釋得非常透徹,大寫的服。
Others
- 其他還聽了關於 Index selection、MongoDB perf 理論及實踐的topic,內容都非常的好,但太過細節不太好整理,這裏就先忽略了,等PPT出來大家可以學習下。
- 國內還有華為、東航的同學參加了 MongoDB world 17,他們都是MongoDB的客戶
- 今年關於Giant ideas的分享有好幾場,印象比較深的是 Matt Parker 關於數學的一場演講,把很多數學問題搞得很有趣,比如通過excel來模擬照片,通過多米諾骨牌來模擬與非門。
阿裏雲數據庫團隊招聘數據庫技術專家,歡迎有誌之士加盟,一起實現 Giant ideas.
參考
最後更新:2017-06-28 12:02:10