用于嵌入式应用程序的PostgreSQL或SQLite3

时间:2014-06-09 21:59:07

标签: ruby-on-rails ruby postgresql sqlite

我们正在设计一个Rails 4.1应用程序,它将被部署到小盒子中,很可能是基于ARM的(例如CuBox-i2eX)或者如果ARM不削减它的话会更便宜Intel NUC

将在同一个盒子上运行一些其他服务,这些服务将获得大部分流量,而Rails应用程序主要用于管理目的,大多数时间只有最小流量,但是应该处理少数人的大量工作流程。次(输入数据)。大多数规模的总体数据量都很小。

此时似乎SQLite3对于这种应用程序来说是理想的,但是托管数据描绘了学生,教师等类似LDAP的模式,并且包含许多具有多个值(或结构)的属性,使其成为理想选择对于PostgreSQL的arrayh-store数据类型,在SQLite3中实现起来有些麻烦。

我知道Rails的serialize,但我需要查询至少其中一些多值列,让我在两个选项之间:

  1. 咬掉(记忆)子弹并使用PostgreSQL,希望它不会占用小盒子
  2. 为所有类似数组的属性创建不同的表/模型,例如: EmailAddressTelephoneNumber
  3. EAV的变体,但是使用Rails的单表继承来制作EmailAddress < StringValueTelephoneNumber < StringValue,并在需要时将它们与多态关联结合在一起,以便StringValue可以属于多个模型。
  4. 所以我的问题是:当我使用STI和多态关联时使用完整的PostgreSQL安装时没有任何缺点,而我不需要一个性能。

1 个答案:

答案 0 :(得分:2)

我偏袒旧学校,但我个人会将数据标准化。这为您提供了未来的证明,可以生成您之前没有想过的查询。当你没有担心安全问题时(我想要隐藏某些应用程序/用户的某些数据)或者我不希望做多少架构更改,我倾向于支持sqlite。 (ALTER TABLE在SQLite中受限)。

我曾尝试在Android平板电脑上设置Postgresql,但最终无法这样做,因为它试图使用不可用的内核工具(与共享内存相关)。如果您想尝试这个方向,请确保您可以让它在您的环境中运行。