Can I write an application with no server ?
Posted in 2006
The poster asked whether an IBM database could be embedded inside his C++ application as a redistributable runtime (a JET/MDAC replacement), creating the database on first run with no separately installed server. No single definitive answer emerged; suggestions included HyperSQL and IBM Cloudscape/Apache Derby (free, but Java-based), Faircom's c-tree Plus (commercial C/C++ embedded ISAM with optional SQL/ODBC and client-server upgrade, praised as very stable), and silently installing DB2 via a response file with db2iprune to shrink it — though DB2 remains a server and only one copy per machine. Trade-offs of robustness versus licensing cost were noted; the poster did not report a final choice.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: Installation, Setup & Upgrades
[cross-posted on .databases.informix and .databases.ibm.db2] Hello I have an application using an internal database (user doesn't know about it) and I would like to know if I can use some IBM product with a run-time that I could emmbed in my app and redistribute, to provide SQL access to database and possibly to let me create the database on first run (after my app is installed). All that without the user having to provide me an working instalation of a server. I would like just some lite run-time to do the job. That is I am looking for a replacement to Microsoft JET and MDAC. Does anyone know an appropriate product from IBM that could do what I need ? I tried searching IBM sites for DB2 and Informix and found nothing relevant :( Thank you Timothy Madden Romania
Consider HyperSQL http://sourceforge.net/projects/hypersql/ then maybe IBM Cloudscape http://www-128.ibm.com/developerworks/db2/zones/cloudscape/ that are very lightweight (with a tiny memory footprint) and "in theory" don't require administration. AFAIK, HyperSQL may even be embedded in your application.
Timothy Madden wrote: > [cross-posted on .databases.informix and .databases.ibm.db2] > > Hello > > I have an application using an internal database (user doesn't know > about it) and I would like to know if I can use some IBM product with a > run-time that I could emmbed in my app and redistribute, to provide SQL > access to database and possibly to let me create the database on first > run (after my app is installed). All that without the user having to > provide me an working instalation of a server. I would like just some > lite run-time to do the job. That is I am looking for a replacement to > Microsoft JET and MDAC. > > Does anyone know an appropriate product from IBM that could do what I > need ? > > I tried searching IBM sites for DB2 and Informix and found nothing > relevant :( I'm going to commit heresy here and suggest that you look into c-tree Plus from Faircom. It's an embedded ISAM style database with Relational features and an available embeddable and stand-alone client server SQL engine and separate user level SQL interface. You get all of these interfaces with the same application source and ctree's highly portable source code to boot. You get the best of both - an embeddable database and the ability to give your uses an adhoc query tool and to hook them in from many ODBC tools they may already know like MS Access and other unspeakable abominations. C-tree was my favorite before I met Informix. See www.faircom.com/products/ctree Art S. Kagel
Faircom seems to support C/C++ interface only, what if the application is java? Also it's a commercial product whereas HyperSQL and IBM Cloudscape are freeware (might not be an issue though) -Eugene
Eugene F wrote: > Faircom seems to support C/C++ interface only, what if the application > is java? > Also it's a commercial product whereas HyperSQL and IBM Cloudscape are > freeware (might not be an issue though) > > -Eugene > Thank you all for your suggestions. My app is C++, but when I will chose a product, I will have to convince my manager it is ok to switch. So a product with IBM brand on it would realy help. It's not clear to me as yet if Cloudscape can be emmbeded and the run-time redistributed with my app. I will have to check that. What can you tell me about stability ? My is supposed to keep phone calls in the database for an unlimited period of time (several years), so I can take no chances to get the databse corrupted. Unfortunatly it still happens with many, many new and young products :( Timothy Madden Romania
Hi You have IBM Cloudscape (see http://www-306.ibm.com/software/data/cloudscape/). This same database is the apache derby (see http://db.apache.org/derby/ ) because IBM donated the source code to Apache Software Foundation and its selled with support from IBM as Cloudscape. This product is 100 % Java database. If you develop an application in Java with Swing, everithing runs on the same JVM. You can create the database "on the fly" or distribute a base database. If you need to create an application to be runned on the browser you need also an application server. If you need to run in standalone try jboss microcontainer (see http://www.jboss.com/products/jbossmc). S'rgio > Timothy Madden wrote: >> [cross-posted on .databases.informix and .databases.ibm.db2] >> >> Hello >> >> I have an application using an internal database (user doesn't know >> about it) and I would like to know if I can use some IBM product with a >> run-time that I could emmbed in my app and redistribute, to provide SQL >> access to database and possibly to let me create the database on first >> run (after my app is installed). All that without the user having to >> provide me an working instalation of a server. I would like just some >> lite run-time to do the job. That is I am looking for a replacement to >> Microsoft JET and MDAC. >> >> Does anyone know an appropriate product from IBM that could do what I >> need ? >> >> I tried searching IBM sites for DB2 and Informix and found nothing >> relevant :( > > I'm going to commit heresy here and suggest that you look into c-tree Plus > from Faircom. It's an embedded ISAM style database with Relational > features > and an available embeddable and stand-alone client server SQL engine and > separate user level SQL interface. You get all of these interfaces with > the > same application source and ctree's highly portable source code to boot. > You get the best of both - an embeddable database and the ability to give > your uses an adhoc query tool and to hook them in from many ODBC tools > they > may already know like MS Access and other unspeakable abominations. > > C-tree was my favorite before I met Informix. > > See www.faircom.com/products/ctree > > Art S. Kagel > > _______________________________________________ > Informix-list mailing list > Informix-list@iiug.org > http://www.iiug.org/mailman/listinfo/informix-list >
Timothy Madden wrote: > [cross-posted on .databases.informix and .databases.ibm.db2] > > Hello > > I have an application using an internal database (user doesn't know > about it) and I would like to know if I can use some IBM product with a > run-time that I could emmbed in my app and redistribute, to provide SQL > access to database and possibly to let me create the database on first > run (after my app is installed). All that without the user having to > provide me an working instalation of a server. I would like just some > lite run-time to do the job. That is I am looking for a replacement to > Microsoft JET and MDAC. > > Does anyone know an appropriate product from IBM that could do what I need > ? > > I tried searching IBM sites for DB2 and Informix and found nothing > relevant :( There are a number of companies who embed DB2 into their products with the number growing with each release. The downside is that DB2 is still a server (even if you turn off remote connections), and that you are still limited to a single copy of DB2 on the system (i.e., if your customer wanted to use both your product and to use DB2 normally, on the same machine, they would have to be the same copy). The real big upside to using DB2 (or Informix or ...) is the wealth of experience that their code brings to your product. This can be a real value-add for larger clients where they may outgrow a single computer and need to cluster, for example. Or just in the fact that you no longer need to worry about ACID requirements or backups/restores (you may just need to provide an interface to the backup/restore functionality if you want to hide the underlying database). With DB2 as the example (since I don't know Informix), you can embed DB2 by using the silent (response-file) install. You may also look into the db2iprune tool if you're on Windows in order to remove optional components that you don't want so as to shrink the size of the DB2 image and possibly fit both your application and DB2 on the same CD if that's how you distribute your software. (You can do the same on unix/linux, but the tool is called 'rm' - I'd go into more detail, but I think you're worried only about Windows.) In that response file, you can install and set up DB2 for immediate use. Then you can create any databases and start using the product immediate as part of your own. I don't think the learning curve to do this is very large at all - if you can write C++, this should be trivial ;-)
Timothy Madden wrote: > Eugene F wrote: > >> Faircom seems to support C/C++ interface only, what if the application >> is java? >> Also it's a commercial product whereas HyperSQL and IBM Cloudscape are >> freeware (might not be an issue though) >> >> -Eugene >> > > Thank you all for your suggestions. > > My app is C++, but when I will chose a product, I will have to convince > my manager it is ok to switch. So a product with IBM brand on it would > realy help. It's not clear to me as yet if Cloudscape can be emmbeded > and the run-time redistributed with my app. I will have to check that. > > What can you tell me about stability ? My is supposed to keep phone > calls in the database for an unlimited period of time (several years), > so I can take no chances to get the databse corrupted. Unfortunatly it > still happens with many, many new and young products :( C-tree is very stable. Haven't used it myself for years, but I first used it in 1982 or so and the API and core embedded direct access code has not changed much since. The whole client-server version is newer (circa 1990) but still venerable and stable and the API is identical so you can ship with the embedded DB but offer a client server upgrade and it could be handled by installing the server and setting a config variable on the clients. I do agree with Darin that using a true and complete RDBMS like DB2 or Informix will give you a far more robust product, but your customers will have to pay licensing fees through you which will boost your sales price or cut into profits. Art S. Kagel