-
-
Notifications
You must be signed in to change notification settings - Fork 265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Increase BaseX storage limits: namespaces, number of nodes #902
Comments
Requires a new storage layout. Will probably be aligned with a higher node id limit (which would also fix #676). |
See also #1193 |
subscribe |
https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/data/Data.java#L27
|
We also ran into the nodes limit today; the corresponding error message is 'Insertion at beginning of populated table.'. This is pretty bad: the system is running faithfully for years, and then all of a sudden it's 'game over'. I understand that limits must exist, and Integer.MAX_VALUE is of course a typical limit in Java. However, it would be great if the existing limits could be documented somewhere more prominently. Also, I feel that all three limits mentioned in innovimax's last comment are likely to be exceeded by standard real-world applications nowadays. New storage layout is a big task, but I fear it will be needed. |
Hi, we ran into the same problem loading all Dutch legislation into BaseX. Although partitioning the dataset is an option, I think BaseX should be able to handle a real-world use-case like this, without users having to 'work around' it's limitations. |
What about an HDFS implementation of BaseX Database? |
Will this be fixed in 9.0? |
As this would require a completely new storage layout, it would be quite a breaking change. However, it might get an option if we find a potent sponsor. |
While I probably cannot convince my fellow managing directors to fund this single issue (so that I can finally index all the XSLT/XProc code and all other XML files on my hard disk), I will suggest that we make a lump sum donation that you might use for stuff like this. We’ve been contemplating adding some “Github issue crowdfunding functionality” to our transpect repos, for issues that don’t have priority for us to fix but where users can collectively fund fixes. We’ve been (very briefly) looking at https://freedomsponsors.org/. Maybe this is interesting for BaseX, too. I suggest that we discuss it privately or open another issue for this and solicit user feedback on the mailing list. |
Thanks for the link to freedom sponsors, could be interesting indeed! |
We apparently ran into the limit with BaseX 9.4.5. How can we check if the limit has been reached?
|
@kgaleazzi It seems we need to add some more limit checks. How do you insert your data? |
We use 'insert node as last' as we rely on the node order with our application. Please advise if there are better ways to insert data and avoid the out of bounds exceptions. |
In the long term, insertions should be rejected by BaseX if the database are exceeded. One manual way to avoid out of bounds exceptions is to check the current number of nodes before inserting data via XQuery: declare variable $LIMIT := 2000000000;
let $size := db:property($db, 'size')
return if ($size > $LIMIT) then (
error((), 'Database node limit is reached.')
) else (
insert ...
) |
That helps, thank you. So the limit accounts for an estimate of the maximum size of the data being inserted (2^31 - $LIMIT). |
in 7.8, it’s still 256
The text was updated successfully, but these errors were encountered: