We need a simple lookup application (find customer information, lookup a part number, etc) that runs on handheld devices that are disconnected from the internet and/or our network. We plan on placing the data (about 500MB) in an external memory card and having the application access the data form this location. The information would be updated when the device is connected to the network, but the application will be used "away from the office".
I'm concerned about the performance of using that large of a dataset on a mobile device. If the dataset is loaded entirely into memory, won't the device barf? On the other hand, if it's not loaded into memory, won't lookups be extremely slow? How do you deal with a large local database?
As you can tell, I don't have a lot of experience with J2ME yet. Any suggestions or ideas before I jump into this would be very much appreciated.
OK let's look at some possible solutions and their tradeoffs
1. Pointbase has a database for devices and also has a neat server tool for updating when the device is connected. Might be your solution in one product. Trade-off, it costs money.
2. How much data are they really going to be looking for. Maybe a small subset of the data is stored locally for those times that they aren't connected. Trade-off - if they need something that isn't locally they are well SOL.
3. Definetly use lazy loading so that all the data isn't in memory at one time. If all the data is stored locally provide a "file reading" way to get to the data, and only store the most used data in memory (caching) You could even try to implement some form of caching similar to the data that Oracle stores in the SGA for faster querying. Trade-off, more code for you to write.