Re: AW: AW: Fw: GPL / LGPL
Christian Merenda <[email protected]> Wed, 29 Jun 2005 10:26:49 +0200
| Newsgroups | gmane.comp.java.ozone.user |
|---|---|
| Message-ID | <[email protected]> |
Hello Wieslaw, hello Per, as far as I understand now, the ozone database server works like this: At any time there´s only one instance of a persistent object in memory. This object resides for the whole lifecycle at the server´s site. If a client invokes some method, this method-call is always (!) delegated to the server transparently. You generate some client-side stubs in a CORBA style fashion, which handle the client-server interaction. The programmer has to differentiate between read-only and update methods. Therefore you have the /* update */ statement. Whenever a read-only method is invoked, the server acquires a read lock on the corresponding object. Whenever an update method is invoked, the server acquires a write/exclusive lock. If a server-side persistent object calls other methods of potentially other persistent objects, the corresponding locks are acquired in the context of the client-side transaction. You can have multiple, concurrent readers but only one writer. If a write-lock is granted, every transaction has to wait for the object. If a read-lock is granted, other readers are welcome, but a writer has to wait until the object is released by everybody. The locks are released at the end of a transaction. Do you grant subsequent read locks, if a writer is already waiting for an object, so that in fact a writer may wait indefinitely for an object, because there´s always a reading transaction? Or do you place lock requests in a queue? What about timeouts and deadlocks? What kind of server-side cross-transactional caching strategy do you have? You place the (related) persistent objects in clusters, which are stored on disk at a size of 64 kbyte, am I right? You probably have some kind of index, so that you know, in which cluster you can find an object with a specific OID. At request time, you put the whole page in memory - the objects are instantiated. Do you have some kind of instance pool, so that object instantiation works faster? - First of all, what do you do if an update occurs? Do you write to the disk immediately, or are the changes cached in memory as long as the page is written back to the disk as a whole? - And secondly, how do you decide whether to keep the page in memory or release it to the disk? - And thirdly, how do you guarantee atomicity and durability of a transaction? Do you have some kind of logging engine? Something else? A load of questions, I know! Nevertheless, it might be interesting for everybody... ;) I´m looking forward to your answers! Thanks in advance, Christian > Hi, > > > > What is your isolation level? > > > > Not sure about non-repeatable and serailizable but definitely not > > allowing dirty reads. Maybe Leo, Wieslaw or Falko could share some light > > on this? > > Ozone allows only exclusive writing/update transactions. It means that > all other read transactions must wait until the update transaction is > finished. > I think that this behaviour may be compared to RDMBS serializable > transaction isolation level. > > Cheers, > Wieslaw > > > > > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click > _______________________________________________ > Ozone-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ozone-users ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click