Re: CoreData database sharing and migration
Re: CoreData database sharing and migration
- Subject: Re: CoreData database sharing and migration
- From: Ben Trumbull <email@hidden>
- Date: Wed, 17 Mar 2010 15:13:34 -0700
On Mar 17, 2010, at 2:59 PM, Tobias Jordan wrote:
> Hello Ben,
>
> Thanks a lot for responding! My problem is as follows: The database which is currently a non-document based core data SQLite one is normally stored in the local User Library of the user. (/Users/user/Library/Application Support/MyApp/database.db
>
> But there are cases in which two (or more) different physical machines must have access to the database.
Don't do that. Network file systems do not provide real time distributed cache coherency. NFS is not a free version of Oracle.
> For example two designers working on a project and they both need the same database so they can share their results. This means they create a new database on their server and link my app to this database.
Each machine can have its own database and they can share their results with NSDistributedNotification or some other IPC/networking protocol. You can hook into the NSManagedObjectContextDidSaveNotification to track when one of the peers has committed changes locally.
- Ben
>
> As you've said, is there a way the data can be always immediately written to disk so there's no 'last writer wins'?
>
> I am not using NSDocument based techniques -- it is really just one core data DB.
>
> Thank you!
>
> Regards,
> Tobias
>
>
> On Mar 17, 2010, at 10:29 PM, Ben Trumbull wrote:
>
>>> I am wondering whether it is possible to create a database in core
>>> data that can be opened by more than one application at the same time.
>>> It is currently impossible to handle one SQLite database with two
>>> instances of the same app. The problem is if user1 quits the app, the
>>> data is saved but user2's instance of the app doesn't recognize this
>>> file system change and just overwrites its version in memory. So the
>>> data from user1 is gone. Is there a way I can handle this?
>>>
>>> Second -- I am having more than two database versions now but still
>>> want to support my version 1.0 but the mapping model only allows one
>>> source model as well as only one target model. I would have to remove
>>> one version but that makes version 1.0 users' database unusable.
>>>
>>> Has anyone gotten something like this to work?
>>
>> Yes, several Apple frameworks use Core Data databases from multiple processes simultaneously with a single user account and single physical machine.
>>
>> Do you mean "more than one application simultaneously on more than one physical computer over NFS/AFP/SMB" ? Don't do that.
>>
>> Or do you mean an NSDocument based application using Core Data & an SQLite store ? NSDocuments intentionally behave like TextEdit. Last writer wins, overwites everything. If so, you should be using a non-document based Core Data project template.
>>
>> - Ben
>>
>
- Ben
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden