fantasy book

Download Report

Transcript fantasy book

Alternative
databases
CMSC 461
Michael Wilson
The power of relational
databases
 It’s
often useful to have relational
database power in unusual situations


Useful to organize data in a relational way
Quick to query
 How
do we do this?
Local DBMS?
 Running
a server locally would be far too
costly for the use cases where such things
would be useful

These are meant for much more serious
applications
 There
are some much more
straightforward libraries and tools we can
use
SQLite
 SQLite
is one of the more common filebased databases
 Fully featured DBMS


Can query, create tables, create indexes,
create triggers
Primary keys, autoincrement
SQLite memory footprint
 All
features enabled, ~500 KB memory
space

Can be reduced to as small as 4 KB given
the right configuration
 Speed
vs. memory footprint
SQLite and your favorite
applications
 Firefox



Cookies.sqlite
Content-prefs.sqlite
Downloads.sqlite
 Chrome
SQLite and mobile devices
 Android


Built in!
There’s some Java froofiness in front of it,
but it works well!
 iOS


Depending on what you need: basically
uses the SQLite C library
This library is not exactly easy to use
Downsides to SQLite
databases?
 Really
more meant for C and C-like
environments


C, C++, Objective C
Built into Android for some reason
 We
may want to have similar functionality
in a JVM language (Java, Groovy, Jython,
Clojure, etc.)
Java DBMSes
 H2


is a Java DBMS
H2 is capable of making in-memory or diskbacked tables
Overall roughly the same concepts
 Another

Java DBMS
Very feature rich
H2, HSQLDB, and Hibernate
 H2/HSQLDB
Hibernate



are both compatible with
Hibernate comes built in with H2 and
HSQLDB “dialects”
Can still use the same hibernate calls
This allows you to use H2/HSQLDB as sort of
a “prototyping” solution before you
connect to a more production ready
database
XML
 XML
is a very convenient storage
mechanism



Can define arbitrary schemas
Can define data types
Can store a good amount of data in an
XML document
 With
a sufficiently large enough data set,
querying could be useful
XPath
 Query

language
NOT based on SQL
 Querying
based on nodes present in an
XML document
Simple XML document
<books>
<book genre="fantasy">
<title>Storm of Swords</title>
<author>George R. R. Martin</author>
</book>
<book genre="sci-fi">
<title>A Deepness in the Sky</title>
<author occupation="computer-scientist">Vernor
Vinge</author>
</book>
</books>
Simple XPath query
 /books/book/title

Will return all titles
 /books/book/author

Will return all authors
 /books//author

Returns all authors that are descendants
under the “books” element
 //title

Select all titles
More XML queriess
 /books/book[2]

Select the second book in the list
 /books/book[1]

Select the first book in the list
 /books/book[@genre='fantasy']

Select all books where genre attribute =
fantasy
XPath functions
 count(//books)

Counts the number of books
 concat(//book[@genre='fantasy']/title,
//book[@genre='sci-fi']/title)

', ',
Outputs: Storm of Swords, A Deepness in the
Sky
XPath applications
 You
can apply XPath to any XML file,
which makes it really handy for extracting
the data
XPath online tester
 http://www.freeformatter.com/xpath-
tester.html

Can test XPath query expressions here