2011-04-15 33 views
4

我似乎无法找到任何有关如何使用数据映射到mysql主/从设置的信息。我使用dm-mysql-adapter运行rails3Datamapper与Mysql主/从

+2

我需要这一点。如果我找不到任何东西,我会写一个并回馈。由于DM支持多个存储库,并且CRUD操作已经在内部分割,所以我不会想象它应该那么辛苦......一旦我开始在DM内部进行更多的挖掘,它甚至可能只需要一点点配置就可以工作。 – d11wtq 2011-05-06 00:07:07

回答

-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

+0

我已经有了和mysql一样的dm对话,就像你所描述的那样,我的问题是如何将所有写入操作指向mysql主节点,并将所有读取指向读取池 – Anders 2011-04-15 23:52:22

+0

你在做什么?复制数据库? – JAiro 2011-04-15 23:55:07

+0

看看这篇文章:http://stackoverflow.com/questions/4062113/rails-3-and-mysql-master-slave-replications/4383538#4383538 – JAiro 2011-04-15 23:59:03

0

您不必在您的应用程序中执行此操作,但可能会由Mysql自行处理。这样,您就可以享受负载平衡和高可用性的所有优势,并自动进行主站故障切换。我强烈建议通过基于应用程序的手动负载均衡来设置此设置,因为您应该将持久层置于应用程序提供的业务逻辑之外。这带来了已经写入的优势,并使您的应用程序更具可扩展性和可维护性,因为可以更好地分离问题。

查看Mysql NDB documentation的概念和this tutorial的快速入门Mysql Clustering。

+0

我有这个问题是它NDB似乎增加了一个额外的复杂层,我只想做一些奴隶读取,同时保持主空闲写道。 – Tom 2011-08-28 16:46:18

+0

@Tom:但是无论如何你必须将数据从主设备传输到从设备。在使用某些自定义脚本之前,为什么不使用MySQL的预期方式并获得上述优势呢? – Lars 2011-08-29 06:41:50

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 

不幸的是,它看起来并不像你可以做透明的读取从奴隶写入主:

[...]这将使用您的连接到:外部数据存储和它找到的第一个人。后来,当你打电话给那个人时, 它会被保存回:external data-store;一个对象知道它来自哪个上下文并且应该保存回去。

因此,如果您尝试保存从slave检索到的人,它将尝试在修改时将其保存回从属数据库。

2

这可能是你在找什么...

https://github.com/d11wtq/dm-master-slave-adapter

+0

这正是我要找的!感谢d11wtq在上面评论之后撰写它 - 很遗憾,我无法在我的应用程序中使用它。它不会导致任何错误,应用程序只是从主服务器读取数据,而不是因为某种原因使用从服务器 - 所以这并没有多大帮助。仍试图找出如何正确执行此操作。 – mltsy 2012-12-13 19:23:13