8

我有一个伙伴运行一个网络应用程序,供人们列出待售汽车。有几千个客户在使用它,每个客户在数据库中都有数百甚至数千行(有些已经使用了 5 年,每月销售数百辆汽车,每次销售有 10 行(评论、消息、 ETC))。他一直在一台具有 20GB 或 RAM 和几个处理器的物理服务器中的一个 SQL Server 数据库中运行这个系统,没有任何问题。这是某种奇迹吗?

就像大多数程序员一样,我不是 DBA,只能靠 ORM 等方式勉强度日。在我所见的任何地方,人们都在谈论需要为 Web 应用程序的大用户分片或获得单独的数据库服务器。为什么是这样?拥有一个包含很多或行的大型数据库真的那么低效吗?我应该计划使用 Cassandra 还是其他东西,或者我可以依靠 Postgres 很好地扩展?

4

6 回答 6

9

我个人认为您所描述的不是那么大的数据库。服务器(20 gigs ram?;))听起来不错。它更多的是关于使用和设计。如果数据库被索引并且设计良好,它可以在当前硬件上增长很多很多。

在进行任何类型的切换之前,如果担心性能问题,我会简单地查看归档无用数据和优化查询。

于 2010-09-10T22:39:18.690 回答
6

分片和分离数据库服务器的原因是,在某些时候,使用多台便宜的机器比使用一台昂贵的机器更便宜。硬件价格不会与性能成线性关系,一旦达到某个点,获得两倍数量的机器要比获得速度快两倍的机器便宜得多。

于 2010-09-10T22:46:44.280 回答
3

在 SQL Server、Oracle 或任何现代关系或非关系数据库中应该没有问题。我管理过包含数百万条记录和数 TB 数据的数据库。

于 2010-09-10T22:36:38.757 回答
3

通常,您将组件拆分到不同的服务器上,这样您就可以更轻松地管理正常运行时间、弹性和性能。

当然很可能有一台巨型机器可以完成所有工作,但是如果您的主板死机或您的数据中心不可用,您可能需要另一台巨型机器。

通过拆分网站或应用程序,在不同的服务器中更容易获得更便宜的机器,并且更多。因此,您可以建立弹性,并且没有对硬件冲突有类似要求的组件。

考虑服务器的恢复时间和恢复计划也很重要。
当您的机器死机时会发生什么情况,您可以在约定的时间内更换它吗?你能在那个时候从备份中恢复吗?

SQL Server 或其他企业级数据库对 10 或 100GB 数据库应该没有任何问题,只要它们没有设计得太糟糕。(我们有几台具有这种容量/用途的机器根本没有挣扎。)。

于 2010-09-10T23:10:19.897 回答
2

在我看来,这没什么。在数据库大小超过 10 GB 的多个表上拥有数千万行并不会导致 MS SQL Server 出现问题。当然,这么多数据并不会太快,但除此之外它工作得很好。

为了回答这个问题,太大就是太大,它确实会引起问题。何时开始引起问题取决于表结构和您的性能需求。

于 2010-09-10T22:38:17.507 回答
2

数据库在存储和检索关系数据(即结构化并引用其他数据的数据)方面非常有效——这就是它们的设计目的。老实说,99% 的人在谈论键值存储和 Cassandra 之类的东西时根本不知道他们在做什么。数据库服务器非常适合存储大量数据,特别是如果您愿意投入一些工作来正确调整它。

也就是说,Cassandra 等有一些用例。人。- 如果您有大部分非结构化的键/值数据或不需要一致性或想要分片以实现冗余,则可能值得研究。

除非您是一个非常受欢迎的网站,否则您可能可以使用一个不错的数据库服务器来解决问题——在您确定需要切换的原因之前不要切换。切换很好,只要确保您切换是因为它更好地满足您的需求,而不是因为它是“很酷的网络规模的事情”

于 2010-09-10T22:43:21.313 回答