【发布时间】:2015-12-08 01:07:32
【问题描述】:
我正在考虑构建一个日志记录应用程序。我正计划在 Ruby on Rails 中制作它,因为我稍微摆弄了一下它,这似乎是一个不错的选择。
但我现在担心的是数据库结构。据我所知,Rails 将为每个模型创建一个表。
因此,如果我有一个像 LoggingInstance 这样的模型,它每 10 秒存储一次记录时间、传感器 ID、值、单位和其他一些有趣的东西。一段时间后,我将在此表中有很多行。随着我添加更多传感器,行数将增加得更快。
我可以使日志记录更具体,例如:TemperatureLoggingInstance、PressureLoggingInstance 等,但这可能会导致相同的性能问题。
我想知道的是一种更好的方式来存储所有数据。我在想是否可以将每个传感器记录值保存在单独的表中,但我将如何在 Rails 中实现它。或者有更好的方法吗?
我担心当我从一个传感器调用值时,数据库的性能会变差。
我计划使用 RailsAPI gem,让一个应用程序只运行数据处理,然后是一个前端应用程序,它使用 API 来可视化数据。
性能问题可能几年后不会成为问题,但我想构建数据库,以便在其中包含大量数据并具有良好的性能。
所有提示或参考资料均已应用 :)
【问题讨论】:
-
我猜你的任务不需要关系数据库。您不必将
ActiveRecord与rails 一起使用,您可以使用实际喜欢的每个数据库 -
由于您提到的原因,像 MySQL 这样的传统 RDBMS 不太适合记录。不过,正确的解决方案将完全取决于您的用例。您每小时将进行多少次写入?每月?您希望如何访问数据(简单过滤、复杂查询?)以及访问频率?
-
就像@Jordan 所说,为您的任务选择 mysql 将是一个错误。您需要一些特定于时间序列的数据库,或者一些 nosql db
-
欢迎来到 Stack Overflow。您的问题不适合本网站。您是在向我们征求对一个缺乏细节的非常广泛的问题的意见。您还要求提供参考,这又是题外话了。请阅读“How to Ask”和meta.stackoverflow.com/questions/254393。我建议您进一步研究,因为您会发现记录到数据库是一个主题。
-
@乔丹。如果我有 100 个具有 10 秒值的传感器,则每小时写入次数将超过 800 000 次。而且我计划能够记录的不仅仅是 100 个传感器。我现在明白我应该研究除 MySQL 之外的其他数据库。感谢您的反馈。用例尚未完全指定。现在的主要问题只是存储这些数据。我们还希望只对一个系列进行分析,但也要对不同的系列进行关联,并可能对一些系列进行 PCA 分析。
标签: mysql ruby-on-rails ruby