db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Matrigali <mikem_...@sbcglobal.net>
Subject Re: [jira] Updated: (DERBY-393) Allow multiple JVMs to have read-only access to the same directory-based database
Date Tue, 28 Jun 2005 01:17:14 GMT
I think this patch just takes care of the read only connection side. 
What happens if another connection comes into the same directory that
does writes?  Without locking the readonly connection can get serious
errors because the ondisk version of files can become out of date with
the in cache version in the other JVM.

The safest approach seems to create some sort of ADMIN interface which
would mark the database as read only, and then only read only 
connections would be allowed.  That seems most straight forward.
Currently as I understand it the store looks to see if the actual
files are readonly to put the db in readonly mode, so at that point if
it could check some sort of marker in the database - maybe in the
log control file it could do something similar.  Putting this in the
log is natural as it is the first module to boot when coming up on a
new database, and owns whether or not writes can be done.

Another approach that might work depending on the java file locking
support may be to not avoid the lock file but enhance it.  Allow
multiple read locks for the readonly db's while excluding

For context the current readonly support was meant for running derby 
from some sort of readonly material like a CD.  An example
application was a catalog application reading the products from a 
readonly db or another example would be a computer learning product
where each lesson was data delivered in a static derby database.

One could allow any connection but fail update operations but that would
be a lot more work, and does not seem as user friendly.

Trejkaz (JIRA) wrote:
>      [ http://issues.apache.org/jira/browse/DERBY-393?page=all ]
> Trejkaz updated DERBY-393:
> --------------------------
>     Attachment: readonly.patch
> This patch creates a new URL sub-scheme "readonlydirectory" which can be used to load
a database from a directory in read-only mode.
> It isn't ideal... for one, the URL syntax is a little unwieldy.  The syntax is currently
like this:
> jdbc:derby:readonlydirectory:C:\Databases\MyDatabase
> I would rather the syntax be like this:
> jdbc:derby:directory:C:\Databases\MyDatabase;readonly=true
> But I couldn't figure out how to do the latter.  My patch only contains the Java 1.4
version of the read-only store.  For completeness, I suppose you'd need a 1.3 and a 1.4 version.
 Either that or a decorator class which wraps any other store.  I suppose that the decorator
approach would make re-use a little easier.
>>Allow multiple JVMs to have read-only access to the same directory-based database
>>         Key: DERBY-393
>>         URL: http://issues.apache.org/jira/browse/DERBY-393
>>     Project: Derby
>>        Type: New Feature
>>  Components: Store
>>    Reporter: Trejkaz
>> Attachments: readonly.patch
>>For an application I'm building, we needed to permit multiple JVMs to access the same
>>We couldn't easily use a network server configuration, as it would be difficult to
figure out who to connect to since either user might want to view the database while the other
database is offline.
>>We couldn't just dump all the data in a JAR file, as our databases often end up being
several gigabytes in size.
>>So what we really need is a version of the directory store which is treated as if
it were read-only.

View raw message