> I think having redundant copies could be very helpful to increase
> performance
> of the rdbms-store. Nearly every statement uses joins to get the URI-id.
> If
> you use a db that only allows table locking (like the free version of
> sybase)
> you'll quickly run into serious performance problems.

Fair point, though if a relational database doesn't let you use
relationships then I start to question its value... ;)

> I agree that the db-layout will look a bit ugly by adding this (redundant)
> columns but i think the gained performance and better scalability will be
> worth this price.

I'm not particularly concerned with the 'aesthetics' of the data model ;) I
am concerned with how to keep all these redundant urls up-to-date when
things get moved around within the repository, you would only have to forget
to update one copy for all sorts of strange and hard to find problems to
start.  

On top of that, if you are indexing the url string field (which I think
would be reasonable if you had a lot of entries in the repository) then the
db will be rebuilding that index for each redundant url several times
over... though this probably isn't as frequent an occurrence as a "read", it
will affect "insert new" and "move" operations.

Cheers

Andy

> 
> Daniel
> 
> >
> > Cheers
> >
> > Andy
> >
> > -----Original Message-----
> > From: Oliver Zeigermann [mailto:[EMAIL PROTECTED]
> > Sent: 14 November 2003 12:27
> > To: Slide Developers Mailing List
> > Subject: Merged RDBMS store
> >
> > Hi!
> >
> > I have just committed the initial proposal for the merged RBDMS store
> > into the proposal section of the CVS. It should work with the current
> > ACL-12 implementation, although no extensive testing has been done yet.
> >
> > To sum things up:
> >
> > - Adapter concept has been taken over from the work initally done by
> > Christopher Lenz to enable usage both with datasources configured in a
> > J2EE container and connections configured in Domain.xml. J2EE and JDBC
> > store share a common code base that mainly differs in the way a new
> > connection is created.
> > - Added some code from Christophe Lombart to allow for connection
> > pooling with the JDBC store using DBCP.
> > - The database schema and most of the SQL has been taken over from the
> > store provided by Ashok in this list. It should still be compatible to
> > the old schema:
> >    - Ordering of ACEs has been added using an added row
> >    - Some really minor stuff changed to make tables work with Sybase as
> > well - Statements have been combined and turned into prepared ones (with
> > substantial contribution from my collegue Daniel Florey :)
> >    - Removed minor "myRevisionDescriptor"-hack
> > - The proposal should work with MS SQLServer and Sybase
> >
> > Open issues:
> >
> > - Some sort of deadlocks occur on delete and insert when having an
> > isolation level higher than read committed. This happens even with a
> > single request. Maybe this is problem with reads outside of
> > transactions? Have to check this.
> > - When looking at the database schema we noticed allmost all requests
> > use the URI table to map URI to ID. This very likely will limit
> > scalability under concurrent access. I'd propose to change the DB schema
> > to have redundant URI strings in all tables that have foreign key to the
> > URI table. Keys and foreign keys would still be IDs. Drawback would be
> > redundancy and imcompatibility to the old schema.
> > - Ports to other major databases: I can do Oracle, but will need help
> > with others. I think we already found volunteers to do MySQL and
> > Postgres. DB2 volunteers would be nice...
> > - This implmentation still lacks reasonable performance in my very
> > simple test scenario. What do you folks say?
> > - There still is some confusion about how to handle branches and
> revisions
> > - Tests need to be run
> >
> > Configuration:
> >
> > When using the standalone variant, the respective fragment in your
> > Domain.xml might look like. Be sure to have the "SelectMethod=cursor"
> > property set in the JDBC url.
> >
> > ...
> > <store name="SQLServerStore"
> > classname="org.apache.slide.store.ExtendedStore">
> >    <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
> >    <parameter
> >
> name="adapter">org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter</par
> a
> >m eter>
> >     <parameter
> > name="driver">com.microsoft.jdbc.sqlserver.SQLServerDriver</parameter>
> >     <parameter
> >
> name="url">jdbc:microsoft:sqlserver://moe.finix.de:1433;DatabaseName=Slide
> ;
> >S electMethod=cursor</parameter>
> >     <parameter name="user">[user]</parameter>
> >     <parameter name="password">[password]</parameter>
> >     <parameter name="dbcpPooling">true</parameter>
> >     <parameter name="maxPooledConnections">10</parameter>
> >     <parameter name="isolation">READ_COMMITTED</parameter>
> >     <!-- adapter parameters -->
> >     <parameter name="compress">true</parameter>
> >     ...
> >   </store>
> > ...
> >
> > When using the J2EE variant you only have to configure the JNDI name for
> > the datasource (e.g. jdbc/datasource):
> >
> > ...
> > <store name="SQLServerStore"
> > classname="org.apache.slide.store.ExtendedStore">
> >    <nodestore classname="org.apache.slide.store.impl.rdbms.J2EEStore">
> >    <parameter
> >
> name="adapter">org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter</par
> a
> >m eter>
> >     <parameter name="datasource">jdbc/datasource</parameter>
> >     <!-- adapter parameters -->
> >     <parameter name="compress">true</parameter>
> >     ...
> >   </store>
> > ...
> >
> > Certainly I have forgotten something ;)
> >
> > Oliver
> >
> >
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to