On 9/4/2013 3:15, Claude Warren wrote:
As I recall the discuss around this topic dealt with the idea that you
could add each triple inside a transaction and when the transaction
committed transaction code would do the bulk update if supported.
If this were the case, then the code in the GraphUtil helper functions
should probably wrap the individual performUpdate calls with a
transaction, but they don't.
However
I may be way off base here. I have no objection to retaining the BUH.
I would greatly appreciate seeing this resolved before the final
release. As suggested earlier, we could gain time for a proper redesign
by avoiding the calls to the GraphUtil replacement functions, or
changing those functions so that they call graph.getBulkUpdateHandler()
for the time being, and possibly undeprecate BUH for now.
Thanks,
Holger
Claude
On Tue, Sep 3, 2013 at 12:17 AM, Holger Knublauch <[email protected]>wrote:
Hi group,
I did not see any response to my question below, which is usual for this
list where responses are usually fast and competent. As this is quite a
crucial issue for our upgrade right now, I would like to ask again, and
rephrase my question. I understand SDB is rather unsupported, but the issue
is really a question on the core API.
Deprecating the BulkUpdateHandler will not only affect SDB but any other
database such as Oracle RDF (the Jena adapter of which implements its own
BUH right now). Granted, the class is not gone yet, but some existing API
calls (Model.add) already bypass the BulkUpdateHandler, and I believe this
was premature (revision 1419595). My suggestion is to continue to delegate
Model.add through the BulkUpdateHandler for the upcoming release until the
interface has been truly removed/replaced with something else. BUH does not
represent much implementation overhead for Graph implementers, because they
can simply use the default implementation. The current implementation is
too inefficient for our product.
If there is a cleaner mechanism to get the same performance, then I'd be
happy to hear about it.
Thanks
Holger
On 8/29/2013 9:39, Holger Knublauch wrote:
SDB currently implements its own BulkUpdateHandler, and I just made some
tests that indicate that it is significantly faster than using
GraphUtil.add (2 seconds versus 40 seconds for 10k triples). Now that
BulkUpdateHandler has been deprecated, and Model.add is already using
GraphUtil.add, what call sequence are we supposed to use to retain the good
performance of the BulkUpdateHandler? Could a method
Graph.add(Iterable<Triple>) be added to allow graphs to optimize the
behavior for specific Graph types?
Thanks
Holger