[sclug] Re: sclug Digest, Vol 20, Issue 16

Graham Swallow lists at Information-Cascade.co.uk
Mon May 9 14:36:57 UTC 2005


> If I want a database I want a DATABASE.
> mysql is NOT a real database. All the old arguments still hold true.
> And the 'features' you speak of aren't 'bonus add ons' but a necessity 
> when working with anything when you value your data.
> 
> I invite you to read the bits regarding ACID in this link, which 
> although outdated is STILL relevant to mysql.
> 
> http://openacs.org/philosophy/why-not-mysql.html

	The full feature list may make a difference (stored procedures are available,
	as are clusters, repeaters, and replayable, editable, transaction logs,
	which are necessary when you value your data). A lot comes from PHP/C++,
	but this it boils down to the lines between atomic and consistent.

	Somewhere in the big MySql html page manual, it clearly says that you
	get fast atomic updates, but a single grain of sand, not multiple things
	put together in a transaction (consistency), and that you should design your
	app to do such grouping. Conversely, a DBMS that does provide transaction
	grouping, not-yet-visible updates, long-lived-locks, etc, might give a false sense
	of security. EG: (examples are always contrived)

		you app is adding a branch to a tree of things (?web pages?),
		but a second user must not see the branch, before the twigs exist,
		and the leaves are in place (broken links, consistency).

		(1) accept a small risk (low probability and low cost)

		(2) create all of branch THEN add it to parents list (list is sorted table view)

		(3) group all of branch into a transaction

	EG2:
		Now suppose that it was a branch with a key name.
		With transactions, you must cater for a second user
		attempting to create a different branch with the same name
		(this app is getting wierd). So you try to break that aspect out
		of the main transaction, so that the second user sees it.

		With a full DBMS you have to think of the 'mid-way' case
		(before-during-after). With MySQL, you can see a sequence
		of steps as your 'mid-way' situation.

		With both, (in a different system), you still have to build queues of
		actions that ripple outwards. EG one transaction update causes
		a letter to be printed and posted, so you defer that in a queue
		(which can be cancelled in a rollback, or merged with an adjusting
		transaction, one letter for all todays actions).

	Half of the ACID responsibility is in the application design + code.

--
   Graham
   gps @ Information-Cascade .co.uk
   www . Information-Cascade .co.uk
-- 
   regards
--
   Graham
   0118 975 6229
   gps @ Information-Cascade .co.uk
   www . Information-Cascade .co.uk


More information about the Sclug mailing list