Oren Eini

aka Ayende Rahien

Oren Eini

CEO of RavenDB

a NoSQL Open Source Document Database

Get in touch with me:

oren@ravendb.net +972 52-548-6969

Posts: 7,578
|
Comments: 51,203

Copyright ©️ Ayende Rahien 2004 — 2025

Privacy Policy · Terms
filter by tags archive
stack view grid view
  • architecture (608) rss
  • bugs (450) rss
  • challanges (123) rss
  • community (378) rss
  • databases (481) rss
  • design (894) rss
  • development (640) rss
  • hibernating-practices (71) rss
  • miscellaneous (592) rss
  • performance (397) rss
  • programming (1085) rss
  • raven (1445) rss
  • ravendb.net (529) rss
  • reviews (184) rss
  • 2025
    • May (10)
    • April (10)
    • March (10)
    • February (7)
    • January (12)
  • 2024
    • December (3)
    • November (2)
    • October (1)
    • September (3)
    • August (5)
    • July (10)
    • June (4)
    • May (6)
    • April (2)
    • March (8)
    • February (2)
    • January (14)
  • 2023
    • December (4)
    • October (4)
    • September (6)
    • August (12)
    • July (5)
    • June (15)
    • May (3)
    • April (11)
    • March (5)
    • February (5)
    • January (8)
  • 2022
    • December (5)
    • November (7)
    • October (7)
    • September (9)
    • August (10)
    • July (15)
    • June (12)
    • May (9)
    • April (14)
    • March (15)
    • February (13)
    • January (16)
  • 2021
    • December (23)
    • November (20)
    • October (16)
    • September (6)
    • August (16)
    • July (11)
    • June (16)
    • May (4)
    • April (10)
    • March (11)
    • February (15)
    • January (14)
  • 2020
    • December (10)
    • November (13)
    • October (15)
    • September (6)
    • August (9)
    • July (9)
    • June (17)
    • May (15)
    • April (14)
    • March (21)
    • February (16)
    • January (13)
  • 2019
    • December (17)
    • November (14)
    • October (16)
    • September (10)
    • August (8)
    • July (16)
    • June (11)
    • May (13)
    • April (18)
    • March (12)
    • February (19)
    • January (23)
  • 2018
    • December (15)
    • November (14)
    • October (19)
    • September (18)
    • August (23)
    • July (20)
    • June (20)
    • May (23)
    • April (15)
    • March (23)
    • February (19)
    • January (23)
  • 2017
    • December (21)
    • November (24)
    • October (22)
    • September (21)
    • August (23)
    • July (21)
    • June (24)
    • May (21)
    • April (21)
    • March (23)
    • February (20)
    • January (23)
  • 2016
    • December (17)
    • November (18)
    • October (22)
    • September (18)
    • August (23)
    • July (22)
    • June (17)
    • May (24)
    • April (16)
    • March (16)
    • February (21)
    • January (21)
  • 2015
    • December (5)
    • November (10)
    • October (9)
    • September (17)
    • August (20)
    • July (17)
    • June (4)
    • May (12)
    • April (9)
    • March (8)
    • February (25)
    • January (17)
  • 2014
    • December (22)
    • November (19)
    • October (21)
    • September (37)
    • August (24)
    • July (23)
    • June (13)
    • May (19)
    • April (24)
    • March (23)
    • February (21)
    • January (24)
  • 2013
    • December (23)
    • November (29)
    • October (27)
    • September (26)
    • August (24)
    • July (24)
    • June (23)
    • May (25)
    • April (26)
    • March (24)
    • February (24)
    • January (21)
  • 2012
    • December (19)
    • November (22)
    • October (27)
    • September (24)
    • August (30)
    • July (23)
    • June (25)
    • May (23)
    • April (25)
    • March (25)
    • February (28)
    • January (24)
  • 2011
    • December (17)
    • November (14)
    • October (24)
    • September (28)
    • August (27)
    • July (30)
    • June (19)
    • May (16)
    • April (30)
    • March (23)
    • February (11)
    • January (26)
  • 2010
    • December (29)
    • November (28)
    • October (35)
    • September (33)
    • August (44)
    • July (17)
    • June (20)
    • May (53)
    • April (29)
    • March (35)
    • February (33)
    • January (36)
  • 2009
    • December (37)
    • November (35)
    • October (53)
    • September (60)
    • August (66)
    • July (29)
    • June (24)
    • May (52)
    • April (63)
    • March (35)
    • February (53)
    • January (50)
  • 2008
    • December (58)
    • November (65)
    • October (46)
    • September (48)
    • August (96)
    • July (87)
    • June (45)
    • May (51)
    • April (52)
    • March (70)
    • February (43)
    • January (49)
  • 2007
    • December (100)
    • November (52)
    • October (109)
    • September (68)
    • August (80)
    • July (56)
    • June (150)
    • May (115)
    • April (73)
    • March (124)
    • February (102)
    • January (68)
  • 2006
    • December (95)
    • November (53)
    • October (120)
    • September (57)
    • August (88)
    • July (54)
    • June (103)
    • May (89)
    • April (84)
    • March (143)
    • February (78)
    • January (64)
  • 2005
    • December (70)
    • November (97)
    • October (91)
    • September (61)
    • August (74)
    • July (92)
    • June (100)
    • May (53)
    • April (42)
    • March (41)
    • February (84)
    • January (31)
  • 2004
    • December (49)
    • November (26)
    • October (26)
    • September (6)
    • April (10)
Deep Dive into RavenDB webinars
  previous post next post  
Jan 28 2009

How did I end in this position?

time to read 1 min | 54 words

I am now in an argument where I am in support for stored procedures. A piece of the dialog:

Team Member #1: We have to do something about this, we don’t even have any stored procedures for this.

Me: I will write the stored procedure for you.

Tweet Share Share 22 comments
Tags:
  • Databases

  previous post next post  

Comments

Jeff Handley
28 Jan 2009
00:20 AM
Jeff Handley

Stored Procedures have their time and place.

http://twitter.com/jeffhandley/statuses/1055970127

While I was comparing to Linq to SQL, I imagine it would have been a LOT of effort to make any ORM perform the way the stored proc did in that case. And performance was a primary requirement for the task at hand.

configurator
28 Jan 2009
00:34 AM
configurator

Why are you against stored procedure?

As a rule, they are bad IMO in cases of abstracting simple select/insert/update, but for complex database operations I think they're quite useful

Not Alt
28 Jan 2009
00:37 AM
Not Alt

"Stored Procedures have their time and place."

Time = 1997

Place = Sql Server 7

Neil Mosafi
28 Jan 2009
00:37 AM
Neil Mosafi

Definitely useful if your standard CRUD operations underperform. Can't see any other reason for them though, can you?

Steve Bohlen
28 Jan 2009
02:05 AM
Steve Bohlen

We all eventually become the thing we hate; its as inevitable as the sun rising tomorrow :)

Ayende Rahien
28 Jan 2009
02:41 AM
Ayende Rahien

Configurator,

Did you READ the post?

Mikael Lundin
28 Jan 2009
06:43 AM
Mikael Lundin

I once found a stored procedure that returned html. The funny part was the TSQL logic that would set class attribute on a div depending on a query result.

But I guess we can't blame the technique for that mess. ;)

Dave
28 Jan 2009
08:30 AM
Dave

Well, if you've ever written a TSQL 'for xml explicit' query (multiple elements deep) you really start to appreciate stored procedures.

Calling them from an SQL Agent job performing cleanup and other maintenance tasks is another useful usage of stored procedures.

configurator
28 Jan 2009
09:24 AM
configurator

Ayende,

Yes. It seems to me that you're generally against them and this is a special case. I was asking why this is such a special case.

Bob
28 Jan 2009
11:14 AM
Bob

What's wrong with stored procedures? I usually write my data access code in stored procedures because it's much more efficient than calling SQL via .NET code and you have more control over the data through T-SQL functions etc.

Martin
28 Jan 2009
12:55 PM
Martin

To me it sound like it would be more interesting to know, not how you ended up in that position, but why your fellow team mate didn't ;) Especially in the view of the italic "I". Lack of dedication maybe?

Daniel Auger
28 Jan 2009
14:49 PM
Daniel Auger

@Bob,

You do realize Ayende is a contributor to NHibernate right?

jbland
28 Jan 2009
15:22 PM
jbland

@Mikael

one the worst perversities i've seen is from the offshore team that redesigned a web app at a former employer.

i was trying to create a webcontrol to integrate into the page pipeline, and i could not figure out where the HTML was being generated.

Turns out that the code called a stored procedure, which called a .NET assembly, which used ADO.net to query the database, which generated an XML string, which the assembly manipulated to produce HTML which the procedure returned to front end,

needless to say, im glad im gone.

Frank Quednau
28 Jan 2009
18:48 PM
Frank Quednau

Go, check out Gloria Gaynor's "I will survive" lyrics, exchange "you" with "stored procedure", add a salt of fantasy and you may have a chuckle or two..

Louis DeJardin
28 Jan 2009
19:39 PM
Louis DeJardin

I guess that what they mean by "the exception that proves the rule"

Andrew Hallock
28 Jan 2009
20:16 PM
Andrew Hallock

What's a stored procedure?

Dmitry
28 Jan 2009
22:48 PM
Dmitry

Stored procedures have their uses. They can prevent users from batch updating or deleting the data. Sprocs also make it easier to work with data on linked servers or perform complex data logic when entities do not directly match to tables.

Buddy Stein
29 Jan 2009
04:29 AM
Buddy Stein
  1. Cleaner to use Linked server.

  2. Some queries can be better optimized (read run faster) in stored procs than .net code or Linq to Sql. A good DBA can do miracles increasing performance in complex queries.

  3. Easy to modify the data access without re-compiling code.

suedeuno
29 Jan 2009
14:08 PM
suedeuno

If you're using sprocs because your CRUD underperforms then your code or database likely needs refactored.

Nuno Lopes
29 Jan 2009
15:00 PM
Nuno Lopes

Unless ORM and IoC are religions I don't understand the first post :) We all know that a good programmer simply uses or builds the best tool to solve a problem.

I guess the post is for us to do some guess work.

So here it is one:

Performance!

Nuno Lopes

Kristoffer Sheather
29 Jan 2009
22:46 PM
Kristoffer Sheather

No one has provided a hypothesis for how Ayende ended up in this position yet. Personally I'm not sure how either, but I'd sure be interested to hear the back story.

Ray
29 Jan 2009
22:59 PM
Ray

Very rarely sprocs will give you any real performance benefits while making things much more complecated for developer team.

Comment preview

Comments have been closed on this topic.

Markdown formatting

ESC to close

Markdown turns plain text formatting into fancy HTML formatting.

Phrase Emphasis

*italic*   **bold**
_italic_   __bold__

Links

Inline:

An [example](http://url.com/ "Title")

Reference-style labels (titles are optional):

An [example][id]. Then, anywhere
else in the doc, define the link:
  [id]: http://example.com/  "Title"

Images

Inline (titles are optional):

![alt text](/path/img.jpg "Title")

Reference-style:

![alt text][id]
[id]: /url/to/img.jpg "Title"

Headers

Setext-style:

Header 1
========
Header 2
--------

atx-style (closing #'s are optional):

# Header 1 #
## Header 2 ##
###### Header 6

Lists

Ordered, without paragraphs:

1.  Foo
2.  Bar

Unordered, with paragraphs:

*   A list item.
    With multiple paragraphs.
*   Bar

You can nest them:

*   Abacus
    * answer
*   Bubbles
    1.  bunk
    2.  bupkis
        * BELITTLER
    3. burper
*   Cunning

Blockquotes

> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
> 
> * You can quote a list.
> * Etc.

Horizontal Rules

Three or more dashes or asterisks:

---
* * *
- - - - 

Manual Line Breaks

End a line with two or more spaces:

Roses are red,   
Violets are blue.

Fenced Code Blocks

Code blocks delimited by 3 or more backticks or tildas:

```
This is a preformatted
code block
```

Header IDs

Set the id of headings with {#<id>} at end of heading line:

## My Heading {#myheading}

Tables

Fruit    |Color
---------|----------
Apples   |Red
Pears	 |Green
Bananas  |Yellow

Definition Lists

Term 1
: Definition 1
Term 2
: Definition 2

Footnotes

Body text with a footnote [^1]
[^1]: Footnote text here

Abbreviations

MDD <- will have title
*[MDD]: MarkdownDeep

 

FUTURE POSTS

No future posts left, oh my!

RECENT SERIES

  1. Recording (16):
    29 May 2025 - RavenDB's Upcoming Optimizations Deep Dive
  2. Webinar (6):
    27 May 2025 - RavenDB's Upcoming Optimizations Deep Dive
  3. RavenDB News (2):
    02 May 2025 - May 2025
  4. Production Postmortem (52):
    07 Apr 2025 - The race condition in the interlock
  5. RavenDB (13):
    02 Apr 2025 - .NET Aspire integration
View all series

RECENT COMMENTS

  • What a massive presentation! As a person who spent some time with a db written in .NET I can strongly relate to some points. ...
    By Scooletz on Recording: RavenDB's Upcoming Optimizations Deep Dive
  • I’d love to learn your thoughts on SPANN https://arxiv.org/abs/2111.08566 that with centroids and keeping the posting lists s...
    By Scooletz on Comparing DiskANN in SQL Server & HNSW in RavenDB
  • Joel, The DiskANN paper talks about it being viable for more than a billion vectors datasets.  In such a scenario, it would ...
    By Oren Eini on Comparing DiskANN in SQL Server & HNSW in RavenDB
  • Do you know why they chose DiskANN? These things are usually about tradeoffs but it seems DiskANN is just worse in every way.
    By Joel on Comparing DiskANN in SQL Server & HNSW in RavenDB
  • Scooletz, Yes, we look at other stuff. Most of those are _not_ allowing you to build themselves incrementally nor are they...
    By Oren Eini on Scaling HNSW in RavenDB: Optimizing for inadequate hardware

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats
}