Need advice on database software/idea

Crashsector

[H]ard|Gawd
Joined
Jul 10, 2001
Messages
1,125
Hey everyone. I've been playing with an idea for quite a while now and I was wondering if I could get input from some more advanced programmers.

I'm looking to write a point-of-sale software package that is based on an open source database engine. I know this sounds pretty ambitious, and it is, but there are a few things I need to get sorted out first.

My main concern is if there are interfaces for the most popular open-source databases (MySQL, Postgre SQL) to be used by stand-alone applications, in other words not by a web script. The actual program itself would probably be coded in C++ for Windows applications. Does this functionality exist? Is this what is referred to as an embedded application?

Second - if the first functionality is there, I was wondering if there is any easy way to implement the database in a web topology. Classical thinking has every client communicating with a database on a central server. There are a few (very expensive) packages that offer web topology configurations in which each client keeps a copy of the database and any changes are communicated amongst the clients. This makes the system much more fault-redundant in the case of any one client (or server) going offline.

Third - what alternatives are there to coding in C++ for the actual client applications? Do any other languages offer the same speed and stability?

Thanks for any input. I'm somewhat new to programming and I'm just trying to get my head around some of the basics.

 
Any of the databases that you should be looking to use for this type of application will have an API to use for creating your application.

On the second item, there are multiple ways to setup your application. From my point of view, having every client communicate directly with the DBMS is the second worst way you could set it up. It opens up your back-end to direct hacking attempts, allows for no abstraction (you change any part of your application and you pretty much will find that you are changing the whole application), and is not very scalable.

The worst way would be having each client have a copy of the database and trying to replicate any changes between all of them. The induced overhead and security concenrs (especially as your landscape grows in complexity) will be a killer, even if you can manage to keep the performance acceptable.

It is possible to set up clustering for the database, but that is not something you really ought to be dealing with at your current level of skill. Setting up a simple 3 tier (client, application, database) system ought to be your first goal, and will be a significant challenge without making it harder.

As to the language to use, it really depends. I will not recommend a particular language for several reasons: 1) I don't know the scale and required robustness for your application. 2) I don't know the hardware you are running against. 3) What languages does your DBMS have an API for? 4) I don't want to turn this into a discussion on which languages are better - it has been done before and will happen again in other threads. Just be aware of the limitations and strengths of whatever language you want to work with (due to experience with it, because you want to learn it, to match the skills of whoever is going to support it later, management directive, etc.)

To be honest, if you are new to programming, I would strongly suggest that you tackle a smaller, less complex problem first. I would also suggest taking some CS/CE courses at the local Uni if you can, because they cover a lot of important topics. You can also learn those things out of books, but IMHO the support of the faculty and your fellow students truly does make it a lot easier to learn.
 
Thanks so much for your reply jc. I understand what you're saying about which language to use. One thing I didn't specify earlier was that I wouldn't necessarily be coding the program line for line - the idea is to find someone to work for me to do that. But that's an entirely different area.

I would appreciate any other input you guys may have. Thanks!

 
Php, perl, python, java and ruby are not strictly web scripting languages, each has its own database abstratction layer, some are better than others (I prefer Perl DBI, some people like java's JBDC) On unix/linux/BSD systems perl is almost assuredly going to be a click and run app, on windows, java (or C/C++) are probably going to be your only reasonable options unless you step you users through downloading and installing a java/perl/python/php runtime environment
 
Back
Top