1

MongoDB にデータを書き込む必要がある Rails コントローラーがあります。現時点ではこんな感じです。

  def index
    data = self.getCheckinData

    dbCollection = self.getCheckinsCollection
    dbCollection.insert(data)

    render(:json => data[:_id].to_s())
  end

protected   

  def getCheckinsCollection
    connection = Mongo::Connection.new('192.168.1.2', 27017)
    db = connection['local']
    db.authenticate('arman', 'arman')
    return db['checkins']
  end

リクエストごとに MongoDB で認証しても問題ありませんか?

4

3 に答える 3

3

おそらく不必要にコストがかかり、必要以上に多くの接続が作成されます。

ドキュメントを見てください:

http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started

それらはイニシャライザ内で接続します。接続が再利用されるように、いくつかの接続プーリングを行います。

于 2012-05-10T05:07:26.623 に答える
2

データベースにユーザーは 1 人だけですか?

私は言います:db認証をしないでください。MongoDB サーバーが適切なファイアウォールの背後にある場合、それはかなり安全です。また、インターネットに公開することは決してありません (自分が何をしているのかを知っている場合を除きます)。

また、リクエストごとに新しい接続を確立しないでください。これは高価です。起動時に 1 つを初期化し、再利用します。

于 2012-05-10T05:06:45.487 に答える
2

一般に、これは避けるべきです。

リクエストごとに認証し、同時に多くのリクエストを取得すると、データベースへのすべての接続が取得されるという問題が発生する可能性があります。さらに、データベース接続を作成および破棄すると、データベース サーバー内のリソースが使い果たされる可能性があります。これは、簡単に回避できる負荷をサーバーに追加します。

最後に、プログラミングに対するこのアプローチは、データベース接続が解放されない場合に問題を引き起こす可能性があります。最終的には、データベース サーバーの接続が不足する可能性があります。

于 2012-05-10T05:07:56.483 に答える