2

我正在构建一个大型网络应用程序,它将帮助“区域经理”管理多个地区的多所学校。

总共有大约400,000名学生和教师。

除了管理成绩等显而易见的事情之外,我们还必须管理出勤率(每天)。

我习惯于以较小的规模构建 Web 应用程序,并将其部署到 Heroku。鉴于这种规模的系统,我应该考虑从现在开始使用非关系数据库,还是应该坚持使用 PostgreSQL 并进行特定优化以确保高速和数据完整性?

如果不清楚,主要问题是系统在管理这么多表中的这么多记录时速度太慢 - 在关系数据库系统中。

另外,如果建议使用关系数据库,我可以做哪些常见的优化来确保速度?最大、最明显的一个是对最常访问的信息使用索引......其他类似的东西将不胜感激。

谢谢。

PS 我的团队在我们应该做什么方面存在分歧,所以你们会发出有用的声音来帮助平衡:)

4

4 回答 4

3

坚持使用postgresql。为什么别的东西会更好?

根据您提供的少量信息,我猜您的表现可能会归结为两件事:

  1. 正确的列上的正确索引
  2. 使用 rails 和redis缓存

Postgresql 在磁盘上提供数据存储。使用 redis 缓存页面允许将数据库查询和渲染的 HTML 部分缓存在内存中,以避免接触磁盘。

于 2013-01-01T19:42:47.537 回答
2

设计适当的索引是性能架构的重要组成部分,但您不是为信息设计索引,而是为查询设计索引。而且它与关系数据库和非关系数据库之间的选择关系不大,因为两者都要求您设计“适当的”索引。有关更多详细信息,请参阅我的演示文稿如何设计索引,真的

于 2013-01-01T20:01:18.027 回答
1

除了性能之外,请务必考虑安全问题。并不是说 NoSql 数据库一定不好,但它是不同的。保护非敏感数据的方法可能不同。

如果您要存储任何个人身份信息,请仔细权衡您的选择,如果您不确定差异是什么,请使用您知道如何保护的内容。

此外,考虑隔离数据可能没有坏处——有些是关系型的,有些不是。如果您可以灵活地从头开始构建系统,那么最适合您的情况就是最适合您的。

推荐阅读:

建议观看:

于 2013-01-01T19:47:01.210 回答
1

Facebook 运行MySQL。我不知道 400K 人是否意味着这个系统的 400K 用户:我不这么认为,但 Facebook 的数量级仍然高出几个数量级,并且使用 MySQL。

事实是:扩展很难。如果 NoSQL 后端足以轻松扩展,那么现在没有人会真正从关系数据库开始,你不觉得吗?我知道这并不是您问题的真正答案,但我认为对此没有简单的答案

使用任何你觉得舒服的东西,使用最让你兴奋的东西,使用你认为你将在未来几年使用的东西,或者使用你认为很容易购买支持的东西。不要在意这种选择的账户可扩展性,因为在你遇到问题之前你不知道如何解决。你甚至无法知道它是否完全存在。

顺便说一句,与 SQL 和 NoSQL 相比,容错、缓存和其他对性能产生更大影响的因素有很多考虑因素。顺便说一句,并非所有关系数据库引擎都是相同的(所有 NoSQL 数据存储都不是......)

于 2013-01-01T20:08:03.043 回答