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 如何设计其好友关系的问题,答案是它设计得非常好。 对于无法协助您实施的事实,我深表歉意。