Bluestream just released the next version of their XStreamDB XML database server.
Perhaps the biggest part of the release isn’t even in the software – it’s in the licensing. It’s now about half the cost of what we paid, and it’s free for teaching. If you’re teaching XML, you can download it and just go. Student projects, etc… It’s all good.
There are also a bunch of great changes under the hood – scored search results, performance improvements, and other goodness.
I just “released” my first web application using XStreamDB today. The part that has to talk to XStreamDB took less than an hour to write, and was really quite simple to do.
The app is an interface to a database of 641 (and counting) teaching resources, to be used by faculty, grad students, students, etc. to find solutions to problems facing them in the practice of teaching and learning.
The app works really really well right now, and it’s completely unoptimized. Page queries returning hundreds of results are spit out in under half a second.
And it’s not optimized yet.
XQuery rocks for these kinds of solutions. It’s trivial to generate some really funky queries that would be downright scary in a RDBMS-XML solution like the JUD. This app isn’t using any of those (yet), but it will…
Here’s a link to the application – it’s just an early “alpha” build, with no real testing of the code yet, so it may be fragile (or it may be pretty solid – no guarantees yet).
I’ve been playing around with interim builds of XStreamDB 3.1 Beta, and it’s coming along REALLY nicely. It’s pretty cool when the president of the company is the guy running the beta program. Jim’s been awesome, feeding tips and pointers to the new stuff.
They just added/enhanced scoring of fulltext queries, so we can have results sorted by descending relevancy to a query. It’s freakin’ fast, too. I’ve added 3734 XML records from CAREO to XStreamDB (which is also running on the CAREO server – a G4/500 Desktop box, not fast by any stretch of the imagination – to keep the playing field level). Scored and sorted queries are returning results in well under a second. Great stuff.
I’ve even got it doing the processing to pull out just a few elements (title, description, etc…) rather than the whole LOM. It doesn’t seem to take any more time to just pull the whole LOM out, either, which is cool. I prefer the mini proxy results for now, because they’re easier to read in the results listing, but if the EOAdaptor needs the full record, that’s trivial.
The cool thing about the relevancy ranking is that it generates a float value from 0.000000 (completely irrelevant) to 1.000000 (completely relevant). Lots of room in there for subtle variation in relevancy.
Here’s the query I’m running right now:
FOR $record IN (Root("Apollo:Metadata"))
LET $score := SCORE $record USING [//* CONTAINS "earth image"]
RETURN
LET $title := $record//*:general/*:title/*:langstring/text()
LET $location := $record//*:technical/*:location/text()
LET $format := $record//*:technical/*:format/text()
LET $description := $record//*:general/*:description/*:langstring/text()
LET $docid := GetDocId( $record )
ORDER BY $score
RETURN
<result>
<docid>
{$docid}
</docid>
<score>
{$score}
</score>
<title>
{$title}
</title>
<description>
{$description}
</description>
<location>
{$location}
</location>
<format>
{$format}
</format>
</result>
Which returns stuff like this:
<result>
<docid>
1$Apollo:Metadata$1-3438-0
</docid>
<score>
0.95458674
</score>
<title>
The Earth and Moon Viewer
</title>
<description>
This website allows you access to earth and moon imagery from a
variety of viewpoints. You can view either a map of the Earth
showing the day and night regions at this moment, or view the
Earth from the Sun, the Moon, the night side of the Earth, above
any location on the planet specified by latitude, longitude and
altitude, from a satellite in Earth orbit, or above various
cities around the globe. Images can be generated based on a
full-colour image of the Earth by day and night, a topographical
map of the Earth, up-to-date weather satellite imagery, or a
composite image of cloud cover superimposed on a map of the
Earth, a colour composite which shows clouds, land and sea
temperatures, and ice, or the global distribution of water
vapour. Expert mode allows you additional control over the
generation of the image. You can compose a custom request with
frequently-used parameters and save it as a hotlist or bookmark
item in your browser.
</description>
<location>
http://www.fourmilab.ch/earthview/vplanet.html
</location>
<format>
text/html
</format>
</result>
Compare that to the smaller statement to just pull the whole LOM:
FOR $record IN (Root("Apollo:Metadata"))
LET $score := SCORE $record USING [//* CONTAINS "earth image"]
ORDER BY $score
RETURN $record
Which returns the whole freakin’ LOM document.
Just surfed to the XStreamDB website to check the docs, and noticed that it’s been revved to 3.0. There are installers for Windows, Linux, and MacOSX. I’m downloading now.
Looks like they’ve got some neat new features, but I’m not really sure what’s different from 2.2 (the version I tried before).
More info here.