Skip to content

Instantly share code, notes, and snippets.

@klauswuestefeld
Created September 1, 2011 19:03
Show Gist options
  • Save klauswuestefeld/1186975 to your computer and use it in GitHub Desktop.
Save klauswuestefeld/1186975 to your computer and use it in GitHub Desktop.
Martin Fowler to Usurp Pattern
We couldn’t find any files to show.
@rofr
Copy link

rofr commented Sep 1, 2011

The liveDB engine is open source and available at http://livedomain.codeplex.com/ and as a nuget package

@felipecruz
Copy link

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! ++

@rofr
Copy link

rofr commented Sep 1, 2011

@rofr
Copy link

rofr commented Sep 1, 2011

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

@klauswuestefeld
Copy link
Author

The term In Memory Database to refer to Prevalence is bad because:

@quilombodigital
Copy link

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.

@germanviscuso
Copy link

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).

@rofr
Copy link

rofr commented Sep 2, 2011

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?"

@klauswuestefeld
Copy link
Author

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.

@nusco
Copy link

nusco commented Sep 11, 2011

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.

@edmundoandrade
Copy link

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/

Copy link

ghost commented Dec 21, 2011

What a shame Martin Fowler, what shame...

@rj45NSX
Copy link

rj45NSX commented Mar 15, 2016

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment