拯救爆表的MySQL-小红书万亿级存储系统自研与迁移之路 (拯救爆戾男主)
作者: 空洞 (存储组),刘备 (存储组负责人)
背景
小红书是一个以年轻人为主的生活记录和分享平台,用户可以分享生活方式和生活片段。小红书的社交领域中,用户、笔记、商品等实体之间存在各种关系,例如关注、点赞、收藏等。随着用户数量和活跃用户数量的爆发式增长,小红书的社交图谱数据规模已经达到万亿条边的规模,并且增长速度非常快。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的话,我们找谁去?
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。