Ruby on rails 我应该在Rails应用程序的活动记录中存储JSON吗
我正在用RubyonRails开发一个赛马应用程序。简而言之,我接收赛马图表的文本文件,并将它们导入到我的应用程序中。该应用程序旨在为用户提供一种简单的方式来查看比赛图表,并提供各种统计信息和过滤。我已经为许多数据领域开发了一个非常好的下降数据模型,它应该解决应用程序的静态和过滤方面的问题。然而,当涉及到允许用户轻松查看图表时,我对我的解决方案并不满意。目前,我必须获取所有不同的数据字段并创建一个图表对象。这对我来说似乎效率很低。或者,我可以在导入时创建一个JSON图表对象,然后将序列化对象存储在活动记录中。通常,用户一次会请求多个图表对象,因此速度很重要。如您所见,它是一个相当复杂的数据结构 我只在rail开发部门工作了几年,这只是我的一个爱好,所以我希望能从一些更有经验的rails开发人员那里得到一些信息。这里有几个问题:Ruby on rails 我应该在Rails应用程序的活动记录中存储JSON吗,ruby-on-rails,json,ruby-on-rails-3,Ruby On Rails,Json,Ruby On Rails 3,我正在用RubyonRails开发一个赛马应用程序。简而言之,我接收赛马图表的文本文件,并将它们导入到我的应用程序中。该应用程序旨在为用户提供一种简单的方式来查看比赛图表,并提供各种统计信息和过滤。我已经为许多数据领域开发了一个非常好的下降数据模型,它应该解决应用程序的静态和过滤方面的问题。然而,当涉及到允许用户轻松查看图表时,我对我的解决方案并不满意。目前,我必须获取所有不同的数据字段并创建一个图表对象。这对我来说似乎效率很低。或者,我可以在导入时创建一个JSON图表对象,然后将序列化对象存储
ActiveRecord::Base.serialize
,Rails将自动将哈希编码为YAML进入数据库,并将其解码回哈希
PostgreSQL是一个技术上优越的数据库。如果您刚刚起步,请使用MySQL,因为PostgreSQL从Oracle DDBMS学到了它所知道的关于用户友好性的一切。您可以在MySQL中轻松地序列化为BLOB。但是序列化到PostgreSQL hstore的关键是查询
数据库SELECT语句的WHERE子句不能始终读取所有BLOB或文本。某些系统仅读取前256个字符。字符将包含JSON/YAML标记和转义,因此您无法轻松查询复杂文本。但是PostgreSQL SELECT语句知道hstore字段包含JSON,并且它们支持一种特殊的表示法来通过键和值查询它们
您可能不需要查询JSON中的任何内容。这就引出了我的最后一点:即使你只是在做一个学习者项目,也要写很多自动测试。所有这些决定都不是一成不变的,所以现在就写任何可行的东西,保持干净,保持测试通过,当需要升级时(例如从MySQL迁移到PostgreSQL),测试将对您有所帮助。我一直在使用Postgres和一个可以很好地存储任意属性的列。可能值得一看。PostgreSQL 9.3(我认为)支持原生JSON数据类型,这将使在db级别上使用它更容易(如果您以后希望查询JSON)。另一种方法是缓存图表,并提供预呈现的图表。当谷歌搜索从堆栈溢出答案链接时,这很有趣,一段时间后,问题本身成为该搜索的首要结果。谷歌跟踪RSS提要以帮助其动态重新排名。希望我们能开始
robot.txt
——在任何十年内都能找到过时的0.9版答案。然而,这一机制确实让内容保持新鲜