Ruby on Railsでアプリケーションを作成しようとしていますが、複数のデータベースを使用したいのですが、基本的にはユーザーごとに複数の会社を持つ会計アプリです。企業ごとにデータベースを作りたい
この投稿を見つけましたhttp://programmerassist.com/article/302 しかし、この問題についてもっと考えたいと思います。MySQL と PosgreSQL のどちらが問題に適しているかを判断する必要があります。
Ruby on Railsでアプリケーションを作成しようとしていますが、複数のデータベースを使用したいのですが、基本的にはユーザーごとに複数の会社を持つ会計アプリです。企業ごとにデータベースを作りたい
この投稿を見つけましたhttp://programmerassist.com/article/302 しかし、この問題についてもっと考えたいと思います。MySQL と PosgreSQL のどちらが問題に適しているかを判断する必要があります。
複数のデータベースに関する回答の問題は、複数のデータベースを必要としない、または経験のない人々からのものである場合です。2番目の問題は、一部のデータベースでは、ユーザーが独自のバックアップとリカバリを実行できるようにしたり、一部のユーザーを別のデータサーバーにポイントするようにスケーリングしたりするなど、複数のデータベースを切り替えることができないことです。ここに役立つビデオへのリンクがあります http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html
このリンクは、Postgresqlを使用したRubyonRailsに役立ちます。
私は現在、マルチテナント、マルチデータベース、マルチユーザー(アクセスレベルの異なる同じテナントへの多くのログオン)を持っており、オンラインSaaSアプリケーションです。実際には2つのアプリケーションがあり、1つは会計カテゴリにあり、もう1つは銀行です。両方のアプリは同じ構造と方法で構築されています。クライアントユーザー(テナント)は、そのユーザーのログオンの下でデータベースを切り替えることができます。税理士などのエージェントユーザーは、クライアントのデータベースのみを切り替えることができます。スーパーユーザーは、任意のデータベースに切り替えることができます。データディクショナリは1つです。つまり、テーブルと列が定義されている場所は1つだけです。グローバルデータとローカルデータがあります。誰もが利用できるマスター勘定科目表などのグローバルデータ(読み取り専用)。ローカルデータはユーザーのデータベースです。新しいユーザーは、マスターデータベースのクローンを取得できます。選択できるクローンは複数あります。スーパーユーザーは、クローンデータベースを管理できます。
問題は、それがCOBOLにあり、ISAMファイルを使用し、CGIメソッドを使用することです。これに伴う問題は、a)COBOLが時代遅れであるという認識があること、b)訓練を受けた人々を獲得すること、c)価格、およびd)オンラインヘルプです。それ以外の場合は機能し、私はそれに満足しています。
だから私はそれを何に置き換えるか、そしてそれがどのような地雷原であるかを研究しています。
時が経ち、PostgreSQL スキーマを使用してマルチテナント アプリケーションを作成することが決定されました。私は、関連データが格納される common というスキーマを持っています。
# app/models/organisation.rb
class Organisation < ActiveRecord::Base
self.table_name = 'common.organisations'
# set relationships as usual
end
# app/models/user.rb
class User < ActiveRecord::Base
self.table_name = 'common.users'
# set relationships as usual
end
次に、移行のために、この優れたチュートリアルでそれを行いました. http://timnew.github.com/blog/2012/07/17/use-postgres-multiple-schema-database-in-rails/これを使用してください。これは、ライアンの方法でさえ、他の場所で見たものよりもはるかに優れていますベイツはレイルキャストでやった。
新しい組織が作成されると、組織のサブドメインの名前で新しいスキーマが作成されます。過去に、異なるスキーマを使用するのは良い考えではないと読んだことがありますが、それはあなたがしている仕事によって異なります.このアプリには社会的要素がほとんどないので、ぴったりです.
いいえ、複数のデータベースを使用しないでください。
どのようなアドバイスをすればよいかよくわかりませんが、データベースの設計について非常に基本的な誤解をしているようです。先に進む前に、まずデータベースの基本について自分自身を教育することをお勧めします。
特定のレコードがどの会社に属しているかを識別するために、「会社 ID」タイプの列をテーブルに追加するだけでよいでしょう。