2012-10-23 68 views
1

我正在写一个Rails引擎推销自己的网站上门票事件。我正在实施门票折扣。我们将有很多潜在的折扣:的NoSQL为Rails引擎上的MySQL,PostgreSQL或SQLite3的

  • 10%关闭所有门票
  • 10折购买X门票或更多
  • 购买X,送一
  • $ 5折购买
  • $ 5购买X门票或更多

我有折扣表, d我需要为每种类型的折扣进行存储的多种属性。我认为我总希望避开STI,因为我们正在进行各种折扣,以及在处理类似折扣时混淆数据有多容易。

我宁愿在PostgreSQL中使用hstore一个属性栏。但我还必须提供对MySQL和SQLite的支持。是否有一些简单的跨数据库兼容的方式来存储任何给定的SQL数据库中的类似NoSQL的数据?我应该用Ruby来序列化所有东西吗? (这不会是经常说我需要在该列运行针对特定属性的查询。)

+0

也许像[连载](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize)? – Resure

+0

我提到,但在桌子上,然后做查询,几乎是不可能的,而不仅仅是“硬”如果我这样做手工的东西在MySQL,或完全“易”与HStore。我不想失去Postgres给使用它的人带来的好处。 – Judy

回答

0

要支持你所需要直接序列化数据为JSON数据块,也许建立自己的模拟表索引。

如果您只能支持一个数据库,我会使用PostgreSQL,因为它提供了一些在这里很有用的NoSQL功能,包括将JSON存储为数据类型,并在列中为JSON元素建立索引。您还可以将数组作为数据类型存储,同样可以对数组元素进行索引或散列(hstore功能)。

Rails 3和Django(pre 1.8)通过gem/packages支持这种高级功能。

Rails 4和Django 1.8+直接支持其中一些功能,包括Django 1.9中的JSON fields