1

私は Rails エンジンを作成して、自分の Web サイトでイベントのチケットを販売しています。チケット割引実施中です。多くの潜在的な割引があります:

  • すべてのチケットが 10% オフ
  • x チケット以上の購入で 10% オフ
  • xを購入すると1つ無料
  • $5 割引
  • x チケット以上の購入で $5 オフ

割引テーブルがあり、割引の種類ごとに複数の種類のプロパティを保存する必要があります。さまざまな割引が行われていることと、同様のタイプの割引を扱うときにデータを混同しやすいことから、私は一般的に STI から遠ざかっていると思います。

postgresql で hstore を使用してプロパティ列を作成したいと思います。しかし、MySQL と SQLite のサポートも提供する必要があります。特定の SQL データベースに NoSQL のようなデータを格納する、クロスデータベース互換の簡単な方法はありますか? Ruby ですべてをシリアル化する必要がありますか? (その列の特定のプロパティに対してクエリを実行する必要があることはあまりありません。)

4

1 に答える 1

0

これらすべての DB をサポートするには、データを JSON として直接シリアライズし、おそらくインデックスをエミュレートする独自のテーブルを構築する必要があります。

1 つの DB しかサポートできない場合は、PostgreSQL を使用します。これは、JSON をデータ型として格納し、列内の JSON 要素のインデックスを作成するなど、ここで役立ついくつかの NoSQL 機能を提供するためです。また、配列要素のインデックスまたはハッシュ (hstore 機能) を使用して、配列をデータ型として格納することもできます。

Rails 3 と Django (1.8 より前) は、gem/パッケージを通じてこの種の高度な機能をサポートしています。

Rails 4 とDjango 1.8+は、Django 1.9 のJSON フィールドを含め、これらの機能の一部を直接サポートしています。

于 2013-03-05T13:38:06.957 に答える