静态数据的大型电子表格:关系数据库或平面文件?

时间:2011-10-18 06:51:01

标签: ruby-on-rails database-design

我有一个电子表格,大约1500行x 1500列。顶部和侧面的标签相同,单元格中的数据是两个输入的量化相似度得分。我想创建一个Rails应用程序,允许用户输入行和列值并检索相似性得分。相似性得分是凭经验推导出来的,不能由控制器在数学上产生。

一些注意事项:每个单元都满了,超过一半的数据是冗余的;例如,(行34,列985)保持与(行985,列34)相同的值。并且行x将始终与列x完全相似。数据是静态的,并且不会改变多年。

这可以用一个db表完成吗?有没有更好的办法?我可以完全跳过关系数据库并以某种方式直接查询文件吗?

非常感谢所有的帮助和建议!

1 个答案:

答案 0 :(得分:1)

数据库始终是存储它的安全场所。关系数据库很简单,也是个好主意。但是有其他选择可以考虑。这些数据的访问频率是多少?是很少或经常访问?如果很少访问它,只需将其放入数据库中,让代码负责搜索和呈现。您将通过数据库索引等对其进行优化。

Flat-File是一个好主意,但是在运行时为每个请求进行读取和搜索都会太慢。

您可以在服务器启动时读取所有数据(来自db / file),并将其保留在内存中,并确保您的服务器不会经常重启。这意味着你的每个服务器都会将整个网格放在内存中,但计算速度非常快。如果使用REE并校准垃圾收集设置,则还可以在很大程度上最小化服务器的启动时间。

这是我的最终建议。只需以您知道的最简单的方式构建您的应用程序。一旦您知道应用程序的使用频率和程度,就可以开始优化。您基本上使用1125000个单元。对于要处理的数据库而言,这不是不合理的大数据集。但是,由于您的数据集不会发生变化,您可以通过传统的缓存技术走得更远。