Book about database application development?

W

Wolfgang Keller

Hello,

does anyone know of a good book that about development of database
applications?

Preferrably language independent, if that's not available something
"readable" as the example language would be nice (Delphi is ok for me, not
any kind of C-dialect including Java and C#). Unfortunately there seems to be
nothing dedicated to database applications with Python.

I'm especially interested in such practical topics as e.g. how to implement
things such that the resulting application doesn't show the hourglass for
minutes on every mouseclick.

And, btw; "W** applications" are totally irrelevant for me.

TIA,

Sincerely,

Wolfgang Keller
 
W

Wolfgang Keller

Hello,

and thanks for your reply, but...

....small misunderstanding: I already know a bit of SQL, and I intend to avoid
its use as far as possible (and use e.g. Modeling or SQLAlchemy).

What I'm interested in is rather how to connect a GUI to a database, with
quite a bit of application logic in between. And how to do it well.

Sincerely,

Wolfgang Keller
 
P

Peter Decker

What I'm interested in is rather how to connect a GUI to a database, with
quite a bit of application logic in between. And how to do it well.

You've described Dabo perfectly. Have you looked into it yet? It's
written by a couple of database application developers.
 
B

Bruno Desthuilliers

Wolfgang said:
Hello,

and thanks for your reply, but...


...small misunderstanding: I already know a bit of SQL,

Developping quality SQLDBMS-based applications requires more than "a
bit" of SQL knowledge.
and I intend to avoid
its use as far as possible (and use e.g. Modeling or SQLAlchemy).

I don't know Modeling, but have a bit of experience with SQLAlchemy, and
without SQL and relational model knowledge, you won't get very far.
What I'm interested in is rather how to connect a GUI to a database, with
quite a bit of application logic in between. And how to do it well.

This is more a general design question than a database-related (or even
Python-related) one. The answer starts with forgetting about
"connect(ing) a GUI to a database" IMHO and experience. Might be time to
google for MVC...
 
P

Paul Rubin

Wolfgang Keller said:
...small misunderstanding: I already know a bit of SQL, and I intend to avoid
its use as far as possible (and use e.g. Modeling or SQLAlchemy).

I'm not sure what you mean, that book isn't just an intro to SQL, it
discusses how to tune for performance, etc. It has quite a bit of
practical advice that you can tell came from hard-won experience by
the author. On the other hand, it's somewhat out of date by now and
it's Oracle-centered. Anyway it's online, you might spend a minute
looking at it to see if it's useful to you. It had sounded like the
type of thing you're asking for.
What I'm interested in is rather how to connect a GUI to a database, with
quite a bit of application logic in between. And how to do it well.

Erm, I can't really tell what you're asking for here; the application
simply makes database queries as needed.
 
W

Wolfgang Keller

What I'm interested in is rather how to connect a GUI to a database, with
You've described Dabo perfectly. Have you looked into it yet? It's
written by a couple of database application developers.

Yes, thanks, I know about Dabo. As I know about Kiwi, Thyme, GNUe, TinyERP
and so on...

But I would still like to learn how to do things myself if I need to.

Sincerely,

Wolfgang Keller
 
A

Andy Dingley

Paul said:

There was a time (some time in the mid 90s) when I thought that Philip
Greenspun had a Clue. Then I realised just how wrong he was (he started
off reasonably right, he just didn't keep up when the world moved on).
The highlight of this process was seeing him booed during a conference
keynote speech -- by angry librarians and museum curators (he deserved
it too).

I can't imagine any topic, except possibly dog grooming, where I'd
listen to his advice.
 
W

Wolfgang Keller

Developping quality SQLDBMS-based applications requires more than "a
bit" of SQL knowledge.

No doubt. :) But my "bit" is enough to get me going and to know where to
look for further information if I hit a wall. Especially the people on the
Postgres mailinglists (as well as the excellent documentation of Postgres)
tend to be very helpful here. :)
This is more a general design question than a database-related (or even
Python-related) one.

The question is specific to database applications in so far as these are
typically client-server aplications (multiple users working with the same
data with all the resulting concurrency nightmares), and as the volumes and
the complexity of the data to be handled are non-trivial.
The answer starts with forgetting about "connect(ing) a GUI to a database"
IMHO

Well, _somehow_ the GUI _has_ to be connected to the database. ;-)

I didn't say that this would be through a spaghetti-heap of SQL queries
hard-coded into the GUI event handlers.
and experience. Might be time to google for MVC...

I know about the existence of MVC. But what I'm actually missing is a nice
textbook that teaches how to actually implement it (and other design patterns
which are useful for database applications) in a real-world application in a
way that leads to non-ridiculous behaviour of the resulting application when
it gets actually used.

Preferrably using a language for the examples that's readable for someone who
has learned programming ages ago with Pascal and is now using Python because
he _hates_ everything that remotely ressembles to any mutation of
C(++/#/Java).

Sincerely,

Wolfgang Keller
 
B

Bruno Desthuilliers

Wolfgang said:
No doubt. :) But my "bit" is enough to get me going and to know where to
look for further information if I hit a wall. Especially the people on the
Postgres mailinglists (as well as the excellent documentation of Postgres)
tend to be very helpful here. :)

Well, this was intended as a general observation !-)
The question is specific to database applications in so far as these are
typically client-server aplications (multiple users working with the same
data with all the resulting concurrency nightmares), and as the volumes and
the complexity of the data to be handled are non-trivial.

This can be true for non "database-applications" (well... non "SQL DBMS
based applications" would be better here I think) as well.
Well, _somehow_ the GUI _has_ to be connected to the database. ;-)

The GUI has to be connected to the application, which uses the database.
There's no need for the GUI code itself to know anything about the SQL DBMS.
I didn't say that this would be through a spaghetti-heap of SQL queries
hard-coded into the GUI event handlers.

Hopefully not !-)
I know about the existence of MVC. But what I'm actually missing is a nice
textbook that teaches how to actually implement it

Yes, this can be another problem. But FWIW, most modern GUI toolkits
already do a big part of the job.
(and other design patterns
which are useful for database applications) in a real-world application in a
way that leads to non-ridiculous behaviour of the resulting application when
it gets actually used.

There are some known anti-patterns at least. Like selecting a whole
table (preferably with all attributes) then looping thru the result set
just to count the number of records in the table (don't laugh, I've
actually seens this (and even worse) in production code).

But given your concerns, I don't think you'd do such a thing anyway !-)
 
K

Kent Johnson

Wolfgang said:
I know about the existence of MVC. But what I'm actually missing is a nice
textbook that teaches how to actually implement it (and other design patterns
which are useful for database applications) in a real-world application in a
way that leads to non-ridiculous behaviour of the resulting application when
it gets actually used.

Maybe you would like Martin Fowler's "Patterns of Enterprise Application
Architecture"
http://martinfowler.com/books.html#eaa
Preferrably using a language for the examples that's readable for someone who
has learned programming ages ago with Pascal and is now using Python because
he _hates_ everything that remotely ressembles to any mutation of
C(++/#/Java).

Examples are mostly Java and C#, sorry!

Kent
 
W

Wolfgang Keller

Maybe you would like Martin Fowler's "Patterns of Enterprise Application

Thanks, this one is already on my list, just like "Data Access Patterns" from
the same publisher.
Examples are mostly Java and C#, sorry!

Which is precisely the reason why I wanted to make sure there really is
nothing else before I buy.

*sigh* I thought with Delphi being quite popular for database applications,
there should be _something_.

Sincerely,

Wolfgang Keller
 
D

Dennis Lee Bieber

*sigh* I thought with Delphi being quite popular for database applications,
there should be _something_.
I've not done Delphi, but if it is similar to VB6, you have to take
into account that 1) there is only one GUI toolset available, 2) there
is only one (maybe two) "native" DBMS access system (a lot of VB6 stuff
is build around the DAO library, though some uses ADO -- and some of the
GUI building blocks use one but not the other). You also have to take
into account that the same source (Borland vs M$) wrote both the GUI and
the DBMS libraries, so could easily define an interlinked set of
widgets.

Python has a half dozen GUI toolkits, and multiple adapters for
databases (some don't even follow DB-API2 specs). All independently
written. So no, you are not going to find, say, a grid widget that
automatically links to a database table/view/cursor, with bi-directional
updates.
--
Wulfraed Dennis Lee Bieber KD6MOG
(e-mail address removed) (e-mail address removed)
HTTP://wlfraed.home.netcom.com/
(Bestiaria Support Staff: (e-mail address removed))
HTTP://www.bestiaria.com/
 
P

Paul Boddie

Dennis said:
Python has a half dozen GUI toolkits, and multiple adapters for
databases (some don't even follow DB-API2 specs). All independently
written. So no, you are not going to find, say, a grid widget that
automatically links to a database table/view/cursor, with bi-directional
updates.

Aren't we going round in circles here? There presumably are grid
widgets connected to database tables/views/cursors, if only exposed via
user interface toolkits and other frameworks such as PyQt, Dabo and so
on, but I thought the questioner wanted to know how to implement these
things from the ground up.

Paul
 
D

Dennis Lee Bieber

Aren't we going round in circles here? There presumably are grid

Possibly -- it was the fairly recent lamentation about Delphi that
made me think the initial desire had been for some such "automatic"
linkage between GUI and database that would have been preferred...
widgets connected to database tables/views/cursors, if only exposed via
user interface toolkits and other frameworks such as PyQt, Dabo and so
on, but I thought the questioner wanted to know how to implement these
things from the ground up.
.... lacking such automation, a search for books on how to do this was
next. But given so many combinations of toolkits, I didn't think a
general (cookbook?) solution would be available.
--
Wulfraed Dennis Lee Bieber KD6MOG
(e-mail address removed) (e-mail address removed)
HTTP://wlfraed.home.netcom.com/
(Bestiaria Support Staff: (e-mail address removed))
HTTP://www.bestiaria.com/
 
P

Paul Boddie

Dennis said:
Possibly -- it was the fairly recent lamentation about Delphi that
made me think the initial desire had been for some such "automatic"
linkage between GUI and database that would have been preferred...

I think it's about finding the right level: the stated toolkits (Kiwi,
Thyme, GNUe, TinyERP) are probably quite high-level or mix in various
application-specific bonus material, and perhaps a fairly elementary
datagrid widget is what is being sought.
... lacking such automation, a search for books on how to do this was
next. But given so many combinations of toolkits, I didn't think a
general (cookbook?) solution would be available.

True. Still, I can only point to things which might provide useful
building blocks in developing some of the solutions mentioned above.
For example, PyQt's QSqlRelationalTableModel and QTableView might be
acceptable building blocks:

http://www.riverbankcomputing.com/Docs/PyQt4/html/qsqlrelationaltablemodel.html

See here for Python-based examples:

http://indico.cern.ch/contributionDisplay.py?contribId=33&sessionId=41&confId=44

I'm sure other people can provide links to resources for other toolkits
and frameworks.

Paul
 
M

Magnus Lycka

Wolfgang said:
does anyone know of a good book that about development of database
applications?

Scott Ambler's "Agile Database Techniques"

Regardless of whether you'll actually use a full MVC framework or
not, I suggest that you write model classes that are fully decoupled
from the UI. Work in a test-driven fashion, writing tests first
and just coding until the test goes through, and then write the
next test. See e.g. Kent Beck's "Test-Driven Development". If
you use an SQL database below some ORM, you can use SQLite with
an in-memory database ":memory:" for your functional test. Fast
and simple.

I'd make the GUI as thin as possible, since GUI code it typically
more complicated to test automatically.
 
W

Wolfgang Keller

does anyone know of a good book that about development of database
Scott Ambler's "Agile Database Techniques"

Thanks for the hint, the summaries indicate that this one could be very
useful indeed.

Sincerely,

Wolfgang Keller
 
W

Wolfgang Keller

and perhaps a fairly elementary datagrid widget is what is being sought.

*snip*
I'm sure other people can provide links to resources for other toolkits
and frameworks.

Err, slight misunderstanding. I am _not_ searching for a toolkit or framework
for database applications.

What I am searching for is a _book_ (or other learning material) about how to
implement database applications. See subject.

I want to learn this because I want to be able to

- understand the existing frameworks and be able to choos ethe one that suits
my needs best
- be able to fix bugs
- be able to implement missing things myself
- be able to do things "from scratch" if nothing else helps.

I mentioned Delphi just as an example for a language that I am able to read
easily.

TIA,

Sincerely,

Wolfgang Keller
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top