Twitter 如何使用 Apache Cassandra 為其社交媒體平台提供動力
已發表: 2022-11-17Twitter 是一個社交網絡平台,允許用戶發送和閱讀稱為“推文”的短消息。 它自 2006 年問世以來一直是最受歡迎的社交媒體平台之一。 雖然 Twitter 確實在其基礎設施的某些部分使用了一些關係數據庫管理系統 (RDBMS),但它主要使用名為 Apache Cassandra 的 NoSQL 數據庫。 Cassandra 旨在以高可用性和高性能處理大量數據。 Twitter 使用 Cassandra 有幾個原因。 首先,它的可擴展性很強。 隨著用戶群的增長,Twitter 可以輕鬆添加更多 Cassandra 節點。 其次,Cassandra 是高可用的。 即使一個 Cassandra 節點出現故障,其他節點也可以彌補這一不足。 最後,Cassandra 速度很快。 這對於用戶期望實時更新的社交媒體平台很重要。 因此,雖然 Twitter 確實使用了一些關係數據庫,但它的主要數據庫是 NoSQL。 這使 Twitter 能夠快速擴展並為其用戶提供快速、可靠的體驗。
Twitter 產品開發總監 Kevin Weil 在今年早些時候發布的一段視頻中解釋了該公司如何使用 NoSQL。 每天,Twitter 用戶產生大約 12 PB 的數據,相當於每年大約 4 PB。 Hadoop 連同它自己的開源項目 FlockDB,用於分析社交數據和分析數據。 Twitter 收集並使用其收集的所有信息以提供相關內容。 根據 Weil 的說法,此 SlideShare 是了解更多有關 Twitter 如何分析社交圖譜的好地方。 Twitter 仍在嘗試使用 Facebook 的開源 NoSQL 數據庫 Cassandra 作為一項服務。
MySQL 從一開始就是 Twitter 的主要數據存儲,因為持久層增長到大量的集群。 Twitter 從一開始就部署了相當大的 MySQL。 有數千個 MySQL 集群,其中有數百萬個節點,每秒提供查詢服務。
Google Cloud 提供兩種類型的 NoSQL 數據庫服務:面向文檔的數據庫 Cloud Firestore 和數據存儲系統 Cloud Object Storage。 它易於使用並針對小型文檔進行了優化,使其成為移動應用程序的理想選擇。 可輕鬆縮放、性能良好且易於在Cloud Datastore中使用的文檔數據庫。
NoSQL 技術為世界上最繁忙的航空公司 Ryanair 的移動應用程序提供支持,該航空公司每月為超過 300 萬用戶提供服務。 在過去八年中,萬豪一直使用 NoSQL 來運行其預訂系統,該系統產生了 380 億美元的收入。 除了專有的內容管理系統外,美國第一大報紙出版商 The Chronicle of Higher Education 使用的 Presto 還使用了 NoSQL。
PostgreSQL 和 Cassandra 是 Instagram 的兩個後端數據庫系統。
Twitter 使用什麼樣的數據庫?

Twitter 使用關係數據庫來存儲其推文。 該數據庫旨在將數據存儲在一系列表格中,每個表格都包含有關推文特定方面的信息。 例如,用戶信息表、推文本身表和用戶之間關係表。
我們的某些服務可能需要某些此類信息,例如請求將您的請求路由到特定服務器,但這不是必需的。 如果你想路由你的請求,你不需要知道你的推文的時間戳。
儘管如此,數據仍保留在存儲中並進行處理。 無需刪除或匿名化信息。 政府無法訪問我們的數據,但它仍可用於收集有關您的信息。
由於此信息的存儲和處理,存在一些隱私問題。 它還允許政府首先跟踪您的行動和活動。 此外,它允許政府在未經您同意的情況下訪問您的個人信息。
我們不會存儲您的推文文本。 此帳戶的名稱和時間戳是我們唯一保留的內容。 我們不存儲您的推文內容。
您的推文不包含我們可以存儲在其中的任何數據。
我們只存儲上傳圖片時的賬戶名和時間戳。
使用 Mysql 的好處
Twitter 過去曾使用 MySQL 來存儲推文。 由於其可靠性和一致性,MySQL 可以處理大量請求。 Facebook 使用 MySQL 來存儲其所有社交媒體數據。
Facebook 使用 Sql 還是 Nosql?

因為它提供了數據建模的靈活性,而且在 FB 剛起步的時候 MySQL 無處不在,所以在 FB 的早期,SQL 被用作持久化數據庫,memcache 被用作“lookaside”緩存。
Facebook 數據庫存儲其客戶的資料,這些客戶約佔總客戶的 23%。 支撐 Facebook 互聯網規模、全球分佈式架構的基本原則適用於廣泛的業務關鍵型企業應用程序,包括多租戶 SaaS,並且可以從更好地了解 Facebook 的數據庫演變中吸取教訓。 TAO NoSQL Graph API 建立在流行的開源數據庫 Mystria的分片版本之上,是 FB 的 NoSQL API 之一。 TAO 將 FB 較舊的 1000 個手動加鹽的 MySQL 主從數據庫分區為數千個分片從屬。 因此,應用程序不再使用數據庫來執行跨分片事務和跨分片 JOIN。 因此,如果執行這種類型的故障轉移,最近的數據將會丟失。 因為所有對象和關聯都緩存在相同的服務器上,所以它們可以無限期地存儲在同一個分片中。
數據配置的程度被確定為用於最大化延遲數據訪問的重要優化技術。 在 FB 迫使他們放棄 SQL 查詢 API 後,開發人員社區放棄了 SQL,轉而使用 TAO 的自定義 NoSQL API。 十多年前創建的 Google 的 Spanner 數據庫是作為 FB 的 TAO 數據庫的一部分創建的。 與社交圖相反,Spanner 的數據模型更像是 OLTP 的傳統隨機訪問工作負載。 第二代分佈式數據庫建立在大規模可伸縮性和全球數據分佈的基礎上,作為數據庫層的一部分。 Spanner 使用每個分片的分佈式共識來確保每個分片(而不僅僅是每個實例)在服務失敗時保持高可用性。 儘管應用程序的集群配置已更改,但它仍然可以運行。

由於表級和行級地理分區等特性,與本地區域相關的數據將繼續排在列表的頂部。 在多分片事務中使用分佈式事務管理器來管理 2-Phase Commit 過程,以及每個節點中的時鐘偏差。 我們使用 TAO 作為 FB 的成本削減措施,使我們能夠保留對分片 MySQL 的投資。 谷歌選擇了一條不同的道路,Spanner 是一個全新的數據庫,具有水平擴展能力、無縫地理複製能力和易於基礎設施故障的能力。
NoSQL 數據庫流行的原因有很多。 該系統使用不同的數據存儲方法,在處理大量數據時效率更高。
許多知名企業都使用 NoSQL 數據庫,包括亞馬遜、Netflix、微軟、Snapchat 和 Dropbox。 選擇 NoSQL 數據庫是他們做出的最佳決定之一,因為他們的應用程序處理大量數據。
因此,NoSQL 數據庫為公司存儲數據的方式提供了更大的靈活性。 因此,有更好的組織和數據訪問。 此外,NoSQL 數據庫在處理大量數據方面具有更快的優勢。
對於需要存儲大量數據的企業來說,考慮 NoSQL 數據庫非常有意義。 由於他們獨特的數據處理方法,他們能夠以更高的速度和更有效的方式處理數據。
推特是否使用圖數據庫

Twitter 在 MySql 中保存主要數據,例如興趣圖、時間線和用戶數據。 Twitter 擁有數百個模式和數千個節點,在其最大的集群中每秒為數百萬次查詢提供服務。 圖計算中使用了 flockdb 服務。
討論了圖形數據庫的使用、它在 COVID-19 數據中的應用以及圖形的選擇語言。 聊天結束後,您可以在此處閱讀他們的見解。 參加我們今天美國東部時間下午 1:00 的推文聊天,標題為“2020 年圖形數據庫的狀態”。我們將提出幾個問題,以促進討論。 圖形數據庫在過去已被證明非常有用。 由於它能夠連接數據、處理大量數據並表現出色,因此所有具有分析意識的組織都需要它。 它們的區別在於它們可用於連接來自多個源而不是數據庫的數據。
用戶現在可以使用這些圖形從數據分析期間在圖形數據庫中找到的特定功能中獲益。 許多新用戶可能會作為第一個用例被引入#knowledgegraph,因為許多公司需要來自各種結構化和非結構化數據源的#analytics。 當談到#NLP 並將其輸出與各種來源相結合時,#graphdb 是最佳解決方案。 COVID-19 將在 GraphDB Q2 中進行更深入的討論。 # GraphDB 可能會在第二季度作為接觸者追踪解決方案得到大量使用。 因此,數據對於大型組織來說是不公平的,因為信息是可查找、可訪問、可互操作和可重用的。 RDF* 是一個屬性圖。
毫無疑問,存在混亂。 聯邦現在是一個有趣的話題。 此數據必須被攝取到 #graphdbs 文件中。 如果您正確建模,則不一定需要使用 RDF*。 使用圖形數據科學來連接和關聯不同的數據集是一種很好的方法。 如今,RDF* 和 LPG 之間沒有顯著差異。 啟用 RDF 的供應商通常支持標記的屬性,從而允許圖形算法和其他分析功能對以前的 RDF 完全不可見。
我應該在 PC 和移動應用程序之間使用 rdf 還是 sparcl? 事實上,從 RDF 生成屬性並不是火箭科學,但 ML 可能會從 #GraphDB @stevesarfield 圖 DBMS 中的屬性生成三元組。 當您查看本體時,您正在對它進行建模,它會跟著您上床睡覺。 此外,我們的編輯已經開始與 GraphDB 的市場進行交互。 我們的目標是匯總一份全面的清單,列出可供消費者使用的最佳產品。 通過組合結構化和非結構化數據,可以使用 GraphDB 創建知識圖譜,從而將其用作分析工具。 許多用戶會發現這是他們未來圖數據庫之旅的開始。
很長一段時間以來,FOSS 都是開源項目的首選來源,但它可能會在未來再次脫穎而出。 #GraphDB 可能是組織#IoT 生態系統中所有不同組件的最佳方式,因為它們在組織和生態系統中已經成熟。 信用卡公司使用 GraphDB 來檢測可疑的活動模式。 當您需要將不完美的模式與其他不完美的來源結合起來時,使用#GraphDB 可能是一個不錯的選擇。 保持聯繫並保持健康。 Cambridge Semantics 的 GOLAP 數據庫解決方案 AnzoGraphDB 在內存中大規模並行處理 (MPP) 圖形數據庫中提供大規模的上下文和意義。 圖遍歷查詢可以擴展以滿足複雜數據倉庫和分析的需求,它還可以處理大量數據聚合。 免費試用 AnzoGraphDB,看看它是否可以幫助您更好地管理大量數據。
社交媒體巨頭如何使用圖形數據庫來改進他們的平台
MySQL 是一種數據庫管理系統,最初用於存儲 Twitter 數據。 我們從一個小型數據庫實例轉移到一個大型數據庫實例,然後從一個大型數據庫實例轉移到另一個。 推特的數據庫用於存儲所有用戶信息,使其成為最強大的社交媒體公司之一。 該公司能夠通過分析用戶行為並跟踪他們的進度來改進其平台。 Instagram 搜索引擎最初由 Elasticsearch 提供支持,這是一個由 Facebook 構建的社交圖感知搜索引擎,但最終被 Unicorn 取代。 除了使用圖形數據庫來跟踪用戶的交互方式外,Instagram 還使用它來跟踪用戶之間的關聯方式。 Instagram 可以通過分析社交媒體數據來改善其用戶體驗並提供更多相關內容。 Facebook、Instagram 和 Twitter 使用圖形數據庫和分析來更好地了解用戶如何相互交互並構建更好的平台。