----- Original Message -----
From: "Adam Megacz" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, November 27, 2003 4:46 AM
Subject: [Hibernate] in-memory databases vs query-in-memory databases


>
> Okay, this isn't 100% hibernate-related, but I figure you guys think a
> lot about stuff like this.
>
> Prevayler's pitch goes something like this: "if all your data fits in
> memory, you don't need concurrent transactions, because every
> transaction will be demanding the same resource (cpu/memory
> bandwidth)."  Obviously this doesn't work if your data set is larger
> than (or might grow to become larger than) your available memory.  I
> can see this being a fairly common situation.
>
> What if you were sure that the total amount of data needed to perform
> any given transaction could fit in memory?  In that case, could you:
>
>   1) Load all pages needed by a transaction and pin them in memory
>
>   2) Perform the transaction
>
> Any number of transactions could be doing (1) at the same time, but
> there would be only a single thread permitted to do (2).  Once a
> transaction has pinned all the pages it will need, it queues itself
> for (2).  Once (2) is complete, the pages are unpinned (if the
> reference count for the page falls to zero, of course -- multiple
> transactions can pin the same page).
>
> This would eliminate the need for fine grained locking and most of the
> other stuff that makes databases complex, since only one thread is
> running transactions.  Adding more transaction threads wouldn't win
> you anything, because a transaction on strictly-in-memory data never
> blocks.

Databases lock updated and deleted rows only and transaction  blocks on
conflict only,
it never block query or not conflictiong updates, I see three ways to solve
update conflict:
1) block transaction
2) abort transaction
3) no concurent transactions

Looks like  3 is prefered in Prevayler, is not it ?


>
> The downside is that you have to be certain that you'll never run a
> query that needs more data than you have memory.  OTOH, 4GB of ram is
> pretty cheap these days.  And if your query needs to pull 4GB of data
> off the disk [*], well, it's going to be incredibly slow in the first
> place.  I don't think too many people run queries like that.
>
>   - a
>
> --
> "Education is not filling a bucket but lighting a fire." -- WB Yeats
>
> [*] Note that simply selecting a 4GB table doesn't actually need to
>     pull 4GB off the disk.
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: SF.net Giveback Program.
> Does SourceForge.net help you be more productive?  Does it
> help you create better code?  SHARE THE LOVE, and help us help
> YOU!  Click Here: http://sourceforge.net/donate/
> _______________________________________________
> hibernate-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/hibernate-devel



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to