我有一个需要将一些数据写入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进行身份验证吗?
答案 0 :(得分:2)
它可能不必要地昂贵并且创建了比需要更多的连接。
看一下文档:
http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started
它们连接在初始化器内部。它会进行一些连接池,以便重新使用连接。
答案 1 :(得分:1)
数据库中只有一个用户吗?
我会说:不要进行数据库身份验证。如果MongoDB服务器位于良好的防火墙后面,那就非常安全了。它永远不应该暴露在互联网上(除非你知道你在做什么)。
此外,不要为每个请求建立新连接。这很贵。在启动时初始化一个并重新使用它。
答案 2 :(得分:1)
一般来说,应该避免这种情况。
如果您对每个请求进行身份验证并且同时收到许多请求,则可能会出现与数据库的所有连接都出现问题的问题。此外,创建和销毁数据库连接可能会耗尽数据库服务器中的资源 - 它会为服务器添加一个您可以轻松避免的负载。
最后,这种编程方法可能会在未发布数据库连接时导致问题 - 最终您的数据库服务器可能会耗尽连接。