Hi Andy,
thanks for pointing at the old discussions. Reading through them, I
notice that TopQuadrant should have responded earlier. I don't know
whether I actually noticed this email, or whether I didn't understand
the implications at the time, or whether tracking the low level details
of Jena was outside of my responsibility at the time. In either case it
was an oversight and I would like to give my input, albeit late.
On 9/4/2013 19:15, Andy Seaborne wrote:
http://mail-archives.apache.org/mod_mbox/jena-users/201211.mbox/%3C50B660D4.6070306%40apache.org%3E
> "[the BulkUpdateHandler] is not used"
This is not correct as SDB and OracleRDF are using it, possibly others.
and the dev list a year ago:
http://mail-archives.apache.org/mod_mbox/jena-dev/201209.mbox/%3C5044E9F3.8060705%40apache.org%3E
Remove BulkUpdateHandler interface
Migrate it's few useful operation to Graph.
Yes, migrating the useful operations to Graph would IMHO have made
sense, but this has not happened yet - instead the suggestion is to use
transactions.
> UpdateHandlerSDB / A few of it's operations are useful but most turn
into nothing but loops to call add(Triple)/delete(Triple).
The SDB implementation is very useful and makes significant performance
differences. I assume likewise for Oracle.
Oracle are aware of the changes:
http://mail-archives.apache.org/mod_mbox/jena-users/201211.mbox/%3C50B688D8.9040600%40oracle.com%3E
Zhe responded that BUH is used, but judging from the archive, the
discussion seems to have ended without a proper conclusion.
Oracle do not track Jena versions.
Oracle (at least 11g) is for Jena 2.6.2 (2009-10-16)
http://docs.oracle.com/cd/E18283_01/appdev.112/e11828/sem_jena.htm
I do know that the complexities arising in Jena lead to costs for
storage implementers. I want to reduce those costs in the long term.
The latter argument is IMHO very weak. There are probably less than 10
Jena Graph database implementations (SDB, TDB, Oracle etc). They already
have BUH implementations. Even if 10 more Graph implementations are
added, it would mean that those 10 developers need to add approximately
three lines of code:
public BulkUpdateHandler getBulkUpdateHandler() {
return new SimpleBulkUpdateHandler(this);
}
OTOH by removing BulkUpdateHandler, you will see every user of this API
affected, certainly more than 10. The overhead of adjusting SDB alone
seems to far outweigh the cost savings (unless my previous observations
about SDB were incorrect).
BTW I do agree that the number of event listener methods should be
greatly reduced. Maybe only have notifyAddTriple and notifyAddIterable
(taking an Iterable instead of a List). I am not 100% sure that only
having notifyAddTriple would be sufficient for our use cases, so I'd
rather see one form of bulk event preserved and Iterable seems the most
generic one.
Thanks,
Holger