Facebook 對 NoSQL 數據庫的使用
已發表: 2022-11-22Facebook 已經實施了許多 NoSQL 數據庫來幫助它擴展其龐大的社交圖譜。 這些數據庫包括 Apache HBase、Apache Cassandra 和 Apache Thrift。 通過使用這些 NoSQL 數據庫,Facebook 能夠為其用戶提供快速響應的體驗,同時仍保留大量數據。
超過 20 億人的個人資料存儲在 Facebook 的數據庫中。 如今,許多業務關鍵型企業應用程序(例如多租戶 SaaS)都依賴於 Facebook 的互聯網規模、全球分佈式架構,並且可以從了解 Facebook 數據庫的演變中吸取教訓。 Mystria 是一個流行的開源數據庫,它是 FB 的 NoSQL Graph API TAO 的基礎。 於是,TAO將FB現有的1000個手動加固的MySQL master slave改造成了sharded slave。 因此,應用程序不再使用數據庫來執行跨分片交易和聯合操作。 除此之外,如果執行失敗的溢出,最近提交的數據將丟失。 對象和關聯存儲在同一服務器集群上,不會對分片進行任何更改。
數據配置的程度被確定為促進低延遲數據訪問的重要優化技術。 當 FB 決定放棄 SQL 作為查詢 API 並採用 TAO 的自定義 NoSQL API 時,其開發人員完全放棄了 SQL。 與 Facebook 不同,谷歌正在創建一個名為 Spanner 的全新數據庫,該數據庫在全球範圍內保持一致。 Spanner 的數據模型基於傳統的隨機訪問 OLTP 而不是社交圖譜。 第二代分佈式數據庫的數據庫層內置了大規模的可擴展性和全球數據分佈。 Spanner 採用每個分片的分佈式共識來確保每個分片(而不僅僅是一個實例)在發生故障時都具有高可用性。 此配置更改是在應用程序的上下文中進行的,並且它會繼續正常運行。
如果啟用表級和行級地理分區等地理空間特徵,與本地區域相關的數據仍然可以位於同一區域。 兩階段提交用於多分片交易,分佈式交易管理器跟踪整個節點的時鐘偏差。 我們在 FB 建立了 TAO,以保持我們對分片 MySQL 的現有投資。 谷歌決定打破傳統,創建 Spanner,這是一個全新的數據庫,可以水平擴展、複製地理複製,並像處理正在發生的基礎設施故障一樣。
出於各種原因,我們在 Facebook 中使用 MySQL。 使用 MySQL,一個小團隊可以管理數千台服務器,同時以盡可能低的成本提供高質量的服務。
TAO 是 FB 在 2009 年初創建的 NoSQL 圖形 API,旨在運行在基於 MySQL 的 Apache Cassandra 上。 本節的主要目標是消除上一節中突出顯示的問題。 TAO是Associations and Objects的首字母縮寫,指的是關聯和對象。
Facebook 早期的數據存儲嚴重依賴關係型 MySQL 數據庫。 儘管 Facebook 的工程師受到了 Google 關於 Google BigTable NoSQL 數據庫的論文的啟發,他們創建了 Cassandra,這是一個基於 Facebook 的NoSQL 數據庫的列族存儲。
Facebook 有一個關係數據庫系統來保存其主要數據。 它使用 MySql 5.6 的分支為超過 10 億用戶保留社交圖譜和 Facebook 信使數據(超過 10 億用戶)。
Facebook 使用 Nosql 嗎?
這個問題沒有千篇一律的答案,因為 NoSQL 數據庫的使用因每個應用程序的具體需求而異。 然而,人們普遍認為 Facebook 混合使用 SQL 和 NoSQL 數據庫來存儲和管理其大量數據。
Cloud Datastore和 Cloud Firestore 都是尋找可用於實時數據分析的面向文檔的數據庫的企業的絕佳選擇。 Cloud Firestore 因其優化的架構和在移動設備上的易用性而成為小型文檔的絕佳選擇。 Cloud Datastore 旨在處理極高的工作負載並自動擴展。 它也有很多用途。
Facebook 如何在數據庫中存儲數據?
Facebook 將數據存儲在組織成表的關係數據庫中。 然後數據存儲在表中的列和行中。 數據以文本、數字和日期的形式存儲。
Facebook 在俄勒岡州普賴恩維爾的數據存儲設施。 跟踪一切,從你參加的活動到你的狀態(或愛、哈哈、哇、悲傷或憤怒的臉),一直到你的時間線。 據估計,Facebook 在俄勒岡州的設施可能擁有多達 300 PB 的存儲容量。 有了這個數據量,我們可以在上面存儲大約 1000 億張平均大小的照片。 如果 Facebook 無法保證您所有帖子、照片、視頻、狀態更新等的安全。 如果您選擇不這樣做,Facebook 將無法記住您的身份。 有少量空間(或幾百萬)供您以您真正想要的方式表達自己。
它用於個性化廣告並增加您與 Facebook 互動的頻率。 Facebook 了解您的某些網站,以及您看到的廣告和您喜歡的帖子。
Facebook 還將這些數據出售給第三方企業。 Cambridge Analytica 是一家為唐納德特朗普總統競選工作的數據公司,它從 8700 萬 Facebook 用戶那裡獲得了個人信息。
為了安全起見,您必須了解 Facebook 如何收集和使用您的數據,並採取措施保護您的隱私。 您可以使用 Facebook 隱私工具刪除您的 Facebook 帳戶,或者您可以禁用 Facebook Pixel 和 Facebook Like 按鈕等。
最近的數據醜聞引發了對 Facebook 和第三方公司的擔憂。
在 Cambridge Analytica 醜聞期間,Facebook 因不透明和反應不夠迅速而受到批評。 Facebook 首席執行官馬克扎克伯格週二宣布,他將休假以處理醜聞。
自 Facebook 和 WhatsApp 大規模數據洩露事件曝光以來,馬克扎克伯格因缺乏問責制和未能解決隱私問題而受到審查。
根據指控,Facebook 一直在通過使用用戶數據來操縱政治輿論。
由於已經提出的隱私問題,Facebook 因缺乏透明度和未能解決這些問題而受到抨擊。
有人聲稱 Facebook 通過收集用戶數據來操縱其用戶的政治觀點。
用戶可以選擇採取一系列步驟。
Facebook 如何使用 Cassandra?
Cassandra 將眾所周知的技術組合用於擴展和可用性。 Cassandra 的目標是解決收件箱搜索問題的存儲需求。 收件箱搜索是一項新功能,允許 Facebook 用戶從收件箱中搜索消息。
Facebook 使用 Cassandra 作為電子郵件的搜索引擎,擁有 25TB 和超過 1 億個郵箱。 Facebook 於 2017 年 7 月 1 日在 Apache 的許可下將 Cassandra 作為開源軟件發布。在本視頻中,我們將深入了解 Cassandra 的架構和設計。 Cassandra 最初旨在解決在收件箱中查找電子郵件地址的問題。 寫入 memtable 時,您將始終寫入提交日誌(順序),該日誌對集群中的每個節點都是順序的。 在設置過程中,請閱讀以下步驟以從磁盤中清除表:* 空間不足 * 鍵空間過大(默認為 128)* 持續時間(提供的客戶端沒有時鐘)。 通過八卦協議遵守分階段事件驅動架構 (SEDA) 和故障檢測。 它擁有 100m 用戶、4B 線程和 25TB 數據,可以以每小時 1.5TB 的速度運行 Hadoop。
光澤消失:Facebook 放棄 Cassandra 轉而使用 Mysql
Facebook 沒有選擇 Cassandra,而是選擇了 Hbase 來構建其消息系統。 由於其分佈式架構,Netflix 使用 Cassandra 是自然而然的選擇,到 2013 年,它的大部分數據都存放在那裡,並且一直沿用至今。 在數據存儲方面,Facebook 使用 MySQL 而不是 Cassandra。 Facebook 用於存儲其所有社交媒體數據的主要數據庫是 MySQL。 他們創建了第一個數據庫引擎MyRocksDB,然後是 MySQL 數據庫引擎 InnoDB。 MySQL 和 Memcache 結合起來創建了一個緩存。
Facebook 使用的 Nosql 數據庫
Facebook 將其所有社交媒體數據存儲在 MySQL 中,這是它所依賴的主要數據庫。
從數據庫收集數據的過程稱為收集。 它可以以多種方式用於存儲和分析數據。 DBMS 是在特定數據庫中運行的數據庫管理系統。 為了跟踪世界各地的人們彼此共享的各種類型的信息,Facebook 使用了多個數據庫。 Cassandra 存儲系統旨在管理大量數據結構。 創建此應用程序是為了解決因存儲空間不足而導致的尋找最佳收件箱搜索結果的問題。 這種緩存方法僅使用內存解決方案。 在這種情況下,存儲共享池訪問以可承受的價格提供。
卡桑德拉與。 Cloud Bigtable 對比亞馬遜 Dynamodb
Cassandra 是 Facebook 最受歡迎的後端存儲選項之一,僅次於谷歌和亞馬遜。 借助 Cloud Bigtable,您可以在高性能 NoSQL 數據庫服務上運行分析和運營工作負載。 Amazon DynamoDB 是一種無服務器的鍵值 NoSQL 數據庫,可以按任何規模進行部署,是高性能應用程序的理想選擇。
Facebook 使用的數據庫
Facebook 使用關係數據庫管理系統 (RDBMS) 來存儲和組織數據。 RDBMS 是一種將數據存儲在表中的數據庫,每個表通過關係鏈接到其他表。 Facebook 使用定制的 RDBMS,旨在處理 Facebook 用戶生成的海量數據。
有超過 10 億人使用 Facebook。 用戶通過使用牆貼來表達自己並與他們的同伴和朋友互動。 儘管處理著數億用戶,Facebook 工程師仍被迫保持網站平穩運行。 本文向讀者介紹了他們為實現目標而使用的一些工具和方法。 Facebook 採用各種系統來盡可能保持其網站的動態,擁有超過 5 億用戶。 如果您需要可伸縮性和高可用性,同時還要保持較高的性能,Apache Cassandra 是一個很好的選擇。 Scribe 日誌系統允許 Facebook 出於各種原因在內部進行登錄。 Varnish 可以用作 HTTP 加速器來提供閃電般快速的負載平衡和緩存內容。
臉書是什麼?
由於多種原因,Facebook 數據中心基礎設施的這一披露具有重大意義。 首先,它展示了 Facebook 對持續服務質量的承諾。 此外,該數據中心對 Facebook 的運營具有前所未有的訪問權限。 最後,它強調了 Autoscale 的重要性,Facebook 使用它來管理流量和優化性能。
為什麼 Facebook 使用 Mysql
隨著 Facebook 的發展以及 SQL 和 MySQL 變得無處不在,它演變成一個 PHP 應用程序,使用 MySQL 作為持久數據庫,使用 memcache 作為“後備”緩存。 Facebook 今天使用超過 1000 台 MySql 服務器來存儲其數據,這被稱為通用(多租戶)數據庫。 數據庫被嚴重分區和復制。 為了減少查找數據所需的分片數量,所有相關數據都保存在一個分片中。 Netflix 使用的數據庫是什麼? Oracle是Netflix數據中心最常用的數據持久化系統。 MySQL 在某些領域用於電影推薦基礎設施。 兩者中的數據庫都是關係數據庫。
臉書資料庫
Facebook 數據庫是由社交網站 Facebook 組織和存儲的數據集合。 這些數據可以包括有關用戶、他們的朋友以及他們在網站上的活動的信息。 Facebook 數據庫用於支持網站的特性和功能。
Cassandra 如何成為 Facebook 的數據存儲
由於 SQL 的數據建模靈活性,以及 FB 剛推出時 MySQL 的廣泛使用,MySQL 最初被用作持久性數據庫,memcache 被用作社交圖的“後備”緩存。
每天 Facebook 上的 1 PB 數據大約有 100 萬千兆字節。 1 PB 相當於大約 300 PB 的數據,它們都位於一個 Hive 設施中。
儘管 Facebook 完全放棄了 Cassandra,但它仍在被 Twitter、Netflix 和 Apple 等大公司使用,僅舉幾例。 另一方面,DataStax 有一個適用於各種其他業務的工具版本。
因此,雖然 Facebook 不再將自己的數據存儲在 Cassandra 中,但其他企業卻這樣做了。
新的 Nosql 數據庫
非基於 SQL 的 NoSQL 數據庫被定義為以不同於關係數據庫的方式收集數據的數據庫。 表數據庫不需要表中固定的集合列,兼容水平擴展,不需要像關係數據庫那樣的JOIN。 NoSQL 數據庫的類型因所使用的數據模型而異。
它是業界最常用的數據庫類型之一,用途廣泛。 與傳統數據庫相比,使用雲計算有幾個優勢,例如易用性、增加的雲存儲容量和改進的數據安全性。 NoSQL 數據庫用途廣泛,包括醫療保健記錄、財務記錄和其他數據庫。 RavenDB NoSQL 文檔數據庫支持 ACID 事務(原子性、一致性、隔離性和持久性),是一個具有可靠文檔類型功能的可靠 NoSQL 數據庫。 使用 Couchbase,您可以創建移動和物聯網 (IoT) 應用程序。 您還可以使用 ArangoDB 搜索和顯示圖形、文檔和其他數據。 OrientDB 是首批包含對圖形和文檔的多模型支持的 NoSQL 數據庫之一。
如果您需要更多關於數據庫的上下文以深入了解數據,您可能會發現 Neo4j 是一個可行的選擇。 MongoDB 提供了一個名為 Realm 的不同平台,允許您快速構建、測試和發布移動應用程序。 MarkLogic 數據庫旨在處理多模型數據庫以及需要 NoSQL 功能的工作負載。 MarkLogic Database 是一個很好的 NoSQL數據庫平台,用於存儲關係數據和運行分析工作。 如果您不想妥協,完全託管的解決方案是最佳選擇。
臉書數據庫架構
fb 數據庫架構是一個強大的工具,可以幫助您組織和管理您的數據。 它是一個靈活的系統,可以根據您的需要進行定制。 使用 fb,您可以輕鬆地存儲和檢索來自各種來源的數據。
Facebook 採用堆棧架構,為 MySQL 底端之上的所有內容提供緩存圖。 換句話說,這意味著關係數據庫的性能並不比圖數據庫好。 除了朋友的朋友之外,執行複雜的查詢比執行“給定坐標周圍的所有位置”這樣的簡單查詢要困難得多。 在這種情況下,圖表是最好的解決方案。 對於剛剛超過 100 萬的用戶,將花費 1.8 秒,而對於剛剛超過 10 萬的用戶,將花費 18 秒。 如果您有多個用戶運行相同的查詢,請記住這不是您嘗試的唯一查詢。 對於 Facebook 如何設計其好友關係的問題,答案是它設計得非常好。 對於無法協助您實施的事實,我深表歉意。