As the mobility market is increasing in popularity more companies are recognizing the value of pushing the current boundaries of enterprise applications to extend the reach into mobile computing. With the extension of the enterprise to mobile devices the strategy and technology used to support them has met the growing demand but offered some interesting new challenges along the way. There are many products on the market today that can be used for deploying mobile applications. I have been asked recently to compare two such products and offer a perspective. The two products evaluated which also happen to be leaders in this space; Oracle Lite and Sybase’s MobiLink. First let’s look at some of the core elements that are required of these products to baseline the evaluation approach.
| Global Features | MobiLink Features | Oracle Lite |
|---|---|---|
| Database Synchronization | Bi-directional database synchronization | Bi-directional database replication |
| Synchronization Options | Synchronize over TCP/IP, HTTP, HTTPS, Palm Hotsync, ActiveSync | HTTP, HTTPS, HotSync |
| Data Synchronization | Subset data by rows and columns | Sync done by rows and subset parameters. Columns are defined for sync. |
| Execution of Data Synchronization | File Transfer | DDL Scripts |
| Synchronization Control | Server-initiated synchronization | Automatic Sync, Server Initiated |
| Conflict Resolution | Programmable conflict resolution in SQL, .NET or Java | Customizing Synchronization Conflict Resolution Outcomes |
| Set Synchronization Priority | Priority-based synchronization | Priority-based replication |
| Encryption | Data encryption | Database encryption |
In comparing these products there were a couple of features that did seem to be product specific. Some things that Oracle Lite has that enhanced the synchronization solution are:
- Device Manager for application updates and and Oracle Lite related patches for each client. This feature allows an application to update and deploy their application enhancements without having to build or use a third-party deployment mechanism.
- Webtogo and OC4J for web based and J2EE applications. This feature enables an enterprise application to be deployed to a client’s laptop without having the additional requirement of managing a third-party J2EE server container and HTTP server.
One distinct difference between these two pieces software is MobiLink is session-based replication vs. Oracle Lite uses asynchronous replication. Both of these have their advantages and disadvantages.
| Oracle Lite | MobiLink | |
|---|---|---|
| Advantages: | Incremental downloads are fast because the data has been composed on the consolidation database. | Consolidation is performed when the user performs synchronization. |
| Disadvantages: | Server changes need to be replicated to the users out queue by the background MGP process. | Concurrent user synchronizing can cause issues with blocking locks and synchronization performance. |
Environment Baseline
In order to create an environment to equally test the two products I have set up a small application syncing 16 tables for both Oracle Lite and MobiLink. The database assumption will replicate the solution to an Oracle database as this appears to be a fairly common type of configuration in my encounters., To keep the anaylsis straight forward the key attributes that will be measured are:
- Performance
- Development
- Maintenance
- Troubleshooting
MobiLink Publication
To get a feel for the MobiLink product, I created a small synchronization model synchronizing 16 tables. These tables ranged from having a few records to one table syncing 140,000+ records. The development environment for an experienced SQL developer is pretty easy to follow. You can customize various events in the synchronization process to suit your needs. Once you have set up all your business rules and synchronization package, you deploy your model and the software creates scripts for the MobiLink server, a client database (distributed using batch files), and the SQL for your consolidated database.
Oracle Lite Publication
I also created an application in Oracle Lite using same tables as MobiLink to get a good baseline for performance and used the Mobile Workbench for development. If you have read my blog, you know that I use the Java APIs for development and the reason that I have chosen this path is that the APIs give me something that I can quickly reuse on any Mobile Server environment along with added flexibility in deployment options. With the Workbench, you first create the publication, then you create the publication items, you add your publication items to the publication, and finally you deploy your publication.
Results
Performance
I had an assumption that Oracle Lite would be faster for synchronization performance, the only thing that I thought might be quicker in favour of MobiLink was the fact that it synched via TCP/IP. The test was to do an initial synchronization of 16 tables. MobiLink remote databases are already installed on the client, so they have a head start. But even with that head start, Oracle Lite was much faster then MobiLink. Oracle Lite synchronized 157,131 records in 13 seconds. The same amount of data took MobiLink 1 minute and 38 seconds.
The most common challenge for most new users of Oracle Lite is the sizing and background performance of Message Generator Processor (MGP). Sizing of the enterprise database for Oracle Lite accordingly, most people run into issues with space and IO waits. This is probably the most common factor that user run into with Oracle Lite. Typically back to my assumption replicated to an Oracle database. If you have Oracle DBAs already on staff, those skills can be leveraged to assist in the Oracle Lite optimization.
Development
Mobilink offers an advantage to very novice users and appears to have the better development environment. This is due to the fact that all the customization can be performed with modification to some simple SQL scripts. Based on your skill sets and strategy this might be an approach however it has some drawbacks. The most significant one is you have to go through these scripts to update various events with your new customized SQL each time and update or deployment is required. This might be ok for very small (30 – 40 tables) environments, but in true enterprise environments this could become more difficult exponentially.
Oracle offers a different approach to this same type of synchronization event. They achieve this in a similar manner by allowing you to adjust the SQL needed for replication but they build the deployment packages for you. These packages can be tailored or customized if necessary but in my experience it has not been necessary. The one benefit I did find with Oracle Lite is using the API’s for advanced tasks. The API’s allowed me to create integration scripts that could be reused and ended up making the deployments much easier to manage.
Schema Evolution
Schema evolution is the changes that happen to a database during the life cycle of the application. Tables can be added, modified or deleted during the life of an application. Schema evolution is usually a significant challenge for most mobile systems because getting a schema changes to the client without disrupting the users is extremely difficult.
Oracle Lite holds a clear advantage in schema evolution. In Oracle Lite, to make changes to a table in you application:
1. Stop Mobile Server.
2. Change the Oracle database schema (add/drop column).
3. Create a Java program to call the ConsolidatorManager API AlterPublicationItem().
4. Start Mobile Server
5. Execute sync from the client
6. The change to the table will now be available on the client.
Typically you should not have to stop/start the server, you can just reset the metadata cache, but it is good practice to shut down the server so no one attempts synchronization while you are performing the change.
For MobiLink’s schema evolution, I am going to send you to Dr. Dobbs Portal. Apparently to achieve the same function you have to build something that will do this and it does not appear to be as easy in the long term as Oracle Lite.
Along with schema evolution, comes referential integrity. How does MobiLink handle this? Once again I will send you to Dr. Dobbs Portal. Oracle Lite uses table weights. It applies change to the tables in the order that the publication items are assigned a weight. So, all the number 1 items get applied first and the number 2 items are second, and so on. Three methods for applying weights are manually determining your FK constraints per publication item, use the API method assignWeights(), and finally, you can run the code that I have in this post to determine your weights.
Troubleshooting and Debugging
The better your resources are for troubleshooting issues, the less time it takes to resolve issues. I haven’t worked with the MobiLink product enough to identify how good the tools are for troubleshooting. I can however comment on Oracle Lite’s troubleshooting resources. Since I have started working with the product, I would have to say Oracle Lite’s documentation is probably the biggest improvement Oracle has made to the product. Starting with the 10g R1 release, Oracle has added tracing to the following:
GLOBAL
SYNC
MGP
MGPAPPLY
MGPCOMPOSE
In those 5 areas of the synchronization life cycle, I can set debugging to 6 different levels (mandatory, warning, normal, info, config, finest, and all). From that, I can select 6 categories as well (general, SQL, timing, data, resume, function, and all). Then finally, I can set this for all users or I can simply specify a list of users. I can do this on the fly through Mobile Manager. Gathering the debug results, I can quickly resolve the issue combined with the schema evolution, fixes have hardly any impact to the user base.
Oracle Lite has also added debugging to the client and SQL tracing of all SQL statements that are executed on the client. For the client, this is as simple as changing this variable in the polite.ini to OLITE_SQL_TRACE=YES. With the Device Manager, I can specify that I want to add some debug information for a particular user. I can then get the user to perform the action that is causing them grief, and with the Device Manager I can then pull the debug file from their device.
Administration
MobiLinks doesn’t have a user administration interface. You have to create your own and hook it into their application. So, on top of developing all the code to do your synchronization, you are going to have to spend some time identifying ways to administer the users. Oracle Lite has the Mobile Manager. If you are familiar with Oracle OEM tools, this follows the same conventions. From Mobile Manager, you can monitor syncs, get debug logs, monitor MGP, add and remove users, add users to applications (did I mention one mobile server can have many publications). Training support staff for trouble shooting is easy with Mobile Manager.
The Mobile Manager can be deployed standalone or on top of Oracle Application Server. Oracle Lite is an n-tier based enterprise solution. If you require the use of the APIs to create your users, here is a sample:
MobileResourceManager rm = new MobileResourceManager(con);
rm.createUser("USERNAME", "PASSWORD", "DISPLAYED NAME", "U");
ConsolidatorManager cm = new ConsolidatorManager();
cm.openConnection(con);
cm.setSubscriptionParameter("PUBLICATION_NAME", "USERNAME", "BIND_VARIABLE", "'bind value'");
cm.instantiateSubscription("PUBLICATION_NAME", "USERNAME");
Conclusion
If you fall under the following category, then you should be choosing Oracle Lite as your mobile solution:
1. Already using Oracle Enterprise Database.
2. Already have an application using Oracle Enterprise Database that has a business requirement to go mobile.
3. Have a J2EE or .Net application that you need to port to a mobile environment.
4. Required synchronization of high volumes of data and high volume of tables and database objects.
Reasons to choose MobiLink are:
1. Your enterprise database is something other then Oracle.
2. Lots of resources on the net. Web casts and other information available.
Final thoughts
MobiLink seems to be a good product and fulfills many areas of mobile environment. However, MobiLink does not seem to have an enterprise approach to mobile computing.. The MobiLink product requires a fair amount of coding before you have users up and running. Oracle Lite seamlessly integrates with Oracle and Oracle Application Server giving you an n-tier enterprise solution for your business. Over time the current draw back of Oracle Lite such as lack of documentation will improve. The technology appears to be solid and is applying the lessons Oracle has learned in the Enterprise. Looking at the total cost of ownership it appears at a high level that Oracle Lite could have a distinct advantage of a lower cost over the life of a mobile enterprise application.
Authors:
Greg Rekounas
Solution Architect
OAO Technology Solutions, Inc.
Cameron Chehreh
Chief Technology Officer
OAO Technology Solutions, Inc.
CIO Connection
9 responses so far ↓
1 dubacher wrote on Jun 10, 2008 at 5:13 am
My thoughts:
- it’s an advantage that mobilink has no own user management as normally you want to use your own user administration setup.
- it’s an advantage that mobilink does not try to solve device management as well. it’s focus is on synchronisation only.
- mobilink provides high flexibility and a easy to understand sync process. it’s easy to hook in an d customize the synchronisation regarding your own requirements.
- mobilink and it’s mobile database are supported on wide range of different mobile plattforms.
- Without knowing the Consolidator-API you are lost. Having to use the Mobile Workbench which is just crap imho.
- schema mirgration is definitely a point where oracle lite shines…
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
2 rekounas wrote on Jun 10, 2008 at 9:58 am
Thanks for the comment Marco.
My analysis is geared towards an enterprise application. The features that you speak of are okay for the application that is only syncing 20-30 tables without that many changes to schema, application, etc.
The device manager doesn’t have to be used to manage your application. It does however serve other purposes such as applying Oracle Lite patches, retrieving device information and logs, etc. So stating that MobiLink holds an advantage because it doesn’t have a device manager really doesn’t make sense. Plus, how does mobilink do remote administration on say a tank, car, or other mobile device without having to bring the vehicle into the depot and apply patches manually?
Some bad habits I noticed about mobilink, why does it need to install information into the SYSTEM account? You should never be installing objects in the SYSTEM account. The other thing was their time based syncs would not perform well with many records without manually adding appropriate indexes to the tables that were being synced. For the regular Joe developer that is just writing the SQL for the synchronization, this would never cross their minds.
Oracle Lite’s insides may be more complex, but a developer shouldn’t have to worry about that. In an N-Tier application, the presentation layer should not have to know how the Business Layer is retrieving the data from the Data Access layer, it just needs to worry about the containing object that the information is returned in. Same in Oracle Lite. You shouldn’t have to worry about how synchronization is completed, just what business rules are applied to synchronization. Oracle Lite does the rest. It is like saying Java is more complex then VB, hence VB is better.
Once again, my approach was to look at this analysis from the enterprise aspect. If you have an Oracle environment, have a fair amount of mobile devices and applications and synchronizing a lot of data, Oracle Lite is the better of the two choices.
Another thing I noticed, if MobiLink is so easy to learn, why are there so many consultants willing to help you with your implementation?
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
3 Breck Carter wrote on Jun 11, 2008 at 3:27 am
MobiLink does not “need to install information into the SYSTEM account”.
Personally, I would not dream of writing a detailed comparison of Oracle Lite synchronization and MobiLink, since I don’t have that much experience with Oracle Lite synchronization… just a few projects getting clients off it and on to MobiLink and SQL Anywhere. Likewise, just because *you* haven’t done it (used MobiLink with huge databases and thousands of remotes, etc.) does not mean it cannot be done… it can. The market share speaks for itself.
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
4 rekounas wrote on Jun 11, 2008 at 4:09 am
Thanks for your comment Breck.
The tutorial that I looked at used SYSTEM. It was obviously a poor example.
I did not say that MobiLink cannot handle a large user group our large databases. What I am saying though, is that in an enterprise environment, Oracle Lite with an Oracle database is probably the better choice because you can create a repeatable approach that is transperant to your development group and your end users. Doing the same in MobiLink requires customization on each application.
What I did was set up a sample application of 16 tables and then compared various results.
Obviously, you have a lot of experience with MobiLink. Like you, I have a good experience with Oracle Lite and large scale databases and enterprise application. Replicating 350 tables, 700 indexes, 100 sequences, stored procedures and triggers on one application alone. The code I wrote to do this was about 500 lines long. I am sure MobiLink could do the same but how much code would need to be written? I see there is a workaround for syncing sequences in MobiLink, something built-in to Oracle Lite. Then there is the whole Schema Evolution thing. How do you easily maintain the ongoing maintenance and enhancements without affecting your users in MobiLink?
I will go on record as saying MobiLink is a good product. However, it is not the best choice for replicating on an Oracle Database. I think that is a fair statement.
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
5 David Fishburn wrote on Jun 12, 2008 at 10:08 am
Anytime you compare products it is critical to specify which versions (including service packs) of each product used in the comparison. Software is changing all the time, this provides the user with more information rather than guessing which product versions were used.
From your comments section:
You are obviously more familiar with Oracle Lite than MobiLink. This can lead to some of the issues you have listed in your blog entry. Product familiarity always helps.
I will refer back to your blog post and the comments I have seen so far.
This time is excessive and given there is such a large discrepancy between the products it points to something that requires further analysis. This usually implies a mistake (the developer made, i.e. poorly written SELECT statement) or a missing optimization (i.e. index on a table).
MobiLink offers many debugging tools to allow you to determine where slow downs maybe affecting the performance of your system. The graphical MobiLink Monitor would have shown you that the SQL you wrote for “table15” was very slow and would have directed your efforts there.
You mentioned in your comments:
That is the reason the MobiLink Monitor exists, to help focus your attention to the area that needs it (even for the regular Joe). Further to that you blog entry says:
Given the regular Joe, you are saying here, using an Oracle DBA (or expert) is a good thing and useful sometimes. There is no difference between tuning Oracle Lite and tuning the SQL (i.e. SELECT statements) which MobiLink is using. This is part of building a well designed database application.
This is an old and outdated article. Version 11 (in beta) of MobiLink has schema evolution built into the product.
In version 10 of MobiLink there are samples provided on how to achieve schema evolution using the current features of MobiLink. Since you are a proponent of reusing your Java API from one project to another, this is why these scripts are provided. It adds product capabilities which can be re-used from one project to another.
This is the purpose of the MobiLink Synchronization Model. It begins as a wizard, installs all the necessary objects in your Oracle database. Prompts you for which tables you wish to synchronize to the remote. It will also create the remote database for you. Then takes you through the most common steps each project requires. Once the wizard has completed, the graphical user interface allows you to make additional changes (where necessary). You only do this once in the model. From the model you can re-deploy as often as you need, you do not have to redo any of your customized SQL. The customizations are all part of the model.
The Dr. Dobbs Portal example was dedicated to explaining how to change the default behaviour. MobiLink by default will clean up any RI errors. Some people would prefer that errors are reported and synchronization failed. This article demonstrates how you can accomplish that with the tools provided. It certainly is not necessary.
When you create the SQL Anywhere or UltraLite remote database if you included declarative referential integrity (RI) between your tables, MobiLink uses this information to determine the correct order to perform operations to ensure actions are performed in a sequence that will ensure referentially integrity. Since using RI is good design practice in a relational database (as it preserves the integrity of your data in the database) it can also be used by MobiLink to ensure data is synchronized correctly without any intervention by the database developer. Oracle Lite’s table weighting is not required since MobiLink takes care of it automatically based on a well defined schema. If your schema does not contain foreign keys you can override the table order from the command line.
Yes, it does. The MobiLink plugin (version 10 and higher) has two modes. A design mode and an administrative mode. Sounds like you were only using the design mode.
The administrative mode allows you to tweak the scripts directly in the database as well as add and manage any users in the system.
Using MobiLink’s synchronization model I have been able to setup a fully functional system between 400 Oracle tables and a SQL Anywhere database without writing one line of code. This included partitioning the data so each remote received only data destined for that user. This was all done using the MobiLink Synchronization Model included in Sybase Central. Since every project has special needs, it certainly provides a mechanism for you to add any customizations.
You have listed under Synchronization Control:
MobiLink: Server-initiated synchronization
Oracle Lite: Automatic Sync, Server Initiated
MobiLink supports User initiated, Server Initiated, Scheduled Sync and also allows you to programmaticly build you own schedule.
You have listed under Encryption:
MobiLink: Data encryption
Oracle Lite: Database encryption
UltraLite and SQL Anywhere databases can be fully AES encrypted. During synchronization, the stream of data can also be encrypted (as you have above).
It often boils down to product experience. You are skilled with Oracle Lite and a beginner with MobiLink. There is nothing wrong with that. What that means is for “you”, Oracle Lite was a better approach. It certainly does not mean Oracle Lite is the better synchronization technology, “even for Oracle databases”.
It is always good to add humour to your blog entries.
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
6 rekounas wrote on Jun 12, 2008 at 10:13 am
Thanks for the comments Dave. I will see if I can clean up the tags and repost for you. I will delete the duplicate efforts though.
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
7 rekounas wrote on Jun 12, 2008 at 11:09 am
Thanks for the comments guys. I have wanted to do the evaluation for some time and since there isn’t anything on the web that compares the two products other then Sybase stating that it is better then Oracle Lite without any basis, I wanted to do my own. I did not go into device management or remote assistance as MobiLink doesn’t really have this feature. I also didn’t go into the lack of Application Server container for the client in MobiLink or the fact that it can’t replicate your application files. Oracle Lite has all those same features of the automated sync in the new release 10.3.0.1, which was the release I used. I evaluated MobiLink 10 Developer.
As for my SQL not being tuned properly, I highly doubt it. Both the replicating SQL for Oracle Lite and MobiLink were the exact same. Not sure how MobiLink transports the data down to the client, but Oracle Lite compresses the data using jzlib before sending it.
In your application of 400 tables, were you able to identify and sync the indexes as well or did you have to deploy a DDL? How about sequences? And how did you manage with the schema evolution and changes that happen in that environment? How did schema evolution affect the users? How did you deploy the new application code that would have been required to go along with the schema changes? Must have been one huge pain in the ass. There is my humour for the day
Oracle Lite uses AES encryption as well (ENCRYPT_DB parameter)
Most of the application I have worked on use a single source of code for the online and offline modes. The only difference being connection. Also with Oracle based application comes Oracle SQL. Which solution would be better in your opinion if you knew that most of the code was Oracle SQL? Would you convert the entire system to use ANSI SQL and then go MobiLink? Or would you just deploy Oracle Lite without affecting the offline deployment of the application?
At the end of the day, you are right. It probably has a lot to do with your resources.
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
8 WOW wrote on Aug 8, 2008 at 6:28 am
Wow — and here I thought you were going to provide an “unbiased” evaluation. I suppose if we were to hear from a Mobilink expert it would be just as unbiased? Your slant towards Oracle was so obvious
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
9 rekounas wrote on Aug 8, 2008 at 8:13 am
In the comments, there is feed back from MobiLink consultants and employees. If there is something specific you are looking for in the products, then just ask.
There is plenty of unbiased evaluation on many Sybase sites. You can read those for yourself and then come back and judge how biased my evaluation is.
View this Comment in: English Chinese(S) Chinese(T) French Arabic Dutch German Greek Italian Japanese Korean Portuguese Russian Spanish
Leave a Comment