1

我正在编写一个 Rails 引擎来销售您自己网站上的活动门票。我正在实施门票折扣。我们将有很多潜在的折扣:

  • 10% 折扣所有门票
  • 购买 x 票或更多票可享受 10% 的折扣
  • 买x送一
  • 购买减 5 美元
  • 购买 x 票或以上可减 $5
  • 等等

我有一个折扣表,对于正在进行的每种折扣,我需要存储多种属性。我想我一般都喜欢回避 STI,因为我们正在进行的折扣种类繁多,而且在处理类似类型的折扣时很容易混淆数据。

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

4

1 回答 1

0

为了支持所有这些数据库,您需要将数据直接序列化为 JSON,并且可能构建您自己的模拟索引的表。

如果您只能支持一个 DB,我会使用 PostgreSQL,因为它提供了一些在这里有用的 NoSQL 功能,包括将 JSON 存储为一种数据类型,以及在列中对 JSON 元素进行索引。您还可以将数组存储为数据类型,再次使用数组元素的索引或哈希(hstore 功能)。

Rails 3 和 Django (pre 1.8) 通过 gems/packages 支持这种高级特性。

Rails 4 和Django 1.8+直接支持其中一些特性,包括Django 1.9 中的JSON 字段

于 2013-03-05T13:38:06.957 回答