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).
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. In a short future we will need to implement a
cache system over simpledb and times will change (does anyone try to
implement it?).
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)
Best regards
Javier
Stefan Guggisberg wrote:
hi javier,
On 11/3/05, Javier Bermejo <[EMAIL PROTECTED]> 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)