Tuesday, February 24, 2009

PrevaylerIsNotADatabase

PrevaylerIsNotADatabase

This is a rough rendering of a page from the old Prevayler wiki. Please see the new wiki for current documentation.
Relational database management systems restrict you to using rows and columns and ALL database management systems, including OODBMSs:
-worry about RAM limitations;
-worry about paging data blocks from RAM to disk and back;
-restrict you to using query algorithms, data structures and query languages (SQL, OQL) that must work well on disk clusters.
Prevayler does not.

It is, therefore, MUCH simpler (which makes it much more robust) and orders of magnitude Faster (no JDBC overhead).

You are finally free to write a decent object server, the way OO was intended since the beggining. See: NoMorePorridge.

--KlausWuestefeld.

See: PrevalentHypothesis.

Why isn't Prevayler a database? Granted it's not an RDBMS, but it does look like a DBMS. --DafyddRees

Yes, Prevayler is a DBMS, as it manages command-logs and snapshots, which are nothing but object stores, and objects are made mainly of data. But, in practice, it's easier to explain how it works by reverse logic: first negating that Prevayler is a database management system, thus removing all assumptions that this statement makes, and then explaining what Prevayler is. The conclusion is that Prevayler is a DBMS, but you don't have to keep saying "no, it doesn't have SQL", "no, no JDBC", and things like that @:) -- CarlosVillela

Prevayler is not a database. Read the beggining of the page. --KlausWuestefeld

At what point doesn't Prevayler worry about RAM limitations? Surely worrying about RAM limitations is one of the primary concerns of Prevayler?

No. Prevayler assumes the PrevalentHypothesis. Databases do not. --KlausWuestefeld

A "database" does not have to be on or assume disk. RAM-centric RDBMS are in the works.

Prevayler provides persistence. RAM-centric "databases" don't. I wouldn't even call them "databases". I would call them RAM-centric SQL engines. --KlausWuestefeld

Also, "database" does not have to be a relational database. The "navigational" databases of the 1960's are an example, as is OODBMS's (which some say are repackaged navigational DB's.) Thus, if we ignore the RAM issue, don't assume just relational ("must fit a table shape"), then exactly how is a prevalance layer different from a database? It is a sub-set of databases? Perhaps it can be defined as a "database based in RAM that does not have to be relational".

Well, if you "ignore" all the differences between Prevayler and a database then I suppose you can make yourself believe Prevayler is a database. --KlausWuestefeld

"No. Prevayler assumes the Prevalent Hypothesis. Databases do not."

You have got to be kidding. Further comment moved to http://fishbowl.pastiche.org/archives/001295.html
Clearly, Klaus has a different definition of database than the rest of the world. Which, btw, he is welcome to do. However, it would make him seem more intelligent and less like man selling snake oil if he would define it and explicitly spell out "all the differences between Prevayler and a database ".

Also, the idea that any software is not RAM dependant on any current hardware architectures displays a nievity about how a computer works. Software is highly RAM dependant, period. You can make some fantastic hypothisis about there being an inifinite amount of RAM (hell, you can even say that your CPU is infinitely fast), but when the software runs, it is dependant on there being enouh RAM to keep from swapping, that the RAM is error free, and the speed of the memory bus. It's also highly dependant on the cpu cache. Of course, it is dependant on a whole lot of other hardware concepts, but the previously mentioned items are particularly important for this type of software solution.

No comments: