当前位置:首页 > 数码 > 拯救爆表的MySQL-小红书万亿级存储系统自研与迁移之路 (拯救爆戾男主)

拯救爆表的MySQL-小红书万亿级存储系统自研与迁移之路 (拯救爆戾男主)

admin6个月前 (05-15)数码2941

作者: 空洞 (存储组),刘备 (存储组负责人)

背景

小红书是一个以年轻人为主的生活记录和分享平台,用户可以分享生活方式和生活片段。小红书的社交领域中,用户、笔记、商品等实体之间存在各种关系,例如关注、点赞、收藏等。随着用户数量和活跃用户数量的爆发式增长,小红书的社交图谱数据规模已经达到万亿条边的规模,并且增长速度非常快。

REDtao 的图模型和 API

REDtao 采用了 Facebook Tao 图存储系统的模型,将关系表示为一个 <key, value> 对,其中 key 是 (FromId, AssocType, ToId) 的三元组,value 是属性的 JSON 格式。 REDtao 为业务方提供了 25 个图语义的 API,满足了业务方的增删改查需求,并收敛了业务方的使用方式。相比于 Facebook 的 Tao,REDtao 还补充了社交图谱所需要的图语义,为反作弊场景提供了额外的过滤参数。

REDtao 的架构

REDtao 采用了缓存和底层数据库相结合的架构,将缓存和底层数据库封装起来,并对外提供统一的图查询 API。 缓存层使用 Redis,支持对不同的字段配置局部二级索引,提高了查询效率。 底层数据库层使用 MySQL,存储持久化数据,保证数据的可靠性。

REDtao 的优势

REDtao 自研带来的优势包括: 降低了数据库压力,提高了系统稳定性。 减少了数据库成本,降低了运维压力。 提供了统一的图查询 API,简化了业务开发。 支持局部二级索引,提高了查询效率。

案例分析

下面是一个获取关注了 A 的所有正常用户(并且剔除作弊用户)的 API 调用示例: ``` getAssocs(被关注类型, 用户A的ID, 分页偏移量, 最大返回值, 只返回正常用户,是否按照时间从新到旧) ``` 小红书万亿级存储系统自研与迁移之路

总结

REDtao 是小红书自研的超大规模社交网络图存储系统,它结合了缓存和底层数据库的优势,为小红书的社交领域提供了高效、稳定、低成本的存储解决方案。REDtao 的成功实施大大提高了小红书的系统稳定性,减少了数据库压力和成本,也为业务开发提供了更加便捷的工具。

nosql和mysql的区别

NoSQL与关系型数据库设计理念比较关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。 而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。 特点:它们可以处理超大量的数据。 它们运行在便宜的PC服务器集群上。 它们击碎了性能瓶颈。 没有过多的操作。 Bootstrap支持缺点:但是一些人承认,没有正式的官方支持,万一出了差错会是可怕的,至少很多管理人员是这样看。 此外,nosql并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验

什么是Mysql数据库,与其它数据库的区别和特点是什么?

MySQL(发音为my ess cue el,不是my sequel)是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。 由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。 MySQL因为其速度、可靠性和适应性而备受关注。 大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。 MySQL关系型数据库于1998年1月发行第一个版本。 它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、 Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。 MySQL开发组计划于2001年中期公布MySQL4.0版本。 在这个版本中将有以下新的特性被提供:新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索功能。 在此之后,MySQL开发着希望提供安全的数据复制机制、在BeOS操作系统上的MySQL实现以及对延时关键字的定期刷新选项。 随着时间的推进,MySQL将对ANSI 92/ANSI 99标准完全兼容。 MsSql---->MicroSoft Sql Server,需要money,而且很多呢。 (大型项目用,大型网站用) MySql---->免费的。 速度快。 可以用于小型项目。 mysql数据库和oracle的区别和选择:LAMP大会的时候我跟Yahoo的一个技术高管聊的时候,我问他Yahoo在选择MySQL还是 Oracle的时候是怎么考虑,他的答案令我非常惊讶。 他说大部分的时候我们是会用MySQL的,因为它的性能已经达到我们的要求。 但是什么时候我们会选用Oracle呢,就是当我们需要存储收费用户的数据的时候。 我就问为什么,难道Oracle比MySQL稳定吗?他说,这个倒没有特别考虑。 关键是如果使用Oracle的话,当出现问题的时候我们可以找到负责人,Oracle会负责事故的处理,但是如果用MySQL的话,我们找谁去?

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: MySQL

“拯救爆表的MySQL-小红书万亿级存储系统自研与迁移之路 (拯救爆戾男主)” 的相关文章

实用性极强的-MySQL-查询优化策略 (实用性极强的app)

实用性极强的-MySQL-查询优化策略 (实用性极强的app)

在程序上线运行一段时间后,一旦数据量上去了,或多或少会感觉到系统出现延迟、卡顿等现象,出现这种问题,就需要程序员或架构师进行系统调优工作了。其中,大量的实践经验表明,调优的手段尽管有很多,但涉及到...

Java开发者的MySQL数据库版本管理策略-从规划到部署的全面指南 (java开发工程师)

Java开发者的MySQL数据库版本管理策略-从规划到部署的全面指南 (java开发工程师)

数据库是软件开发中常用的关系型数据库之一。版本管理是保障数据库稳定性和可靠性的重要方面。本文将介绍针对 Java 开发者的 MySQL 数据库版本管理策略,包括版本控制工具选择、数据库脚本管理、变...

实战-MySQL-数据库压力测试与性能评估方法-Java (实战篮球鞋排名)

实战-MySQL-数据库压力测试与性能评估方法-Java (实战篮球鞋排名)

压力测试的目的和重要性 压力测试是模拟真实环境中并发用户访问数据库的场景,通过增加负载来测试数据库系统的性能表现。压力测试的目的是发现数据库在高负载下的性能瓶颈、资源利用情况和响应时间等指...

核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)

核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)

简介 Savepoint 是 MySQL 中的一种机制,允许在事务中创建标记点,以便在事务失败时回滚到该标记点。Savepoint 的原理是将事务的当前状态存储在各种数据结构中,包括服务器层、b...

使用-数据库并自动发送备份文件到指定邮箱-K8s-定期备份-MySQL (使用数据库的命令)

使用-数据库并自动发送备份文件到指定邮箱-K8s-定期备份-MySQL (使用数据库的命令)

简介 本文档描述了一个使用脚本来监控服务器高占用率进程并通过电子邮件发送警报的项目。本文还探讨了使用相同机制备份数据库的可能性。 技术 Python psuti...

обеспечение-и-данных-MySQL锁机制-предотвращение-конфликтов-согласованности (翻译)

обеспечение-и-данных-MySQL锁机制-предотвращение-конфликтов-согласованности (翻译)

锁机制是一种通过对数据进行加锁来防止数据冲突和不一致的技术。MySQL 采用了两种类型的锁:共享锁和排他锁,以实现并发访问数据的同时保证数据的一致性。 共享锁 (SharedLock)...

MySQL-实现非中断亿级数据处理的秘密 (mysql-bin文件可以删除吗)

MySQL-实现非中断亿级数据处理的秘密 (mysql-bin文件可以删除吗)

MySQL 在海量数据管理方面表现得非常出色,能够存储上亿级别的数据,同时还具有极高的数据可靠性,几乎不会发生数据丢失的情况。这一强大的特性离不开 MySQL 的两大日志系统:binlog 和 r...

揭秘MySQL中Varchar和Int的隐式转换 (揭秘国安部点名的间谍机构)

揭秘MySQL中Varchar和Int的隐式转换 (揭秘国安部点名的间谍机构)

前言 在一次例行测试中,我们遇到了一个奇特的现象。一条查询库存数量的SQL语句,居然返回了0条记录。当我们手工执行SQL时,却查询到了一条记录。调查发现,原因在于MySQL的优化器在判断数据类型...