摘要: 湯森路透爲專業人士提供所需的智能,技術和人力資源,以便找到值得信賴的答案。它們使財務風險,法律,稅務會計以及媒體市場的專業人員可以作出最重要的決定,全部這些都由世界上最值得信賴的新聞機構提供支持。 本案例由湯森路透首席開發人員Tanvir Mansuri 撰寫。sql
技術不斷改變企業。咱們湯森路透(Thomson Reuters)一直致力於利用技術,使咱們在業務過程當中收集的信息更具相關性和更個性化,同時更快地向咱們的客戶和員工交付信息。經過使用共享平臺並在咱們的業務部門工做,咱們但願使咱們的數據更易於訪問和深刻咱們的人員,不管經過哪一種渠道。數據庫
爲了促進這種方法,咱們但願建立一個複雜的業務分析和智能(BA / BI)平臺,爲全部湯森路透員工提供一切視圖。這是一個至關大的挑戰,由於咱們必須將包含半相關數據的許多不一樣數據源集成到不一樣的結構中,以知足多個部門和角色的各類需求。安全
對於數據訪問和管理,很顯然,咱們須要一個快速,無模式的數據存儲來處理咱們的BA / BI應用程序中愈來愈多的非結構化數據。咱們的應用程序使用了二十多個數據源,提供了各類信息。這須要一個強大的查詢語言,可以表達咱們員工想要快速回答的普遍問題。框架
一個關鍵的要求是支持即席鏈接,以及圖遍歷,爲應用程序的不一樣部分使用正確的數據訪問策略,並可以提出更多的問題。咱們的選擇是開源代碼解決方案,以及一個積極響應的社區。函數
首先,ArangoDB是一個真正的開源項目,具備開發者友好的Apache 2 許可證。另外,其背後的團隊很是友好且透明。通過至關短的調整階段,咱們便開始沉迷於ArangoDB查詢語言(AQL)。對咱們來講,用AQL 編寫查詢很是直觀,咱們能夠利用各類各樣的函數和數據訪問模式。 AQL 更使人稱讚的方面是它使用嵌套的FOR循環來組合查詢。所以,使用AQL 編寫代碼和寫入查詢之間的轉換很是順暢。他們的」多模型「 方案以及在AQL 本地鏈接和圖表遍歷的可能性也很是好, 由於有時在相同的查詢中結合鏈接和遍歷是很方便的。微服務
另外一個重要的是ArangoDB 的微服務框架Foxx。咱們使用Foxx 至關頻繁; 咱們已經爲咱們的應用程序建立了二十多個Foxx 服務。坦率地說, Foxx 入門有點難:文檔能夠進一步改進,更多的示例或最佳實踐都會有很大的幫助。不過,目前ArangoDB 團隊和社區支持已經緩解了這一缺陷。他們很是專業,也很積極迴應。這是咱們決定使用ArangoDB 數據庫的緣由之一。性能
目前,咱們在ArangoDB中存儲了270GB以上的數據(轉儲到408GB的磁盤)。隨着數據量的穩步增加,咱們很快將轉向三節點集羣,主要是爲了提升可用性(參見下圖)。
測試
咱們當前單節點設置的設置是24個vCPU和512GB的RAM。對於集羣設置,咱們計劃爲主設備使用相同的機器。
咱們的應用程序自己是讀/寫密集型的,在高峯期每秒至少有三次寫入和每秒兩千次更新。咱們體系結構中的隊列有助於陰影寫入,甚至能夠加載ArangoDB。讀數通常穩定, 咱們預計不會出現大規模的高峯。優化
首先,咱們瞭解到,在查詢中結合不一樣的數據模型其實是可能的,有時也是很是有用的。查詢運行速度很是快,AQL 很是直觀,即便咱們的產品負責人和業務分析師如今也在寫至關容易的超過二百行的龐大查詢。有時候他們不得不問哪一個索引應該被使用,可是大多數查詢的性能均可以接受,並且不須要額外的工做。spa
Foxx 框架幫助咱們大大減小了咱們的開發時間。正如咱們將與許多REST 服務集成同樣,咱們過去爲集成測試編寫了大量的模擬器。如今REST 服務能夠隨即由 Foxx 得出。咱們還能夠定義本身的路由,這樣運行的數據沒必要發送給客戶,相反,它能夠在數據庫中進行處理,以後只將結果發送給客戶。經過這種方法,咱們能夠減小不少麻煩,並在須要時提升安全性。對於咱們來講,Foxx與ArangoDB 提供了極大的幫助,使用經驗也很是棒。
總的來講,咱們如今能夠將得所需的全部數據 --保證,報告,移動,API門戶-- 在一個地方得到,從而提供快速和安全的訪問。 AQL的靈活性,以及不一樣數據模型的組合,能夠輕鬆地得到所需的查詢運行和優化。因爲Foxx和AQL,咱們輕鬆地擴展了應用程序的功能。這樣咱們能夠將更多的時間花在實際的應用程序開發上,並更迅速地得到所需的結果答案。畢竟,咱們被稱爲「答案公司」。