Mysql 数据库设计(大表)

Mysql 数据库设计(大表),mysql,Mysql,什么是大表(即谷歌数据库设计),我有这样的要求,但我不知道如何设计它 在大表中,如何维护它们之间的关系?使用维护关系的innodb存储引擎创建所有表 根据需求选择表格字段,并将其限制在需求范围内谷歌发布的《大表格》一文可能很难阅读。希望我的回答能帮助你开始理解 在过去,RDBMS按行存储数据,一条记录一行,1,2,3,4,5 然后,如果您想找到记录5,没关系,数据库将在B+树(或类似的东西)中查找记录5的地址,然后为您加载它 但噩梦是,当您想要获取包含列“user=Michael”的记录时,数据

什么是大表(即谷歌数据库设计),我有这样的要求,但我不知道如何设计它


在大表中,如何维护它们之间的关系?

使用维护关系的innodb存储引擎创建所有表


根据需求选择表格字段,并将其限制在需求范围内

谷歌发布的《大表格》一文可能很难阅读。希望我的回答能帮助你开始理解

在过去,RDBMS按行存储数据,一条记录一行,1,2,3,4,5

然后,如果您想找到记录5,没关系,数据库将在B+树(或类似的东西)中查找记录5的地址,然后为您加载它

但噩梦是,当您想要获取包含列“user=Michael”的记录时,数据库只能查找每个记录,以检查用户是否为“Michael”

大表有不同的数据存储方式。它通过一个倒排表存储所有列。当我们想要找出所有满足“user=Michael”的记录时,它通过B+树或哈希表将其作为一个键来查找,并获得存储所有满足的记录列表的倒排表的地址

也许Lucene是一个很好的起点,它是一个开源全文搜索引擎,完全实现了大表原则

请注意,倒置表在RDBMS中不是基于列的存储。他们是不同的,请记住这一点