You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by "Tao (陶信东)" <ta...@myhexin.com> on 2012/06/14 05:43:16 UTC
Does TDB allow concurrent access?
I got the following reply from Vivo group which said not. But I thought TDB
DOES allow concurrent access (at least concurrent read).
So what on earth is the fact? And if TDB does not allow for concurrent
access, does SDB? (Vivo used SDB)
From: Haines, Chris [mailto:hainesc@ufl.edu]
Sent: Thursday, June 14, 2012 10:48 AM
To: VIVO Development List
Subject: Re: [Vivo-dev-all] why not TDB?
Because TDB does not allow for concurrent access and is therefore not a
viable storage backend for Vitro.
--
Haines, Chris
Pardon typos: sent from my mobile.
----- Reply message -----
From: "Tao (陶信东)" <ta...@myhexin.com>
To: "vivo-dev-all@lists.sourceforge.net"
<vi...@lists.sourceforge.net>
Subject: [Vivo-dev-all] why not TDB?
Date: Wed, Jun 13, 2012 22:35
Hi all,
I’m studying the source code of Vitro and saw the following lines in
JenaDataSourceSetupBase.java.
switch (storeType) {
case RDB:
g = new RegeneratingGraph(
new RDBGraphGenerator(
ds, dbType, jenaDbModelName));
break;
case SDB:
String layoutStr = ConfigurationProperties.getBean(ctx)
.getProperty(
"VitroConnection.DataSource.sdb.layout",
"layout2/hash");
String dbtypeStr = ConfigurationProperties.getBean(ctx)
.getProperty("VitroConnection.DataSource.dbtype",
"MySQL");
StoreDesc desc = new StoreDesc(
LayoutType.fetch(layoutStr),
DatabaseType.fetch(dbtypeStr) );
g = new RegeneratingGraph(
new SDBGraphGenerator(
ds, desc, jenaDbModelName));
break;
default: throw new RuntimeException (
"Unsupported store type " + storeType);
}
It seems only RDB and SDB are supported. Why don’t we use TDB? I think it
is much more efficient than SDB, in both loading and querying data.
Thanks
Tao
Re: Does TDB allow concurrent access?
Posted by Andy Seaborne <an...@apache.org>.
On 14/06/12 04:43, Tao (陶信东) wrote:
> I got the following reply from Vivo group which said not. But I thought
> TDB DOES allow concurrent access (at least concurrent read).
>
> So what on earth is the fact? And if TDB does not allow for concurrent
> access, does SDB? (Vivo used SDB)
TDB allows concurrent access.
Do be careful what you mean by that: TDB 0.9.0 allows multi readers and
a single writer to execute truly concurrently, i.e. all making progress.
TDB 0.8.X required locking (MRSW) but concurrent access by requests was
possible (e.g. Fuseki locked internally to give multi-request access
concurrently).
Certain large corporation are claiming otherwise - they are out of date
(to put a polite interpretation on their claims). Or they can't cope
with open source systems actually getting better. Release early,
release often.
RDB is not supported anymore and has been removed from Jena after a long
deprecation cycle.
Andy
>
> *From:*Haines, Chris [mailto:hainesc@ufl.edu]
> *Sent:* Thursday, June 14, 2012 10:48 AM
> *To:* VIVO Development List
> *Subject:* Re: [Vivo-dev-all] why not TDB?
>
> Because TDB does not allow for concurrent access and is therefore not a
> viable storage backend for Vitro.
>
> --
> Haines, Chris
>
> Pardon typos: sent from my mobile.
>
> ----- Reply message -----
> From: "Tao (陶信东)" <taoxindong@myhexin.com
> <ma...@myhexin.com>>
> To: "vivo-dev-all@lists.sourceforge.net
> <ma...@lists.sourceforge.net>"
> <vivo-dev-all@lists.sourceforge.net
> <ma...@lists.sourceforge.net>>
> Subject: [Vivo-dev-all] why not TDB?
> Date: Wed, Jun 13, 2012 22:35
>
> Hi all,
>
> I’m studying the source code of Vitro and saw the following lines in
> JenaDataSourceSetupBase.java.
>
> *switch*(storeType) {
>
> *case*/RDB/:
>
> g = *new*RegeneratingGraph(
>
> *new*RDBGraphGenerator(
>
> ds, dbType, jenaDbModelName));
>
> *break*;
>
> *case*/SDB/:
>
> String layoutStr = ConfigurationProperties./getBean/(ctx)
>
> .getProperty(
>
> "VitroConnection.DataSource.sdb.layout",
>
> "layout2/hash");
>
> String dbtypeStr = ConfigurationProperties./getBean/(ctx)
>
> .getProperty("VitroConnection.DataSource.dbtype",
>
> "MySQL");
>
> StoreDesc desc = *new*StoreDesc(
>
> LayoutType./fetch/(layoutStr),
>
> DatabaseType./fetch/(dbtypeStr) );
>
> g = *new*RegeneratingGraph(
>
> *new*SDBGraphGenerator(
>
> ds, desc, jenaDbModelName));
>
> *break*;
>
> *default*: *throw**new*RuntimeException (
>
> "Unsupported store type "+ storeType);
>
> }
>
> It seems only RDB and SDB are supported. Why don’t we use TDB? I think
> it is much more efficient than SDB, in both loading and querying data.
>
> Thanks
>
> Tao
>