Thread: Beginner's Questions

Beginner's Questions

From
Don Lavelle
Date:
Hey, All,

I'm working on a project (for a friend and for self-education) and
want to learn a little more about what sorts of applications
PostgreSQL is used for.  I'm currently looking at a single-computer
desktop application that may be scaled to a client-server model with
multiple desktop clients and a centralized server.

My database is quite small (only 13 lucky tables, though that may
expand a little) and will not hold a great amount of data.  (There
will be at most records in the thousands for the single-user or tens
of thousands for the multi-user.)  I will either use Java or C++ for
the project.  I would run PostgreSQL as a child process.

Is PostgreSQL overkill for such a project?  My other choices are to
go with a flat-file format or to use an embedded SQL server.  The
reason to go with PostgreSQL are that I don't have to write as much
code, it's known to be reliable for what I'm doing, and it's known to
be reliable for what I might be doing.  The reason to not go with
PostgreSQL is that it might be too much for a modest personal
computer; I don't know that the computers running this will even have
XP.  (I'm not a MS Windows user, myself, unless I have to be.  My
development boxes are a 1.1 GHz Athlon with 512 RAM with XP and a
dual-processor G4 with MacOS 10.4.)

Are there ballpark requirements for what such a database will need to
run?

Thanks!

      Don

Re: Beginner's Questions

From
tom
Date:
I'm running my database on a Pentium 2 with 450MHz CPU.
It runs dbmail and spamassassin's Bayes and has overhead available.
You'll find it works well enough for your database size.

As for being it overkill.  I think you've answered your own questions:
I don't have to write as much code -- less bugs, less development time.
It's know to be reliable for what I'm doing -- less bugs, less
testing time.

So, if it *can* run on your machine why wouldn't you run it on your
machine?

I don't limit this thinking to just postgresql...  You've identified
postgresql as something that can provide you with a simpler solution
to the architecture, you have sufficient hardware for it.  And if for
some reason your estimates are wrong about the size of the project
you can easily grow for sometime with minor modifications, if any, to
your application.

On Mar 9, 2007, at 7:03 AM, Don Lavelle wrote:

> Hey, All,
>
> I'm working on a project (for a friend and for self-education) and
> want to learn a little more about what sorts of applications
> PostgreSQL is used for.  I'm currently looking at a single-computer
> desktop application that may be scaled to a client-server model
> with multiple desktop clients and a centralized server.
>
> My database is quite small (only 13 lucky tables, though that may
> expand a little) and will not hold a great amount of data.  (There
> will be at most records in the thousands for the single-user or
> tens of thousands for the multi-user.)  I will either use Java or C+
> + for the project.  I would run PostgreSQL as a child process.
>
> Is PostgreSQL overkill for such a project?  My other choices are to
> go with a flat-file format or to use an embedded SQL server.  The
> reason to go with PostgreSQL are that I don't have to write as much
> code, it's known to be reliable for what I'm doing, and it's known
> to be reliable for what I might be doing.  The reason to not go
> with PostgreSQL is that it might be too much for a modest personal
> computer; I don't know that the computers running this will even
> have XP.  (I'm not a MS Windows user, myself, unless I have to be.
> My development boxes are a 1.1 GHz Athlon with 512 RAM with XP and
> a dual-processor G4 with MacOS 10.4.)
>
> Are there ballpark requirements for what such a database will need
> to run?
>
> Thanks!
>
>      Don
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>               http://archives.postgresql.org/
>


Re: Beginner's Questions

From
Jorge Godoy
Date:
Don Lavelle <don.lavelle.bulk@gmail.com> writes:

> My database is quite small (only 13 lucky tables, though that may expand a
> little) and will not hold a great amount of data.  (There  will be at most
> records in the thousands for the single-user or tens  of thousands for the
> multi-user.)  I will either use Java or C++ for  the project.  I would run
> PostgreSQL as a child process.

What do you mean by "a child process"?  PostgreSQL is run as a server and then
you connect to it (either through TCP or using sockets).  Or you were talking
about something you'll do with your code?

> Is PostgreSQL overkill for such a project?  My other choices are to go with a
> flat-file format or to use an embedded SQL server.  The  reason to go with
> PostgreSQL are that I don't have to write as much  code, it's known to be
> reliable for what I'm doing, and it's known to  be reliable for what I might
> be doing.  The reason to not go with  PostgreSQL is that it might be too much
> for a modest personal  computer; I don't know that the computers running this
> will even have  XP.  (I'm not a MS Windows user, myself, unless I have to be.
> My  development boxes are a 1.1 GHz Athlon with 512 RAM with XP and a
> dual-processor G4 with MacOS 10.4.)
>
> Are there ballpark requirements for what such a database will need to run?

You have the required hardware.  I have PostgreSQL running on worse conditions
and performing very well.


--
Jorge Godoy      <jgodoy@gmail.com>

Re: Beginner's Questions

From
Ron Johnson
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 03/09/07 06:03, Don Lavelle wrote:
> Hey, All,
>
> I'm working on a project (for a friend and for self-education) and want
> to learn a little more about what sorts of applications PostgreSQL is
> used for.  I'm currently looking at a single-computer desktop
> application that may be scaled to a client-server model with multiple
> desktop clients and a centralized server.
>
> My database is quite small (only 13 lucky tables, though that may expand
> a little) and will not hold a great amount of data.  (There will be at
> most records in the thousands for the single-user or tens of thousands
> for the multi-user.)  I will either use Java or C++ for the project.  I
> would run PostgreSQL as a child process.
>
> Is PostgreSQL overkill for such a project?  My other choices are to go
> with a flat-file format or to use an embedded SQL server.  The reason to
> go with PostgreSQL are that I don't have to write as much code, it's
> known to be reliable for what I'm doing, and it's known to be reliable
> for what I might be doing.  The reason to not go with PostgreSQL is that
> it might be too much for a modest personal computer; I don't know that
> the computers running this will even have XP.  (I'm not a MS Windows
> user, myself, unless I have to be.  My development boxes are a 1.1 GHz
> Athlon with 512 RAM with XP and a dual-processor G4 with MacOS 10.4.)
>
> Are there ballpark requirements for what such a database will need to run?

As others have said, PG will certainly, happily, run on this system.

It might be overkill, though, regarding complexity.  Will you be
using triggers, stored procedures, foreign keys, etc?  And how many
users in the multi-user version?  If it'll just be a few people
doing SELECT/INSERT/UPDATE/DELETE and the queries are fast, SQLite
may be adequate to the task.


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFF8WW1S9HxQb37XmcRApssAJ9fGUlZcEkVvhU1eNMMGN00ZVvRywCcC9mS
qgM91a6nCHBF3412UK8Tqb8=
=2RXq
-----END PGP SIGNATURE-----

Re: Beginner's Questions

From
"Michael Schmidt"
Date:
Don,
It sounds like your project is similar to mine.  My app is a scientific database that contains journal articles and data related to neuropsychological assessment.  The goal is to support evidence-based clinical practice as well as to serve as a basis for research and a book I am working on.  The database has 30 tables with up to three layers (parent-child-child).  The ultimate size of the database will be in the 1000's of records.
 
I originally started the project in Paradox several years ago.  Paradox was good for its day but it was deprecated and so I had to migrate.  After much study (reading reviews, comparisons, mailing lists) I chose PostgreSQL.  It is popular (so it won't be deprecated), has excellent documentation, the support group is super, and it is very reliable.  It has some pretty important features; transactions and built-in referential integrity.  I also develop in a Windows XP environment - without problems. 
 
Regarding resources, my install of PostgreSQL takes up 100M of disk, with 57M used by the data directory (my database is only about 11M).  I don't think that's too big of a footprint for modern programs.
 
I programmed my user interface in Java, using Eclipse.  I found the learning curve for Eclipse to be pretty steep and, unlike PostgreSQL, the documentation and community support are uneven.  Now that the interface is done, I'm pretty happy with it.  The basic interface - without custom features needed for a specific purpose - is available on pgFoundry (the Komo project) and you can use it to get started.  Have a look!
 
For output, I added JasperReports to my GUI and that works fine.  Note that PostgreSQL, Eclipse, and JasperReports are all open source.
 
Good luck!
Michael Schmidt

Re: Beginner's Questions

From
Don Lavelle
Date:
Hi, all,

Thank you all for your help!  From what I've gathered, similarly
sized projects run on 100 MB of disk space and a 450 MHz processor.
My GUI and application logic aren't going to need much more than
that, so I should be good to go!

PostgreSQL it is!  I'm sure I will have many, many more questions as
I continue the development process.

Cheers!

     Don

Re: Beginner's Questions

From
"Damian C"
Date:
We produce and sell a Java desktop app, distributed in an office
(~1-10 Users), with Postgres as the central data store.  The users are
"technically illiterate", and they often have very low spec hardware.
It does all work very well.

Note that for postgres you will need NTFS (WIN32 is not possible).

Our user interface is Java, built with Netbeans IDE, and is based on
the Netbeans "Platform" (to provide lots of lifty infrastructure). We
are Object Oriented developers, so we are nearly "SQL illiterate", so
we do all our Postgres interaction via Hibernate (Object Relational
Mapper"), and it works really well.

All our tools and deliverables are free open source or built on free
open source. This is necessary as we are an self-funded startup who
eventually hope to sell this system into a thousand sites, so paying
license fees for DB (Oracle anyone?) or other deliverables per site
really changes the economics of our offering.

I must say the software stack we have (including postgres) is awesome,
although it does take a lot of effort to learn. The system (Java and
Postgres server) is OK on a 500MHz PIII, but the issue is that it
really does need 500MB RAM to work properly.

All the best.
-Damian

On 3/10/07, Don Lavelle <don.lavelle.bulk@gmail.com> wrote:
> Hi, all,
>
> Thank you all for your help!  From what I've gathered, similarly
> sized projects run on 100 MB of disk space and a 450 MHz processor.
> My GUI and application logic aren't going to need much more than
> that, so I should be good to go!
>
> PostgreSQL it is!  I'm sure I will have many, many more questions as
> I continue the development process.
>
> Cheers!
>
>      Don
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>

Re: Beginner's Questions

From
"Anton Melser"
Date:
> On 3/10/07, Don Lavelle <don.lavelle.bulk@gmail.com> wrote:
> > Hi, all,
> >
> > Thank you all for your help!  From what I've gathered, similarly
> > sized projects run on 100 MB of disk space and a 450 MHz processor.
> > My GUI and application logic aren't going to need much more than
> > that, so I should be good to go!
> >
> > PostgreSQL it is!  I'm sure I will have many, many more questions as
> > I continue the development process.

For something like what you are doing, providing (and this is a BIG
providing) you won't want to distribute it under a commercial licence
without paying a fee (it has gpl and commercial), something like db4o
might be better. It is very lite and after you get used to it should
save you lots of development time. It is an object database, and
basically you just do things like

objectDatastore.set(myObject);

myOjbect = objectDatastore.get(ItsType);

And instead of having to have a separate object and sql models and
translation, you just have objects.
It works in a client server environment, and for small projects is quite nice.
Cheers
Anton