DB Solution?

  • Thread starter Thread starter Roderick S. Olafson
  • Start date Start date
R

Roderick S. Olafson

Hi all,

I have an application that requires a reasonably large DB on the Pocket
PC to be synchronised back to a PC on a regular basis. I need access on
the Pocket PC to be quick. I need synchronisation back to the PC to be
cheap (inexpensive) and accessible to a PC-based app.

I considered SQL Server CE but the sync'ing requires both IIS and SQL
Server... not cheap. I have an implementation that uses XML on the
Pocket PC... cheap and easy to merge into any other DB on the PC but
*brutally* slow to load on the Pocket PC (seconds for a 78K file!).

Is there a solution out there other than SQL Server CE? Or is there a
way to use SQL Server CE that doesn't require IIS and SQL Server on the PC?

Thanks in advance,


Rod O.
 
Hi Roderick

Do you think in Sockets? its a fast way and don't need IIS, in the PC you
receive the data and save in any DataBase.

Best Regards

RA
 
Roderick said:
Is there a solution out there other than SQL Server CE?

Hi Roderick,

we supply an object database that runs on CF and on a PC.

You can open multiple database files at the same time and
move and copy objects between them. That should enable
you to synchronize what you want between CF and PC.

As to the price, please contact our sales for an offer.
I am sure we can beat any competitor.

A trial version of our engine is available for download
from our website.

Kind regards,
Carl
 
Hi Roberto,

When you say "Sockets", are you suggesting I write my own comm layer to
sync between the ppc and the pc? Or is there an existing mechanism? I
have considered using ADO.NET (over a TCP/IP link) to SQL Server (or
some other PC-based DB that has .NETCF support) and hand-carving the
sync between the ppc DB and it.

Cheers,

Rod O.
 
Hey Carl,

Thanks for the reply. Your solution certainly looks cool... but not
attractive. My app needs to have royalty-free distribution on the ppc
and an inexpensive install to the PC. There will be many PPCs in any one
installation and the PC-based DB will, within a year, be dropped in
favour of a centralised DB for all clients.

Cheers,

Rod O.
 
Rod,

How large is the data volume you intend to work with on the PPC? I agree
that XML is not going to be performant enough for real work unless the
amount of data is tiny, but you might consider using XML or some other text
format for data transfer and then using SqlCe for most of the work on the
device itself. Take a look at the CSV class on www.opennetcf.org as one
possibility.
 
What about using the MSDE rather than SQL Server and XP-Pro or Win2K Pro
that includes IIS ??

Chris
 
Roderick said:
Thanks for the reply. Your solution certainly looks cool... but not
attractive. My app needs to have royalty-free distribution on the ppc
and an inexpensive install to the PC. There will be many PPCs in any one
installation and the PC-based DB will, within a year, be dropped in
favour of a centralised DB for all clients.


Hey Roderick,

as long as you don't ask us for a pricing, you
don't know how attractive we are.

Life is like a box of candy, you never know what
you get.

As far as I recall, our price has never ever been
a problem for our customers.

As to the installation:
You only need to deliver one single DLL along with
your program.
....plus your database file.

Cheers,
Carl
 
Hi Carl,

Cool and inexpensive! Sounds great. I have a great plan for improving
your business and mine. I'll describe my needs and you can provide me a
quote in public. Ideally my objectives can be met and you can show the
..NET CF world how attractively priced your product is.

Here's an initial description of my product/needs.

1. My PPC product is delivered with a PC product. For each installation,
there are many PPC users for one PC install.

2. Ideally, we would have one-time pricing and no royalties. We need, at
least, a royalty-free PPC pricing as the PPC products usage is not
limited by us (i.e. a client can buy more PPCs as their requirements grow).

3. We expect to install under 100 software units in the first year and
grow to 100s later. Our product is, primarliy, a hardware one; that is
where our units are.

Thanks in advance,

Rod O.

Carl said:
Hey Roderick,

as long as you don't ask us for a pricing, you
don't know how attractive we are.

Life is like a box of candy, you never know what
you get.

As far as I recall, our price has never ever been
a problem for our customers.

As to the installation:
You only need to deliver one single DLL along with
your program.
...plus your database file.

Cheers,
Carl

--


Rod Olafson
Magic Kite Software
Makers of VideoGenesis, effortless video enhancement
www.MagicKite.com <http://www.magickite.com>
 
Hi Ginny,

My DB should be on the order of MBs. The sole use of the PPCs will be
for my app. SqlCE sounded good until I started looking into the
sync'ing. My clients will not be savvy wrt IIS and SQL Server so I
cannot impose that technology upon them. Ideally, my application will
have a "single click" install for both PC and PPC apps.

Has anyone tried the CodeBase product for .NETCF???

Cheers,

Rod O.
 
Hey Chris,

I thought MSDE could not be sold/used with a commercial application... I
might be wrong.

That said, I still have an issue with IIS. My clients will not be
familiar with IIS or SQL Server and, as such, they're not a good
solution. I need to be able to do a "single click" install for both the
PC and PPC products.

Cheers,

Rod O.
 
Hey bumerang,

I'll check it out. Has anyone used it in a real application? Are you a
user or a representative?

Thanks,

Rod.
 
Rod,

I have used CodeBase but not the .Net version. It is fast, and you'd just
use Foxpro-compatible files on both the desktop and device. It is not cheap
however. ;-)

You might still consider SqlCe however. The biggest problem you'll have is
reading and writing to the SqlCe database from some text format. This will
take some time and some space on the device. But if your users will just
load the database once and unload it once, they may not mind waiting a
little while. And if you have plenty of room on the device, the space won't
be an issue. I say "some text format" because XML will be the bulkiest in
terms of space and also the slowest to parse, so that's not what I'd
recommend.
 
Hey Ginny,

Thanks for the quick response!

I know CodeBase has an initial cost but I thought that it was royalty
free... a solution that suits me just fine. I'm also familiar with
CodeBase on other platforms but skeptical of a first release on the PPC
(I've been in software for a while so skepticism comes naturally ;-).
That said, they've been at it a while and have a really stable product
on many other platforms...

More and more, I am considering SqlCE as the PPC-side solution. Apart
from writing some code to do the sync (or purchasing PocketSYNC MSQL),
are there any other reasons that you think it might be a poor solution?
Startup speed is important as the workflow includes starting the
application in "awkward" situations; the user may be in a potentially
dangerous location and won't want to wait minutes for the app to start.
Likewise, speed of access to the DB is important for the same reason.

Thoughts?

Cheers,

Rod O.
 
Rod,

CodeBase is royalty free, so it might suit your needs fine. The eVC++
version has been very solid for me.

I have a friend who recently completed a medical app that needed good
performance, and he ended up using SqlCe on the device with a text format
for data transfer between the desktop and device (using a Rapi app). This
was a port of a Palm app written in C that used a binary search (I think)
for fast data access. If you'd like to talk to him about his experience,
email me and I'll forward your mail to him. (Remove online from my email
address.)
 
Roderick,

A SqlCE only solution on the PPC works well. You don't necessarily need Sql
Server on the desktop.

Your desktop program can do the sync in both directions using Rapi. Your
desktop program can spit the data out as a text delimted file, (much more
compact and faster than XML) and rapi copy the txt file to the device, the
desktop program can then call CeCreateProcess to run an exe on the device
which would parse the txt files and Insert the data in the tables of the
SqlCE database.

In my app, I have two exes on the device, one for the main program and a
second that just handles the parsing and the inserting into the SqlCE
database.
Startup speed is important as the workflow includes starting the
application in "awkward" situations; the user may be in a potentially
dangerous location and won't want to wait minutes for the app to start.
Likewise, speed of access to the DB is important for the same reason.

Peformance - obviously the processing on the desktop is fast and the rapi
copy is also fast. The inserting into the SqlCE Database will be the slow
part and will largely depend on the number of records that need to be
inserted and the frequency that it has to be done. I keep a txt files of
changed records (either new or changed records) on the PPC each time the PPC
app exits - this is based on last sync date. When a sync is performaned
these files if they exist are rapi copied back to the desktop and the
desktop program does the appropriate syncing back to the main tables, before
rapi copying all the data back again.

I have done it both ways - using RDA and Sql Server and more recently with
Rapi. RDA is quicker than the Rapi method, but if you can't use IIS then you
don't have that option. Another disadvantage of using RDA is that the size
of the Sql CE database on the device can double, because of all the
additional information carried with each record. whether that is significant
depends on the size of the data, but I can tell you I got a bit of a shock
the first time when I saw 22 meg get gobbled up.

Once the data is in the SqlCE database, performance of the PPC app is good.
My app is a port of a Palm app I had previously written. At first I was
disappointed with the port to PPC because the performance was no where near
the speed of the Palm app, but after much tweaking and getting my head
around .NET CF the performance is now acceptable for my client. Its probably
not quite fair to compare the performance against the Palm app, because the
Palm app is written in C, which is considerably faster than .Net CF and C#.

You mentioned CodeBase, so I presume your data on the desktop could be in
dbf tables - therefore converting the data to delimited txt files should be
trivial.

Regards
Graham
 
Thanks very much Graham. RAPI sounds pretty straight forward. Two more
questions, if I may.

1. What sort of tuning did you have to do with SQL CE?
2. Have you any experience with the CodeBase for Windows CE - .NET version?

Cheers,

Rod O.
 
Rod,
1. What sort of tuning did you have to do with SQL CE?

Well it wasn't so much tuning, but learning how to use SqlCeDataReader.
sqlCmd.SetRange became pretty important to me. However, I ended up writing a
SqlDataReaderCache class to get the speed I wanted to display data on
DataGrids.
2. Have you any experience with the CodeBase for Windows CE - .NET
version?

No. Haven't had the need as I don't expect I'd ever want to use dbfs on the
device. Can't see the point when you already have a superior database system
already built in to CF.

Graham
 
Back
Top