From: Clifford Heath Date: 2008-09-26T11:19:37+09:00 Subject: Re: How to make Ruby _THE_ scripting language of choice, fold in SQLite David Masover wrote: > SQL databases aren't the only kind of database, nor is a database the only way > to store data. Nor is SQLite the only SQL database, or necessarily the best > to optimize for. However, most of the non-SQL things that are included in such definitions of "database" are not actually transactional, and hence don't qualify as databases in any true sense of the word. The purpose of a database is to do things that filesystems do not - ACID. Any "database" that doesn't provide strong guarantees of ACID behaviours doesn't deserve the title. SQL sucks, but it is strongly identified with true transactional behaviour, an identification that only the dills who wrote MyISAM seem to have been able to ignore and break down. > Programmers working with ActiveRecord, in particular, don't seem to think > about concurrency issues enough -- how many of us actually use transactions? If by "transactions" you mean ActiveRecord::Base.transaction, possibly no-one. Attempting rollback on exceptions from a user-mode process without using a two-phase locking protocol (as many/most of AR's adapters do) is utterly flawed and not transactional at all. Transactional is when you can pull the power cord at any time and your data is guaranteed consistent, and nothing that you committed has been lost. Sorry to butt in like this, and you (David) probably know it all anyhow, but I wanted to reinforce the true meaning of "database" and "transaction", since they're so widely abused, berated and misunderstood. Clifford Heath, Data Constellation. Agile information Management and Design.