我似乎无法找到有关如何使用datamapper与mysql主/从设置进行通信的任何信息。我正在使用dm-mysql-adapter
运行rails3答案 0 :(得分:2)
您可以使用DataMapper的Multiple Data Store功能:
DataMapper.setup(:default, 'mysql://master-host/mydb')
DataMapper.setup(:slave, 'mysql://slave-host/mydb')
现在,无论何时您想从奴隶那里阅读,请使用:
DataMapper.repository(:slave) do
Person.first
end
不幸的是,它看起来不像你可以做透明的从源级写入到主控:
[...]这将使用您与外部数据存储的连接和 它找到的第一个人。后来,当你给那个人打电话.save时, 它将被保存回:外部数据存储;对象知道 它的来源是什么,应该保存回来。
因此,如果您尝试保存从从站检索到的人员,则会在修改后尝试将其存储回从属数据库。
答案 1 :(得分:2)
这可能就是你要找的......
答案 2 :(得分:0)
您不必在您的应用程序中执行此操作,但可能Mysql会自行处理。这样,您就可以通过自动主故障转移实现负载平衡和高可用性的所有好处。我强烈建议在基于应用程序的手动负载平衡上进行此设置,因为您应该将持久层从应用程序提供的业务逻辑中删除。这带来了已经书写的优势,并且由于更好地分离了关注点,使您的应用程序更具可扩展性和可维护性。
查看概率Mysql NDB documentation和Mysql聚类快速入门this tutorial。
答案 3 :(得分:-2)
1)您必须安装适配器。
2)添加要求 要求'rubygems' 需要'data_mapper' 3)配置我的sql
DataMapper.setup(:default, 'mysql://localhost/the_database_name')
或
DataMapper.mysql(:host xxxx, :user xxxx, :password xxxx, :database xxxx)
4)创建模型对象,例如:
class Post
include DataMapper::Resource
property :id, Serial # An auto-increment integer key
property :title, String # A varchar type string, for short strings
property :body, Text # A text block, for longer string data.
property :created_at, DateTime # A DateTime, for any date you might like.
end
如果您有任何疑问,可以查看以下链接:http://datamapper.org/getting-started