best way to sync with external database

What is the best way to sync my rails model with an external database ?

I can use a callback on my model to update the external table. But in the other direction, when the external db change some data and would sync my activerecord model ? I can only think at a REST request of update of some record. Or a cron sync script, problematic with large db. There's better solutions ?

thanks.

Matteo Folin wrote in post #967435:

What is the best way to sync my rails model with an external database ?

What exactly is your use case for this? It's hard to give advice on a question that vague.

I can use a callback on my model to update the external table. But in the other direction, when the external db change some data and would sync my activerecord model ? I can only think at a REST request of update of some record. Or a cron sync script, problematic with large db. There's better solutions ?

From the little you've said, REST sounds like a good solution.

But...why do you need to synchronize at all? Can you just query the external DB as necessary and avoid duplicating the data?

thanks.

Best,

the only time you need to reload the models is if the schema of the db changes, any other time it the data changes rails will always pull the latest data, it appears that what you want to know is how to update the view when the database changes. is that so ?

Marnen Laibow-Koser wrote in post #967437:

Matteo Folin wrote in post #967435:

What is the best way to sync my rails model with an external database ?

What exactly is your use case for this? It's hard to give advice on a question that vague.

Ok. I manage products data in a rails e-commerce but I need sync with data in an external ERP. I can't operate on ERP data, they could give me only some views. I see these views as external db connection in rails, but I wouldn't use cron script for checking for change, I would like have a callback on change made by the ERP. The only solution that I can see is that the ERP made a call to my app (/product/updated/115) and then I sync that product. But if there was possibly made activerecord knowing what the ERP is doing on the external db...

I can use a callback on my model to update the external table. But in the other direction, when the external db change some data and would sync my activerecord model ? I can only think at a REST request of update of some record. Or a cron sync script, problematic with large db. There's better solutions ?

From the little you've said, REST sounds like a good solution.

But...why do you need to synchronize at all? Can you just query the external DB as necessary and avoid duplicating the data?

In general is a typical problem of integration with company resources. They don't want give you access direct on db, but they want you work on sync db.

There's some better practices, general/typical solution pattern ?

Thanks.

If your app doesn't really have to do anything with the data (validate, transform, etc) then I'd try to solve this on the db level. MySQL replication comes to mind though I'm not sure how that will work with db views.

Keep us posted on how it goes!

Cheers, Simon