You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Loic R Julien <lj...@us.ibm.com> on 2011/11/16 18:21:22 UTC
TDB Model - Best practices
Hi,
1/ I currently only support a single persistent location: this.model =
TDBFactory.createModel(getPersistentLocation ()); for my TDB Model. My
Model is serving requests from many clients concurrently.
Some earlier posts seem to recommend that for a single location, there
should only be a single instance of the Model always up and running that
serve all client's requests (with TDB.sync on update).
-> I would like to confirm that this is the best practice.
2/ While I implemented MRSW, it sounds that there should be some common
knowledge on best practices. I have seen this
https://cwiki.apache.org/confluence/display/JENA/TxTDB but this is
incomplete at this stage.
-> Any documentation/sample written on this?
Thanks for your help,
~Loic
Re: TDB Model - Best practices
Posted by Andy Seaborne <an...@apache.org>.
On 17/11/11 15:58, Loic R Julien wrote:
> Hi Andy,
>
> Thank you for your answer. I have added a few questions below [Loic1]
>
>> Hi,
>>
>> 1/ I currently only support a single persistent location: this.model =
>> TDBFactory.createModel(getPersistentLocation ()); for my TDB Model.
>
>> [Andy]: (minor) It is better to use Datasets, not Models.
>
>>> [Loic1]: Is this to avoid the hidden, shared dataset? Are you
> suggesting I do
>>> TDBFactory.createDataset(Location) and get the Default Model instead?
> Thanks for
>>> clarifying the extent of your comment so that I make sure I have the
> right
>>> architecture.
Yes and yes.
It is effective what the implementation does these days - but if you
have the dataset it can be useful for other models.
>> My
>> Model is serving requests from many clients concurrently.
>> Some earlier posts seem to recommend that for a single location, there
>> should only be a single instance of the Model always up and running that
>> serve all client's requests (with TDB.sync on update).
>> -> I would like to confirm that this is the best practice.
>
> There must only be one database engine per location ... but TDBFactory
> sorts that out for you. If you ask TDBFactory for a dataset (or model)
> at a location, it returns a suitably shared instance. The actual Java
> object will be different but internally it refers to the shared objects.
>
> Use from multiple JVMs is not supported (use Fuseki).
>
>> 2/ While I implemented MRSW, it sounds that there should be some common
>> knowledge on best practices. I have seen this
>> https://cwiki.apache.org/confluence/display/JENA/TxTDB but this is
>> incomplete at this stage.
>> -> Any documentation/sample written on this?
>
> TDB trunk (v0.9.0) is transactional if you ask for a transactional
> dataset. In 0.9.0, existing usage will act as before; you need to ask
> for a transactional database.
>
> http://openjena.org/wiki/TDB/Transactions shows the internal APIs -
> there will be (actually,there is in trunk/) TDBFactoryTxn.
>
> This will be in the next release, along with documentation.
>
>>> [Loic1] OK, great. Thank you. Just got the code out of Trunk. Is there
> a planned dated for 0.9.0 so that I know if this
>>> would be suitable for us?
"soon" and "ASAP".
IBM having been helping test it.
Andy
>
> Andy
>
>>
>> Thanks for your help,
>> ~Loic
>
>
>
Re: TDB Model - Best practices
Posted by Loic R Julien <lj...@us.ibm.com>.
Hi Andy,
Thank you for your answer. I have added a few questions below [Loic1]
> Hi,
>
> 1/ I currently only support a single persistent location: this.model =
> TDBFactory.createModel(getPersistentLocation ()); for my TDB Model.
> [Andy]: (minor) It is better to use Datasets, not Models.
>> [Loic1]: Is this to avoid the hidden, shared dataset? Are you
suggesting I do
>> TDBFactory.createDataset(Location) and get the Default Model instead?
Thanks for
>> clarifying the extent of your comment so that I make sure I have the
right
>> architecture.
> My
> Model is serving requests from many clients concurrently.
> Some earlier posts seem to recommend that for a single location, there
> should only be a single instance of the Model always up and running that
> serve all client's requests (with TDB.sync on update).
> -> I would like to confirm that this is the best practice.
There must only be one database engine per location ... but TDBFactory
sorts that out for you. If you ask TDBFactory for a dataset (or model)
at a location, it returns a suitably shared instance. The actual Java
object will be different but internally it refers to the shared objects.
Use from multiple JVMs is not supported (use Fuseki).
> 2/ While I implemented MRSW, it sounds that there should be some common
> knowledge on best practices. I have seen this
> https://cwiki.apache.org/confluence/display/JENA/TxTDB but this is
> incomplete at this stage.
> -> Any documentation/sample written on this?
TDB trunk (v0.9.0) is transactional if you ask for a transactional
dataset. In 0.9.0, existing usage will act as before; you need to ask
for a transactional database.
http://openjena.org/wiki/TDB/Transactions shows the internal APIs -
there will be (actually,there is in trunk/) TDBFactoryTxn.
This will be in the next release, along with documentation.
>> [Loic1] OK, great. Thank you. Just got the code out of Trunk. Is there
a planned dated for 0.9.0 so that I know if this
>> would be suitable for us?
Andy
>
> Thanks for your help,
> ~Loic
Re: TDB Model - Best practices
Posted by Andy Seaborne <an...@apache.org>.
On 16/11/11 17:21, Loic R Julien wrote:
> Hi,
>
> 1/ I currently only support a single persistent location: this.model =
> TDBFactory.createModel(getPersistentLocation ()); for my TDB Model.
(minor) It is better to use Datasets, not Models.
> My
> Model is serving requests from many clients concurrently.
> Some earlier posts seem to recommend that for a single location, there
> should only be a single instance of the Model always up and running that
> serve all client's requests (with TDB.sync on update).
> -> I would like to confirm that this is the best practice.
There must only be one database engine per location ... but TDBFactory
sorts that out for you. If you ask TDBFactory for a dataset (or model)
at a location, it returns a suitably shared instance. The actual Java
object will be different but internally it refers to the shared objects.
Use from multiple JVMs is not supported (use Fuseki).
> 2/ While I implemented MRSW, it sounds that there should be some common
> knowledge on best practices. I have seen this
> https://cwiki.apache.org/confluence/display/JENA/TxTDB but this is
> incomplete at this stage.
> -> Any documentation/sample written on this?
TDB trunk (v0.9.0) is transactional if you ask for a transactional
dataset. In 0.9.0, existing usage will act as before; you need to ask
for a transactional database.
http://openjena.org/wiki/TDB/Transactions shows the internal APIs -
there will be (actually,there is in trunk/) TDBFactoryTxn.
This will be in the next release, along with documentation.
Andy
>
> Thanks for your help,
> ~Loic