1

我有一个 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 进行身份验证吗?

4

3 回答 3

3

它可能不必要地昂贵,并且创建的连接比需要的多得多。

看一下文档:

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

它们在初始化程序内连接。它执行一些连接池,以便重新使用连接。

于 2012-05-10T05:07:26.623 回答
2

数据库中只有一个用户吗?

我会说:不要进行数据库身份验证。如果 MongoDB 服务器位于良好的防火墙后面,那么它是非常安全的。它永远不应该暴露在互联网上(除非你知道你在做什么)。

另外,不要为每个请求建立新的连接。这是昂贵的。在启动时初始化一个并重用它。

于 2012-05-10T05:06:45.487 回答
2

一般来说,应该避免这种情况。

如果您对每个请求进行身份验证并且同时收到许多请求,那么您可能会遇到与数据库的所有连接都被占用的问题。此外,创建和销毁数据库连接会耗尽数据库服务器中的资源——它会给服务器增加负载,您可以轻松避免。

最后,当数据库连接未释放时,这种编程方法可能会导致问题——最终您的数据库服务器可能会耗尽连接。

于 2012-05-10T05:07:56.483 回答