Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 4 of 4 total
Thread Disk/remote database to memory database
Tue, Oct 15 2013 1:04 PMPermanent Link

Antonio Marques

Hello!
We have an application that handles a relatively small amount of data, but when the user is connected through the internet things get really slow.

We tested various methods to do that, and we came to one solution as the fastest:
1. We use two sessions, one Remote (data source) the other Local (handle data)
2. Transferring the data via backup
 2.1: Make a backup on the remote session
 2.2: On the local session connect to the remote store and copy the backup file to a local store
 2.3: Restore to a memory database on the local session
3. Sync changed data between the two sessions/databases on specific points using query or script

We use a small database, so we plan to keep it all in memory for faster user experience.

Basic scenario: The data is remote, the client program uses a local session to manipulate that data, in the end it gets synced to the remote location.
Is there a better option?
Wed, Oct 16 2013 5:06 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Antonio


Have a look at ElevateDB's publishing capabilities - its designed for replication which is pretty much what you're doing. It should result in less traffic overall and keep both ends in sync.

Roy Lambert [Team Elevate]
Wed, Oct 16 2013 3:18 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Antonio,

As Roy indicated, check out the replication capabilities in ElevateDB:

http://www.elevatesoft.com/articles?action=view&category=edb&article=building_sales_quote_replication_system_elevatedb

It will make things much easier in terms of synching the data between
multiple locations.

Tim Young
Elevate Software
www.elevatesoft.com
Thu, Oct 17 2013 5:54 AMPermanent Link

Adam Brett

Orixa Systems

Antonio

Roy is spot on here. I have a system which works in exactly the way he describes, and I think using EDB in this way would fit your needs exactly:

1. Publish Remote DB
2. Backup Remote DB.
3. Copy Backup file to user (once only!)
4. Install system on user, and publish the DB at their end.
5. Regularly call a job on the Remote DB which saves updates into a folder, and then copies these updates (carefully!) to every user.
6. Regularly call a job on the local user to save their local updates, copy their updates to the Remote DB and copy down & apply the updates on the Remote.

The real plus is that you get local installation of the DB which means that the system is ultra-fast, and ultra portable.

--

Issues with this system are:

Concurrency. If all users need to know the state of the data "right now" it doesn't work, as you always have some users who have data they have not passed up to the server.

Upgrades. Once you have many installations of the database upgrading and changing its structure becomes much more onerous, as often an update file saved on an "old" version of a database will not be able to be applied to the "new" database.

Update Clashes. If a user goes on holiday and then comes back their updates might over-write newer updates from other users. This really only happens if the database is badly designed, but it is something to think about very carefully.

Security. Users will likely have most or all of the DB on their devices ... you will need to be happy that you are not exposing sensitive data to risk.
Image