Concurrency of objects across a network

I'm interested in finding out if anyone has worked on systems or has possible suitable options to keep objects in applications running on different pc's in sync. Bascially if two people have the same object loaded in their applications and one updates information on it, I would like ideas or methods so that after saving the objects they would broadcast their changes over a local network so that others will get updated information.
Obviously people don't know my complete network setup, but I'm hoping their are some good general methods for doing this out there.
LVL 15
mikelittlewoodAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Geert GOracle dbaCommented:
i guess you would have a centralised place where you get/save your data

If you use an oracle database to read/save the objects
there is the DBMS_ALERT package
this allows the application to subscribe to events on the database like objects being changed

it does need a bit of work ...


0
mikelittlewoodAuthor Commented:
As i mentioned i didn't give my whole current setup but maybe I should give a bit more information.

I do already have a centralised dataserver that all applications connect to for new database keys and this is also the place I was going to do the broadcasting of changes from. I'm just interested in whether or not people have a good method for the transfer of data, format, etc etc

Also I use MS SQL 2000 at the moment though hopefully in the future we will be moving to MS SQL 2008
Obviously I won't have the use of that Oracle package but maybe there is something similar in MS SQL? Though who am I kidding, this is microsoft :o) This though isn't necessarily needed as the dataserver will be the one publishing all changes across the network, I'd rather leave the database quite dumb.
0
Geert GOracle dbaCommented:
hehe,
I looked for this in that thing MSSQL2000  they call a database.

For short I gave up.
What we do is create a thread, this calls a stored procedure on the db in the DBMS_ALERT package
The stored proc can return on specified times (we set it to 1 day)
and the return value is time_out or the event that triggered the stored proc.
in case of time_out nothing happened, otherwise ... data changed

for stopping the db we let the DBA send a message (by script off course) to pause the events for 2 minutes
as to let the DBA restart the database and not let our apps go crazy

i think you should include MSSQL 2005 / 2008 to let other experts see this question
and to find out if this is possible on MSSQL
0
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

mikelittlewoodAuthor Commented:
I'll hold on for a bit here to see if anyone knows any standard techiniques, but thanks for the comments.
0
SteveBayCommented:
I don't know about "standard techniques" so to speak but I am very interested in this topic as I would like to ultimately implement similar solution. Preferably one that is not DB Server dependant

Currently I have a semaphore tables that keeps track of all object DB writes. The clients run a thread off of a timer event that checks the semaphore and updates itself if it finds a self referencing record in the semaphore table. The trick is: knowing when all other instances of the object have checked in so that it may delete the "used-up" semaphore. I do this buy keeping an instance count in objects db record.

Does this sound convoluted? It is! Though it works pretty well as long as there aren't too many client crashes which tend to leave orphaned semaphores that need to be manually cleaned up from time to time. Also this does not address clients creating new instances of the object. For now this is not a problem I need to solve but eventually it's going to come up.

Im sure there is a better way. I have been tempted to write a Service App that would keep track of the semaphore items and send broadcast messages to the clients however I do not have a good design in mind nor the time to chase it right now.

Perhaps my comments will inspire some discussions of better techniques if not "standard techniques."

I am eager to hear from some of the smarter experts out there.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
mikelittlewoodAuthor Commented:
I'll let you know how I go SteveBay
0
mikelittlewoodAuthor Commented:
Needed some more examples or suggestions from other experts, but this got me started.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.