-
-
Save klauswuestefeld/1186975 to your computer and use it in GitHub Desktop.
It's really funny. When I started reading Fowler's post, Prevayler came to my mind (although I never had a hands-on experience with it). Only later (after reading the full post) I noticed that he mentioned Prevayler. MemoryImage sounds weird. Prevalence would be a better name.
Agreed. MemoryImage is a terrible name. Prevalence is a very good name once you understand the concept and have a definition of the word. I use a different approach adopting a database perspective when presenting to mainstream conservative developers.
Here are the slides from my presentation at the #devsum11 conference held may in stockholm: http://www.slideshare.net/rofr/introducing-livedb
I use the term "Prevalent System Architecture", explain the origin and refer to both prevayler and bamboo.
The liveDB engine is open source and available at http://livedomain.codeplex.com/ and as a nuget package
I've submited a presentation (which people still voting) on pravalence in Python. (http://www.pythonbrasil.org.br/2011/programacao/grade-do-evento/desenvolvimento-web/persistencia-transparente-de-objetos)
Pravalence looks nice in python,, check it out: http://copycat.readthedocs.org/en/latest/
Prevalence is a better name than MemoryImage! ++
The term Memory Based Architecture is used in this article
http://highscalability.com/blog/2009/3/16/are-cloud-based-memory-architectures-the-next-big-thing.html
In the comments to fowlers article on hackernews someone uses the term IMDB, In Memory Database. I like that except it clashes with imdb.com
The term In Memory Database to refer to Prevalence is bad because:
- It misleads people to thinking it is transient (only in-memory).
- It is not a database: http://prevayler.org/old_wiki/PrevaylerIsNotADatabase.html
Well... actually, by using the term "MemoryImage" and saying it is a database, it makes the reader think it´s as a cache or a memoize structure. something that certainly it is not.
I agree with using prevalence. :) An article named "Prevalence should Prevail" would be a nice start to make a little noise.
Why rename what has been perfectly defined? Not only MemoryImage is a "quick and dirty" definition, after all these years the arbitrary rename also shows disrespect for a community that has invested so much in evolving, discussing and sharing the pattern (Prevayler).
I dont agree with "not a database", really depends on how you define it. See first paragraph: http://en.wikipedia.org/wiki/Database
I'm not trying to suggest a better name. I accept Prevalence, Prevalent System and Prevalent System Architecture as standards and use them when appropriate. I also consider Memory Based Architecture as a generalization of prevalence.
But when explaining the concept to someone new I would say in-memory database is a great starting point. That usually gets the discussion going, eg: "Is it an object database? graph database? How do you achieve persistence?"
Rofr, no prevalence layer is "an organized collection of data for one or more purposes, usually in digital form." (http://en.wikipedia.org/wiki/Database)
The >apps< running on these prevalence layers can be defined as that.
I like "Persistence Layer" as a starting point for someone new.
I agree with the criticism of "Memory Image". I can see where Martin took that name from: Smalltalk. As influential as it used to be, however, I don't think the Smalltalk heritage is widespread enough today. It's not like people hear "Memory Image" and think "Oh, yes, like Smalltalk!". So I think it's an artificial name, and that's never good for a pattern.
On the other hand, sorry, but I never much liked "Prevalent System" either. Maybe because English is not my mother language, but when I hear "Prevalence", I think of a lot of things - not all of them pleasant, most of them related to violence and submission, and none of them related to this pattern. I think that we should just let the pattern spread, and a common name arise. Darwinian selection of dictionary is good, and not the point: the point is that this pattern is a good idea, and it should spread.
As a side note, I think that the condescendent attitude of many thought leaders towards Prevayler is not very generous. Prevayler deserves much more than a footnote, given all the bad vibes it got from people who accepted the then-current orthodoxy ("You cannot have persistence without SQL") without a question. Today, I think that the authors of Prevayler have a right to be recognised as far-sighted people.
OK, Klaus didn't "invent" the pattern. Fair enough: if you "invent" a pattern, then it's not a pattern, right? He kept the idea alive while the rest of the world was either ignoring him or accusing him of selling snake oil. In my book, that's reason enough for recognition and respect.
Indeed, Klaus deserves a good answer from Martin Fowler because of this: Klaus kept the idea alive, by means of a working implementation: Prevayler (as commented by nusco).
Martin is not obliged to accept Klaus' perspective (1), but an evasive footnote is not acceptable neither. Although obvious to Martin, his articles' readers should know some interesting pratical facts like the one stated in (2).
(1) It is called system prevalence. It encompasses transparent persistence, fault-tolerance and load-balancing.
Reference: http://www.advogato.org/article/398.html
(2) After working on a number of applications, I was most surprised to find that the most common bottleneck in a Prevalent system is not the data access and manipulation logic, but rather the Web server.
Reference: http://www.ibm.com/developerworks/library/wa-objprev/
What a shame Martin Fowler, what shame...
It's pretty simple. Money. Most of Martin Fowler stuff is pretty rehashed pogs of old.
Recently I had, not one but two interviews with the same question on dependency injection. The interviewers thought dp meant to pass an interface.... It's not a surprise people are confused when you market it that way.
One has to think that the term "dependancy injection" is a bs term meant to sell books and to coin it for himself. Its too bad because it's not a bad pattern but it's marketed in such a way that confuses many people because he tries to take owner ship to extreme levels. I would have just the pattern AutoFactory or something and spoke around the "IOC" container not the trival matter of how it is so called "injected" which actually should be replaced with "passed" a variable etc etc. Shame on you Martin. Stop naming patterns stupid shit and stealing old stuff and rehashing it as your own. It would be better you never existed.
"I prefer to use an existing term if there's one available."
http://martinfowler.com/bliki/Neologism.html
he seems to have contradicted himself :)