Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design DB设计:针对拥有1亿用户的网站_Database Design_Performance - Fatal编程技术网

Database design DB设计:针对拥有1亿用户的网站

Database design DB设计:针对拥有1亿用户的网站,database-design,performance,Database Design,Performance,我正在寻找一个关于DB设计的建议,不是从模式设计的角度,而是应该如何在不同的服务器上分布DB表 简单地说:例如,我有10-15个表,其中包含注册用户的所有信息 但是,如果用户数量巨大,超过1亿,那么是否应该将数据库模式划分为不同的服务器,并使用数据库实例专门存储不同表的数据 我的理解是,对于应由一个DB实例监控的数据大小,应该有一个最佳限制。如果超过了这个最佳限度怎么办 请告知 问候,, 马扬克 编辑: 好吧,我会重申我的问题,并试图把事情弄清楚。 我脑海中浮现的是: 编写一个DBSchema来

我正在寻找一个关于DB设计的建议,不是从模式设计的角度,而是应该如何在不同的服务器上分布DB表

简单地说:例如,我有10-15个表,其中包含注册用户的所有信息

但是,如果用户数量巨大,超过1亿,那么是否应该将数据库模式划分为不同的服务器,并使用数据库实例专门存储不同表的数据

我的理解是,对于应由一个DB实例监控的数据大小,应该有一个最佳限制。如果超过了这个最佳限度怎么办

请告知

问候,, 马扬克

编辑:

好吧,我会重申我的问题,并试图把事情弄清楚。 我脑海中浮现的是:

编写一个DBSchema来支持应用程序。该应用程序将允许用户注册,状态更新等在facebook或其他东西 只使用一个DB实例,从理论上讲,postgresql实际上也可能支持这个实例。 随着用户数量的增加,只需增加服务器容量即可。硬盘和CPU 但是,据我所知,数据越多,查找的时间就越多

此外,中央数据库中的所有数据可能无法灵活地在用户密度较高的位置传播

不同的服务器可能不在区域内放置。所以,一个关于事物分布的想法

关于分布式DBs或文件系统,我对SQL DBs不太满意

因此,我考虑在不同的DB实例/服务器下逻辑地分布要监视的表

我正试图写这样一个应用程序,这是我第一次在DBs上工作。如果我觉得奇怪,或者我对DB事物的理解为零,或者诸如此类,请发表评论

我将非常感激

问候,,
马扬克[P/>>P>对于一个数据库来说,它是一个巨大的规模,你可能想考虑分布式数据库,比如谷歌的

分布式文件系统。 是Apache Hadoop项目的一个这样的实现,该项目位于


Facebook也使用HDFS集群,事实上,这是一个

我建议,如果你打算建立一个如此规模的数据库,你首先需要做的就是聘请一位大型数据库设计和高性能方面的专家。这是一个在论坛上无法回答的复杂问题。它要求你有全职的专业知识。这是保证成功实施的最佳方式

@marc_s:这篇文章说的是1亿用户,而不是1亿行。@marc_s:谢谢你的善意回复。我脑海中浮现的一个明显的问题是,为什么facebook有1800个运行MySql的实例。我知道他们现在已经搬到了NoSqlstuff@marc_s:我没有看行数;我在看用户的数量。假设在任何时候只有1%处于活动状态。看起来真正的问题可能是如何处理一百万并发用户。我可以在我的台式计算机上处理1亿行乘以15个表,但它不能容忍100万并发用户。@marc_s:嗯,1亿用户的数据存储在数据库中。让我们假设服务器能够支持100万并发用户。但是用户信息基于一些输入,在1亿用户的数据中搜索100000个用户,它的效率有多高?正如我所说的-我相信任何严肃的RDBMS都可以轻松处理这种负载谢谢你的回复。但是,不使用分布式数据库,我会考虑使用正常的DBS并在不同的DB实例下分配表。它可以让我更好地控制数据的分布方式。嗯,我对分布式DBs了解不多,如果我wrong@Mayank:如果分发表,则必须在服务器之间进行联接。这意味着数据必须在服务器之间传递。不要分发表格;分发数据库。因为您对分布式数据库了解不多,所以最好从今天开始学习。@Catcall:我认为内部分布式数据库肯定也在做同样的事情,但做得更好。我的意思是,如果我做一个表连接,很可能实际存储的数据在两个不同的服务器上。可以建议使用仔细分区的表来代替分布式数据库。我不愿意使用分布式数据库的原因是,我在很多地方都读到,它们在使用时不如Oracle/PostgreSql可靠concurrency@Mayank:您认为在管理您想象中的并发问题方面,您能比Oracle的程序员做得更好吗?如果您有很多并发用户,您可能需要考虑负载平衡服务器、复制等。你需要填补知识上的空白。现在,您似乎有了一个解决方案,可以在不同的服务器上存储表以查找问题。