.NET Enterprise Edition, in-memory databases, Velocity and parallelism
January 8th, 2009
Microsoft project codename “Velocity” is now at CTP2 and due to be released in the second half of 2009. At JAJAH we have had many times to deal with scalability & performance issues, which lead us to develop our own scale-out solutions addressing both performance and high availability needs. A solution like “Velocity” could have shorten development & deployment time for us, however better late than never… There are few points about Velocity which I think are worth commenting on:
- Velocity is an advanced distributed cache, in a way you can look at it as an ‘in memory’ database.
- , I find it interesting to learn that this solution emerged from the SQL Server group - this says lot in my mind to the future of database architectures.
- One of the things that .NET framework was always weak on was the enterprise software architecture, this is very much unlike J2EE that was by design including architecture and interfaces (though some of it was poorly implemented ). When talking with Microsoft people I heard that Microsoft was hoping for other software vendors to augment with additional tools, while Microsoft was trying to stay away from competing with their own clients - this tendency seems to have changed (for the good if you ask me).
- Velocity works well with LINQ making this a real ‘in memory database’, aside the software architecture implication, there’s a direct implication on the development process - the DB is gradually turning into a smart storage device and less as container for application logic. This allows the migration of application logic to the business layer without worrying of potential performance issues - this is a key shift in my mind that’s hard to achieve in real life today.
Some notes for the future:
- ‘Object Oriented Database’ is very much 80’s and unfortunately did not really lift off big time - so far - however, I think it’s a gold opportunity to revisit with such a solution.
- I’d very much like to see this integrated with .NET 4.0 parallel task framework - why have distributed cache for data components and not executable objects / tasks? Seems to me like a logical interpolation.
Some further notes:
- The move of business logic out of the database strips the database from many of it’s assents : why don’t we see integration of database companies with storage companies?
- The re-thinking of threads in the conceptual terms on tasks kind of reminds me “Monty Python and the Holy Grail“:
HEAD KNIGHT: Nee! Nee! Nee! Nee! ARTHUR: Who are you? HEAD KNIGHT: We are the Knights Who Say... Nee! ARTHUR: No! Not the Knights Who Say Nee! HEAD KNIGHT: The same! BEDEMIR: Who are they? HEAD KNIGHT: We are the keepers of the sacred words: Nee, Pen, and Nee-wom! RANDOM: Nee-wom! ARTHUR: Those who hear them seldom live to tell the tale! HEAD KNIGHT: The Knights Who Say Nee demand a sacrifice! ARTHUR: Knights of Nee, we are but simple travellers who seek the enchanter who lives beyond these woods. HEAD KNIGHT: Nee! Nee! Nee! Nee! ARTHUR and PARTY: Oh, ow! HEAD KNIGHT: We shall say 'nee' again to you if you do not appease us. ARTHUR: Well, what is it you want? HEAD KNIGHT: We want... a shrubbery! [dramatic chord] ARTHUR: A what? HEAD KNIGHT: Nee! Nee! ARTHUR and PARTY: Oh, ow! ARTHUR: Please, please! No more! We shall find a shrubbery. HEAD KNIGHT: You must return here with a shrubbery or else you will never pass through this wood alive! ARTHUR: O Knights of Nee, you are just and fair, and we will return with a shrubbery. HEAD KNIGHT: One that looks nice. ARTHUR: Of course. HEAD KNIGHT: And not too expensive. ARTHUR: Yes. HEAD KNIGHTS: Now... go!
[SCENE 31]
ARTHUR: O, Knights of Nee, we have brought you your shrubbery. May we go now? HEAD KNIGHT: It is a good shrubbery. I like the laurels particularly. But there is one small problem. ARTHUR: What is that? HEAD KNIGHT: We are now... no longer the Knights Who Say Nee. RANDOM: Nee! HEAD KNIGHT: Shh shh. We are now the Knights Who Say Ecky-ecky-ecky- ecky-pikang-zoom-boing-mumble-mumble. RANDOM: Nee! HEAD KNIGHT: Therefore, we must give you a test. ARTHUR: What is this test, O Knights of-- Knights Who 'Til Recently Said Nee? HEAD KNIGHT: Firstly, you must find... another shrubbery! [dramatic chord] ARTHUR: Not another shrubbery! HEAD KNIGHT: Then, when you have found the shrubbery, you must place it here beside this shrubbery, only slightly higher so you get a two-level effect with a little path running down the middle. RANDOM: A path! A path! Nee! HEAD KNIGHT: Then, when you have found the shrubbery, you must cut down the mightiest tree in the forest... with... a herring! [dramatic chord] ARTHUR: We shall do no such thing! HEAD KNIGHT: Oh, please! ARTHUR: Cut down a tree with a herring? It can't be done. KNIGHTS: Aaaaugh! Aaaugh! HEAD KNIGHT: Don't say that word. ARTHUR: What word? HEAD KNIGHT: I cannot tell, suffice to say is one of the words the Knights of Nee cannot hear. ARTHUR: How can we not say the word if you don't tell us what it is? KNIGHTS: Aaaaugh! Aaaugh! ARTHUR: What, `is'? HEAD KNIGHT: No, not `is' -- we couldn't get vary far in life not saying `is'. BEDEMIR: My liege, it's Sir Robin! MINSTREL (singing): Packing it in and packing it up And sneaking away and buggering up And chickening out and pissing about Yes, bravely he is throwing in the sponge ARTHUR: Oh, Robin! ROBIN: My liege! It's good to see you! KNIGHTS: Aaaaugh! HEAD KNIGHT: He said the word! ARTHUR: Surely you've not given up your quest for the Holy Grail? MINSTREL (singing): He is sneaking away and buggering up-- ROBIN: Shut up! No, no no-- far from it. HEAD KNIGHT: He said the word again! ROBIN: I was looking for it. KNIGHTS: Aaaaugh! ROBIN: Uh, here, here in this forest. ARTHUR: No, it is far from-- KNIGHTS: Aaaaugh! HEAD KNIGHT: Aaaaugh! Stop saying the word! ARTHUR: Oh, stop it! KNIGHTS: Aaaaugh! HEAD KNIGHT: Oh! He said it again! ARTHUR: Patsy! HEAD KNIGHT: Aaugh! I said it! I said it! Ooh! I said it again! KNIGHTS: Aaaaugh!
Amichay