2012-05-10 5 views
0

MongoDBにデータを書き込む必要があるRailsコントローラがあります。これは現時点で見えるものです。リクエストごとにMongoDBを使用して認証できますか?

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を使用して認証できますか?

答えて

1

データベースには1人のユーザーしかいませんか?

私は言っています:db認証をしないでください。 MongoDBサーバが良いファイアウォールの背後にあるなら、かなり安全です。そして、決してインターネットにさらされるべきではありません(あなたが何をしているか分からない限り)。

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

2

おそらく不必要に高価で、必要以上に多くの接続を作成している可能性があります。

は、ドキュメントを見てみましょう:

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

彼らは初期化子内で接続します。接続が再利用されるように接続プーリングを行います。

+0

私はこの記事を見てきましたが、私が使っていないMongoMapper DRMのためにそれをやっています。私はまだイニシャライザを使用して私のdb接続を初期化するか、私のアプリケーションインスタンスのメンバとして持つことができますか? – Roman

+0

私はまだイニシャライザの内部に接続しています。ソースを見ると、接続プーリングが行われます。 – d11wtq

1

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

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

最後に、このプログラミング方法は、データベース接続が解放されない場合に問題になります。結局、データベースサーバーの接続が不足する可能性があります。

関連する問題