2012-10-23 41 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