Am Freitag, 14. November 2003 14:15 schrieb Andy Redhead: > > 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.
That's true but should be possible to implement, because the data model is still quite simple ;-) > > 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. This is a good point. We are going to use slide as a CMS that will serve and compose web pages in real time, so read-performance is much more important for us than write/copy/move-performance. If you are using slide as a versioning system (to replace cvs or something like that) this might be different. So this is a point that should be discussed. Daniel > > 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</pa > >r a > > > > >m eter> > > > <parameter > > > name="driver">com.microsoft.jdbc.sqlserver.SQLServerDriver</parameter> > > > <parameter > > > > name="url">jdbc:microsoft:sqlserver://moe.finix.de:1433;DatabaseName=Slid > >e ; > > > > >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</pa > >r 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
