首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你是如何构建海量设计数据库的?

你是如何构建海量设计数据库的?
EN

Stack Overflow用户
提问于 2011-07-21 22:29:40
回答 3查看 150关注 0票数 1

这只是一个关于海量数据库设计的设计问题。例如,如果您要构建一个可容纳1000万用户的数据库,您将如何构建它?

我的主要好奇心是像数据库复制这样的东西,这真的可以加速任何东西吗?

在构建这种大小的数据库时,假设字段是“用户名”、“姓名”、“公司”、“道布”、“性别”,除了创建一个表之外,还应该考虑什么?索引?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-21 22:45:00

1000万并不是特别大,但它足够大了,你应该仔细考虑你的选择。

复制可以提供很多帮助。假设您读取users表的次数比写入的次数多得多,那么您可以考虑使用只处理写入的master数据库。你的应用程序所做的任何读取都将来自N个从属盒子中的一个。

当然,索引非常重要。您需要在任何经常被搜索的列上建立索引(无论是在WHERE子句中,还是作为与其他表的关系的结果(read: JOINS))。关于如何分析您的应用程序发出的查询的种类,以及如何基于该分析巧妙地定义索引,已经写了很多文章。如果你刚刚学到这些东西,那就去读一些书,然后带着更有针对性的问题回来。

除了单主机复制(和仔细的索引)之外,当您开始变得非常庞大时,您可能会开始考虑partitioning --但这是我只读过的内容,所以我不想说太多。

票数 3
EN

Stack Overflow用户

发布于 2011-07-21 22:44:54

一千万条记录不一定是一个大数据库。有些人会考虑大型数据库,它由数亿行或更多行和of或of的存储组成。

除了典型的规范化之外,如果不能做任何事情来减少表的深度(行数),那么索引肯定会有帮助。

票数 0
EN

Stack Overflow用户

发布于 2011-07-21 22:45:08

一如既往,这取决于用例。您将在数据库上运行哪些查询?

有些应用程序只按用户名或uid检索用户,因为键值存储是完美的,并且具有无限的可扩展性。

如果您有其他的搜索查询,那么您可以将数据放入SQL (在适当的列上有索引),或者使用外部search 全文搜索引擎(lucene,sphinx)。您还可以在不同的副本上构建不同的索引,这样每个副本都可以用于特定的查询,但仍然可以获得良好的插入性能(当然不是针对用户表,而是针对与用户相关的数据)。

如果您有复杂的查询,连接多个表,那么SQL可能是唯一的选择,但您仍然可以在用户名和用户相关数据上使用分片进行扩展。同样,这取决于查询是什么。对于离线查询(统计数据、报告),您可以在每个分片上进行连接并合并结果集(map-reduce,gearman框架可以在这里提供帮助)。

最后,您可以混合所有这些方法,使用key-value进行登录,使用SQL进行复杂查询,并使用复制来实现持久性和性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6777708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档