Hi Peter, To be sure, could you confirm that you have received my mails?
Best regards, Christian On Sat, Feb 22, 2025 at 12:41 PM Christian Grün <christian.gr...@gmail.com> wrote: > Hi Peter, > > > This leads me to believe that a lot of the time (>7 seconds) may be > spent opening the database each time a POST is done? Is there a way to > tweak the HTTP server to “remember” the connection with the current > database for a little while? This may be against the REST principles, of > course. The database is guaranteed to be read-only in my case. > > One option is to open the database with the initial basexhttp call. It > will be kept open until the server is shut down: > > basexhttp -c"open name-of-db" > > Best, > Christian > > > On Sat, Feb 15, 2025 at 8:53 PM Peter Villadsen via BaseX-Talk < > basex-talk@mailman.uni-konstanz.de> wrote: > >> All, >> >> >> >> I have been using BaseX for a while, connecting to the TCP endpoint. I >> know the performance I typically get, and it is impressive! However, now I >> wanted to use the HTTP endpoint, and it seems the performance is at least 2 >> orders of magnitude worse! >> >> >> >> Here is the query that I am POSTing to >> http://localhost:8984/rest/RainFnd_6.0.10.0 >> >> >> >> <query xmlns=http://basex.org/rest> >> >> <text>/Class[@Package='ApplicationPlatform']/@Name</text> >> >> </query> >> >> >> >> This simple query will generate around 1500 results from the 13GB >> database (RainFnd_6.0.10.0 <http://localhost:8984/rest/RainFnd_6.0.10.0>). >> It takes just over 7 seconds to do this. If I do this in the BaseX GUI that >> is self contained, it takes around 20ms. >> >> >> >> However, it seems that the time spent executing the query against the >> database is negligible. Please consider this query: >> >> >> >> <query xmlns=http://basex.org/rest> >> >> <text>1 + 2</text> >> >> </query> >> >> >> >> In which there there is obviously no database access. It takes almost the >> same amount of time as the query that accesses the database. 7 seconds to >> calculate 1 + 2 is too long. >> >> >> >> If I post the 1 + 2 query to the endpoint without specifying the database >> on the URL: >> >> >> >> http://localhost:8984/rest >> >> >> >> it takes around 7 milliseconds, close to what I expected, certainly >> within expectations for the time spent sending the query over the wire and >> serializing etc. >> >> >> >> This leads me to believe that a lot of the time (>7 seconds) may be spent >> opening the database each time a POST is done? Is there a way to tweak the >> HTTP server to “remember” the connection with the current database for a >> little while? This may be against the REST principles, of course. The >> database is guaranteed to be read-only in my case. >> >> >> >> The problem is that this makes the HTTP server inappropriate for >> interactive applications. I can still use the TCP server, where I get the >> results I need, but using the HTTP would be simpler, and have less overhead >> in terms of code needed to communicate with the server. >> >> >> >> Please let me know if there is a way to accomplish acceptable performance >> with the HTTP server. >> >> >> >> >> >> Best Regards >> >> >> >> Peter Villadsen >> >> Principal Technical Program Manager >> >> Microsoft Business Applications Group >> >> >> >> >> >