Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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
Ruby on rails 对于管理整个学校区域的大型系统,关系数据库还是非关系数据库?_Ruby On Rails_Database Design_Relational Database_Non Relational Database - Fatal编程技术网

Ruby on rails 对于管理整个学校区域的大型系统,关系数据库还是非关系数据库?

Ruby on rails 对于管理整个学校区域的大型系统,关系数据库还是非关系数据库?,ruby-on-rails,database-design,relational-database,non-relational-database,Ruby On Rails,Database Design,Relational Database,Non Relational Database,我正在构建一个大型web应用程序,它将帮助“地区经理”管理多个地区的多所学校 总共约有40万名学生和教师 除了管理诸如成绩等明显的事情外,我们还必须管理出勤(每天) 我习惯于以较小的规模构建web应用程序,并将其部署到Heroku。考虑到这样一个规模的系统,我应该从现在开始考虑使用非关系数据库,还是应该坚持使用PostgreSQL并进行特定的优化以确保高速和数据完整性 如果不清楚的话,主要的问题是在关系数据库系统中,系统在管理这么多表中的这么多记录时速度太慢 另外,如果建议使用关系数据库,我可以

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

总共约有40万名学生和教师

除了管理诸如成绩等明显的事情外,我们还必须管理出勤(每天)

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

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

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

谢谢


另外,我的团队在我们应该采取的措施上存在分歧,所以你们将提供一个有用的声音来帮助平衡:)

坚持使用postgresql。为什么还有更好的呢

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

  • 在右边的栏上
  • 有栏杆,可能还有


  • Postgresql提供了磁盘上的数据存储。使用ReDIS缓存页面可以将数据库查询和HTML的渲染部分缓存在内存中,以避免触摸磁盘。

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

    如果您正在存储任何可识别的个人信息,请仔细权衡您的选择,如果您不确定差异是什么,请使用您知道如何保护的信息

    同样,考虑分离数据——一些关系的和一些不相关的数据可能并不有害。如果您可以灵活地从头开始构建系统,那么在您的情况下最适合您的就是最适合您的

    建议如下:

    建议查看:

    • (我喜欢OWASP!)

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

    Facebook运行。我不知道对于这个系统来说,40万人是否意味着40万用户:我不这么认为,但Facebook仍然比MySQL大几个数量级,并且使用MySQL

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

    使用你觉得舒服的东西,使用你最感兴趣的东西,使用你认为未来几年将使用的东西,或者使用你认为容易购买支持的东西。不要因为这个选择而在意账户的可伸缩性,因为在你面对问题之前,你不知道如何解决。你甚至不知道它是否完全存在


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

    您希望存储多少数据?它将是什么样的数据?有多少张桌子?有几十张桌子。数据将是各种类型的(从常规字符串到整数再到布尔数据)。几乎任何(和所有)类型的数据,你可以想象,一个地区的学区管理员将要存储。从每个学区每个学生的出勤率到分数,再到支付了全额学费的学生,再到两者之间的一切。我只是计算了旧系统中的表数(原来的系统是用Rails 2.x编写的,所以我将从头开始重新编写)。该系统有52个表,我被告知他们希望能够捕获更多数据。所以,不用说……这是一个非常复杂的数据集。有很多文章强调了NoSql安全性的优点,但我现在发现的所有文章都需要注册。很抱歉不全是坏事。我只是说这是不同的,在你的情况下,我敢打赌会有大量的敏感数据。你说得很对。这里有一堆敏感数据——至少,如果数据落入坏人手中会很烦人。因此,我认为这是我最好的选择——但你能给我更多关于我为什么要使用Redis的细节吗?你说我应该坚持使用PostgreSQL,但你建议使用redis?这只是为了存储缓存吗?@marcamillion请参阅Updateso,这样我就不会误用和混淆术语了……Redis可能是memcached的替代品?还是会用于其他用途?@marcamillion肯定其中任何一种都能起作用,redis给了你更多的灵活性好吧……我只是想确定我知道你要去哪里。是的,这就是我心目中的建筑。谢谢你为我确认!谢谢你的链接。我一定会记住的。