jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Guggisberg <stefan.guggisb...@gmail.com>
Subject Re: SimpleDBPersistenceManager and PostgreSQL
Date Fri, 04 Nov 2005 08:58:35 GMT
hi javier

On 11/4/05, Javier Bermejo <jbermejo@germinus.com> wrote:
>  Hi Stefan,
>
>  Currently I can say that simpledbpersistence is much faster than
> orm-persistence module. I'm having some troubles with referencing nodes (it
> seems it doesn't work fine, but I need to realize more tests to check it
> correctly).

do those problems occur with the SimpleDbPersistenceManager?
i'd be very surprised...

>
>  I hope in a few days or one week to post here some performance results
> about times for creating nodes, sharing them (using references), versioning
> and so on.

that would be very appreciated, thanks.

> In a short future we will need to implement a cache system over
> simpledb and times will change (does anyone try to implement it?).

chaching ItemState objects retrieved from the PersistenceManager is already
handled by the SharedItemStateManager using a ItemStateReferenceCache.

caching in the PM is IMO unnecessary and even counterproductive as it
consumes memory that could be more efficiently used by SharedItemStateManager.

>
>  I attach you the postgresql.ddl, but I'm not an expert on it, so, somebody
> would review it. The main change is to change the BLOB data type to BYTEA
> (http://www.postgresql.org/docs/7.2/interactive/datatype-binary.html)

thanks a lot! i'll commit it asap.

cheers
stefan

>
>  Best regards
>    Javier
>
>
>  Stefan Guggisberg wrote:
>  hi javier,
>
> On 11/3/05, Javier Bermejo <jbermejo@germinus.com> wrote:
>
>
>  Hello,
>
> Some days ago I was testing performance using orm-persistence with
> hibernate 2 and PostgreSQL. Today I have tested SimpleDBPersistence
> using a postgreSQL database and I have detected a bug in the class:
>
> Using JDBC with PostgreSQL doesn't found any table when checking the
> schema because it needs the tableNamePattern in lowercase (not
> uppercase), the effect is that it tries to create every time you start
> the repository the tables and get a Exception. So the solution I propose
> is to search the tableNamePattern using lower and uppercase in the
> checkSchema method:
>
>  protected void checkSchema() throws Exception {
>  String tableName = schemaObjectPrefix + "NODE";
>  ResultSet rs1 = con.getMetaData().getTables(null, null,
>  (tableName).toLowerCase(), null);
>  ResultSet rs2 = con.getMetaData().getTables(null, null,
>  tableName, null);
>  boolean schemaExists;
>  try {
>  schemaExists = rs1.next() || rs2.next();
>  } finally {
>  rs1.close();
>  rs2.close();
>  }
>
> I attach the diff from latest version in svn.
>
>  thanks! i will have a look at it asap.
>
> btw: i'd be very interested in the results of your performance tests.
> could you please share them with us?
>
> btw2: it would be cool if you could contribute a postgres.ddl file
> that works with SimpleDbPersistenceManager (see o.a.j.c.state.db.mysql.ddl
> for an an example for mysql). i 'd more than happy to commit it :)
>
> cheers
> stefan
>
>
>
>  Best regards
>  Javier Bermejo
>
>
>
> Index:
> src/main/java/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.java
> ===================================================================
> ---
> src/main/java/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.java
> (revisiĆ³n: 330576)
> +++
> src/main/java/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.java
> (copia de trabajo)
> @@ -924,13 +924,17 @@
>  * @throws Exception if an error occurs
>  */
>  protected void checkSchema() throws Exception {
> - ResultSet rs = con.getMetaData().getTables(null, null,
> - schemaObjectPrefix + "NODE", null);
> + String tableName = schemaObjectPrefix + "NODE";
> + ResultSet rs1 = con.getMetaData().getTables(null, null,
> + (tableName).toLowerCase(), null);
> + ResultSet rs2 = con.getMetaData().getTables(null, null,
> + tableName, null);
>  boolean schemaExists;
>  try {
> - schemaExists = rs.next();
> + schemaExists = rs1.next() || rs2.next();
>  } finally {
> - rs.close();
> + rs1.close();
> + rs2.close();
>  }
>
>  if (!schemaExists) {
>
>
>
>
>
>
>
>
> create table ${schemaObjectPrefix}NODE (NODE_ID char(36) not null, NODE_DATA
> BYTEA not null)
> create unique index ${schemaObjectPrefix}NODE_IDX on
> ${schemaObjectPrefix}NODE (NODE_ID)
> create table ${schemaObjectPrefix}PROP (PROP_ID varchar(255) not null,
> PROP_DATA BYTEA not null)
> create unique index ${schemaObjectPrefix}PROP_IDX on
> ${schemaObjectPrefix}PROP (PROP_ID)
> create table ${schemaObjectPrefix}REFS (NODE_ID char(36) not null, REFS_DATA
> BYTEA not null)
> create unique index ${schemaObjectPrefix}REFS_IDX on
> ${schemaObjectPrefix}REFS (NODE_ID)
> create table ${schemaObjectPrefix}BINVAL (BINVAL_ID varchar(255) not null,
> BINVAL_DATA BYTEA not null)
> create unique index ${schemaObjectPrefix}BINVAL_IDX on
> ${schemaObjectPrefix}BINVAL (BINVAL_ID)
>
>
>

Mime
View raw message