Обсуждение: Using Postgres as a "embedded" / SQL Lite database on Windows

Поиск
Список
Период
Сортировка

Using Postgres as a "embedded" / SQL Lite database on Windows

От
"Craig Hawkes"
Дата:
Hi Everyone I have a question re using postgres as a "embedded" database on Windows.

First a little background:
I have been using Postgres for a number of years on Linux, and it is great.
I am now working with a company which develops Windows software using Delphi. This has been successful and they have a number of users (1000's). This currently uses a Paradox database. For various reasons (some I am sure you can guess!) we would like to move away from paradox, and Postgres is a good option.

The main problem(s) I see with Postgres in this environment related to:
 - The fact that the users are very non computer savy - these are general office workers or Farmers - most will have little interest in the computer beyond getting a job done.
 - Installation (Yes there is a silent install)
 - running as a service
      What happens in the unlikely event that they already have a version of Postgres installed?
 - I guess I can see that we could create a installation which works for most users, but end up spending a lot of time getting the last few computers updated, as we deal with some obscure problem between windows and services and Postgres (I know welcome to Windows), and we would like to be able to manage these updates remotely

I would like to hear feed back from others, has anyone else deployed Postgres in this type of environment?
Are there options for running postgres, maybe as a process (maybe the wrong term) within the main application - this could be started and stopped by the application?

I am thinking some type of options similar to SQLLite would be great for a single user install - but we also want to be able to A) use the full power of Postgres, B) set-up as a full server in some other cases.


I look forward to hearing your views
Thanks
Craig

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
"Scott Marlowe"
Дата:
On 10/23/07, Craig Hawkes <craig.hawkes@gmail.com> wrote:
> Hi Everyone I have a question re using postgres as a "embedded" database on
> Windows.

This question gets asked about once every three months.  Searching the
archives should turn up some previous discussions on the subject.

> First a little background:
> I have been using Postgres for a number of years on Linux, and it is great.
> I am now working with a company which develops Windows software using
> Delphi. This has been successful and they have a number of users (1000's).
> This currently uses a Paradox database. For various reasons (some I am sure
> you can guess!) we would like to move away from paradox, and Postgres is a
> good option.

> I would like to hear feed back from others, has anyone else deployed
> Postgres in this type of environment?
> Are there options for running postgres, maybe as a process (maybe the wrong
> term) within the main application - this could be started and stopped by the
> application?

No, and it's not likely to happen.  this would make postgresql subject
to silent corruption if the application crashed, and no one wants to
support that on top of the version we already have.

> I am thinking some type of options similar to SQLLite would be great for a
> single user install - but we also want to be able to A) use the full power
> of Postgres, B) set-up as a full server in some other cases.

Sadly, there ain't no such thing as a free lunch here.  Either you
install the real thing, and deal with the issues of administration and
such, or you go with sqllite or it's brethren.

I'd look into building an appliance computer for the customers.
Something in a 1U rack mount with a pair of SATA or SAS drives mounted
in a sw RAID-1 would do nicely for this kind of thing.  Think of it as
delivering the whole solution.  Deliver it with a super simple custom
gui on top to create accounts or phpmyadmin or something.  The further
away from a database on every desktop you get, generally the better
off you'll be.

If embedded fits this project better, then look elsewhere, it's really
not pgsql's strong suit.

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
Thomas Kellerer
Дата:
Craig Hawkes, 24.10.2007 05:14:
>  - running as a service
>       What happens in the unlikely event that they already have a version of
> Postgres installed?

As far as I know you can happily install different versions in parallel.
You just need to make sure the service name is unique (e.g. by using
your application's name), that you initialize the PGDATA directory
somewhere that is app specific and finally make sure you are not using
the standard port for the communication.
I don't think an already installed Postgres would be "harmed" then.

Thomas

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
"Craig Hawkes"
Дата:
Hi

OK, Sorry but I did search, and did not find anything useful.

Maybe putting forward a embedded solution as part of the question was the wrong option.

If I could reword:

Given that we have a large estiblished client base running a Delphi/Paradox solution, and that we would like to replace Paradox with a much better SQL engine, I was looking for comments as to how Postgres maybe suitable.

We will be implementing more multi-user features - it really is only single user at this stage, plus we would like to be able to use better SQL - espically for Reporting - where currently we have hundreds of lines of Delphi code which could be replaced with a one or two reasonable SQL Queries.

There will really be two targets, replacing the existing single user solutions, and providing a larger solution with multi-user etc. There is however large base of similar code between these solutions, and it would be perferable if they could use the same back-end engine or something very simliar. I know some people will aruge that you should use the right tool for the job, and I guess I am tring to see if there is a right tool which will work for both these.

My main/only real hesiation with Postgres is around supporting non IT users, mainly around installation. I am keen to here peoples comments on this, and what steps could be taken to mitigate these.

Currently the main alternate which is being considered is SQL Server, using SQL Express, SQL Mobile/Compact. But I see this as limiting use to only features supported by the Compact edition, or having to install SQL Express - which I can see as being worst than supporting Postgres Installs.

Thank you for your comments
Craig





On 10/24/07, Scott Marlowe <scott.marlowe@gmail.com > wrote:
On 10/23/07, Craig Hawkes < craig.hawkes@gmail.com> wrote:
> Hi Everyone I have a question re using postgres as a "embedded" database on
> Windows.

This question gets asked about once every three months.  Searching the
archives should turn up some previous discussions on the subject.

> First a little background:
> I have been using Postgres for a number of years on Linux, and it is great.
> I am now working with a company which develops Windows software using
> Delphi. This has been successful and they have a number of users (1000's).
> This currently uses a Paradox database. For various reasons (some I am sure
> you can guess!) we would like to move away from paradox, and Postgres is a
> good option.

> I would like to hear feed back from others, has anyone else deployed
> Postgres in this type of environment?
> Are there options for running postgres, maybe as a process (maybe the wrong
> term) within the main application - this could be started and stopped by the
> application?

No, and it's not likely to happen.  this would make postgresql subject
to silent corruption if the application crashed, and no one wants to
support that on top of the version we already have.

> I am thinking some type of options similar to SQLLite would be great for a
> single user install - but we also want to be able to A) use the full power
> of Postgres, B) set-up as a full server in some other cases.

Sadly, there ain't no such thing as a free lunch here.  Either you
install the real thing, and deal with the issues of administration and
such, or you go with sqllite or it's brethren.

I'd look into building an appliance computer for the customers.
Something in a 1U rack mount with a pair of SATA or SAS drives mounted
in a sw RAID-1 would do nicely for this kind of thing.  Think of it as
delivering the whole solution.  Deliver it with a super simple custom
gui on top to create accounts or phpmyadmin or something.  The further
away from a database on every desktop you get, generally the better
off you'll be.

If embedded fits this project better, then look elsewhere, it's really
not pgsql's strong suit.

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
"Andrej Ricnik-Bay"
Дата:
On 10/25/07, Craig Hawkes <craig.hawkes@gmail.com> wrote:

> There will really be two targets, replacing the existing single user
> solutions, and providing a larger solution with multi-user etc. There is
> however large base of similar code between these solutions, and it would be
> perferable if they could use the same back-end engine or something very
> simliar. I know some people will aruge that you should use the right tool
> for the job, and I guess I am tring to see if there is a right tool which
> will work for both these.
I guess you could be looking at an intermediate abstraction layer
that will allow your application to communicate with whatever database
that newly added tier can talk to.

> My main/only real hesiation with Postgres is around supporting non IT users,
> mainly around installation. I am keen to here peoples comments on this, and
> what steps could be taken to mitigate these.
The "immediate" option that springs to mind would be to offer
consultancy and installation support.


> Thank you for your comments
> Craig
Cheers,
Andrej

P.S.: Please, do not top post :} ... see my sig for reasons.



--
Please don't top post, and don't use HTML e-Mail :}  Make your quotes concise.

http://www.american.edu/econ/notes/htmlmail.htm

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
Ron Johnson
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 10/24/07 15:04, Craig Hawkes wrote:
> Hi
>
> OK, Sorry but I did search, and did not find anything useful.
>
> Maybe putting forward a embedded solution as part of the question was the
> wrong option.
>
> If I could reword:
>
> Given that we have a large estiblished client base running a Delphi/Paradox
> solution, and that we would like to replace Paradox with a much better SQL
> engine, I was looking for comments as to how Postgres maybe suitable.
>
> We will be implementing more multi-user features - it really is only single
> user at this stage, plus we would like to be able to use better SQL -
> espically for Reporting - where currently we have hundreds of lines of
> Delphi code which could be replaced with a one or two reasonable SQL
> Queries.

Hmmm.  Is Paradox that bad?  Or are you pinning too many hopes on SQL?

> There will really be two targets, replacing the existing single user
> solutions, and providing a larger solution with multi-user etc. There is
> however large base of similar code between these solutions, and it would be
> perferable if they could use the same back-end engine or something very
> simliar. I know some people will aruge that you should use the right tool
> for the job, and I guess I am tring to see if there is a right tool which
> will work for both these.
>
> My main/only real hesiation with Postgres is around supporting non IT users,
> mainly around installation. I am keen to here peoples comments on this, and
> what steps could be taken to mitigate these.

Install PostgreSQL on your box, run the app and see how much
maintenance it needs, and how much can be scripted.

If PG is installed as a service (which it should be, no?), then
certainly there is an API call to start the postgresql service at
the beginning of your app and another to stop the service during app
termination.

> Currently the main alternate which is being considered is SQL Server, using
> SQL Express, SQL Mobile/Compact. But I see this as limiting use to only
> features supported by the Compact edition, or having to install SQL Express
> - which I can see as being worst than supporting Postgres Installs.

I think that you're just going to have to create a pilot project to
see how it fits your individual needs.

- --
Ron Johnson, Jr.
Jefferson LA  USA

Give a man a fish, and he eats for a day.
Hit him with a fish, and he goes away for good!

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

iD8DBQFHIAehS9HxQb37XmcRApZYAJ9uI5NHgVF19MytK2M+7+6xHGhlNACfR1bL
qRhO+gSrIF5ow7lbQUbkWqo=
=5vCS
-----END PGP SIGNATURE-----

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
Thomas Kellerer
Дата:
Craig Hawkes, 24.10.2007 22:04:
> If I could reword:
>
> Given that we have a large estiblished client base running a
> Delphi/Paradox solution, and that we would like to replace Paradox with
> a much better SQL engine, I was looking for comments as to how Postgres
> maybe suitable.
>

Not sure if I'll be banned from this list for saying this :)

For embedding with possible scaling to a multi-user environment you
might want to take a look at Firebird (www.firebirdsql.org).

It's not as feature reach as Postgres and the documentation is very poor
compared to PG (because of licensing issues everything is spread in
different places). But it is a good engine and does integrate well with
Delph as far as I know.

Thomas

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
"Harald Armin Massa"
Дата:
Craig,

just reporting my own experience; distributing PostgreSQL on Windows
into around 15 companies on Servers AND Laptop-Clients with various
restrictive in-House-Rules:

- the windows installer is robust and scriptable

- the installer uses standard .msi technology, so it can be integrated
into nearly every self respecting sofware distribution system

- challenges usually concerned user permissions for the postgres user:
it definitely needs the "logon_as_service" permission, and Windows
Installer creates it reliably with that permission.
Problems only appeared when inhouse Windows permission systems (Active
Directory and thelike) were configured wrongfully to take those
permissions away.

- PostgreSQL is very very robust even on Laptop-Usage and within
virtual machines. Laptop-Usage being things like "Power Outage", "no
clean shutdown" etc. etc.; even BlueScreening Servers did not lead to
data corruption

- challenges on Computer Systems came from sloppy Antivirus-Systems
and Firewalls, which decided to:
 a) lock database data-files
 b) interfere with local TCP/IP communcation from Client <-> Client
and PostgreSQL postmaster to per-connection-backend

- challenges with System Administrators arose from multiple
postgres.exe processes running on each server (just starting postgres
leads to 5 postgres.exe in taskmanagers process-view; that is correct
but unusual for Windows)

Best wishes,

Harald
--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Spielberger Straße 49
70435 Stuttgart
0173/9409607
fx 01212-5-13695179
-
EuroPython 2008 will take place in Vilnius, Lithuania - Stay tuned!

Re: Using Postgres as a "embedded" / SQL Lite database on Windows

От
Andy
Дата:
Ron Johnson wrote:
>
> Hmmm.  Is Paradox that bad?
>

Yes.  I'm also a Delphi developer, who has already converted a paradox
program (was just before pg on windows.. bummer)

Paradox is a file share'd database (like dbase), and when the program
crashes, it'll hose up your pdox tables too.   Especially if they are
shared on the network.

You can do pdox apps in two ways, with table operations, or sql.

By table operations I mean:

table.open;
table.IndexName := 'name';
table.findFirst('bob');
table.edit;
table.fieldByName('pay').asInteger := 4;
table.post;

You'd say, why do that when there is sql?  Because its not exactly
stable.  I did code in sql to update some photos, by looking at the code
you'd think it would work.. but it didnt.  (was a delete statement, then
an insert).  Sometime it worked, sometimes not.  I replaced it with
table operations and it always worked.

We ported over to firebird, it is so much more stable now (We used to
have to tell people to restore from backup all the time, just cuz pdox
is not stable) and is much simpler to maintain the db because we get to
fire off sql.  Our database upgrade was a huge program that would
restructure the database... now its just a little sql script.  Its so
much nicer.

-Andy