On Fri, Mar 12, 1999 at 12:05:40PM +0100, Eric Maryniak wrote:
> The problems are:
> 1. No Sub-selects, which is very awkward, but can be surpassed in www
> applications, but they will be more complicated and will have more
> unnecessary fault possibilities and become bigger.
Dat is wel een probleem nu, maar 't gaat straks weg gaan. In 3.23
subselects will be fully implemented. It is a few months away, maybe,
from alpha release. It sounds like you are planning for the future,
and it might be too hasty of you to count this against MySQL since in
the very near future it will no longer be true.
> 2. Transacties, foreign keys, stored procedures, triggers en commit
> rollback are not supported. In other words referential integrity is not
> supported. Because the NIWI databases are primarily meant for (online)
> input and mutation of records this is a very fundamental problem.
> In fact NIWI doesn't do anything else as (online) transaction
> For instance how to maintain a multithesaurus database that is used to
> index several objects in the databases without referential integrity
> implemented in the database engine.
The main problem I have with no transactions is - what happens if the
database server crashes. All of the other uses of rollback/commit can
be handled pretty easily in applications. Sure, if you have bugs in
your code they will do less damage probably if you have referential
integrity built into the database; but with or without ref. integrity
support in the database your application code typically has to do the
same checks (esp. with input from a web browser, since you have so
little control over what people type into the form fields).
> 3. No views make life very complicated.
Ja, dat is wel een probleem. I don't know when MySQL is going to have
views support. Views on a single table should be pretty easy to make
and if you support MySQL heavily you could probably convince them to
implement more complex views sooner than they might do otherwise.
> Conclusion: MySQL is a possible candidate (if it can search better and
> faster) to replace the NIWI search engine software PLweb. Because the
> data are stable. But that means unnecesarry replication of data.
> Nicer would be of course a direct web interface to the database in which
> the data are maintained.
PLWeb is a vastly different beast: it makes me wonder if an SQL database
really is the best solution for you, if you've been using PLWeb. But
maybe what you're saying is that PLWeb wasn't the best tool, and an SQL
database is better. But PLWeb is great for searching text (with field
structures) - fast and powerful. If a lot of your data is text, you
might want to stick with something like that or do some kind of a
hybrid solution (use SQL for relational data, and PLWeb for textual data).
> Online database applicaties become unnecesarry heavy and unreliable.
> Which is shown in the suggested solution for the deleting of
> mother-child related records on page 240 of the manual. Here the mother
> is killed before the children are removed. In case of problems there
> will be no way to find the children because the motherrecord is already
As long as your applications don't crash while deleting, you can avoid
these problems. It's just if your app dies after deleting some rows
but not all - then you might wind up with orphan rows. I think there
are almost always solutions to this - but they might be more complex
than you want to deal with.
> In a good database I have only to implement refential integraty once
> when designing the database and that is independant of the application
> for which I use the database.
Yes, but all of the applications still need to be aware of it and
handle the errors, etc. Just printing a database error that says,
"Can't insert the info you gave me because it violates referential
integrity" isn't a very friendly user interface. I'm sure you know
this, so I'm sorry if I'm sounding silly.
I've made the decision to work with MySQL in large part due to the
dedication of the development team. They have consistently shown
that they are interested in making the best product possible. They
respond to requests in a very reasonable way. The database server
is getting better and better with each release. I'm not going to
say that you'd be wrong to go with another database server, but I
think that, if you can get by without views and referential integrity
checks, the MySQL server is a wonderful product/community.