Xaprb

Stay curious!

InnoDB is a NoSQL database

with 9 comments

As long as the whole world is chasing this meaningless “NoSQL” buzzword, we should recognize that InnoDB is usable as an embedded database without an SQL interface. Hence, it is as much of a NoSQL database as anything else labeled with that term. And I might add, it is fast, reliable, and extremely well-tested in the real world. How many NoSQL databases have protection against partial page writes, for example?

It so happens that you can slap an SQL front-end on it, if you want: MySQL.

Written by Xaprb

December 13th, 2009 at 12:08 pm

Posted in SQL

Tagged with ,

9 Responses to 'InnoDB is a NoSQL database'

Subscribe to comments with RSS

  1. So is ndb; the api for it is a little more formal there too.

    John Laur

    13 Dec 09 at 1:09 pm

  2. Since all storage engines implement the storage engine API, which is just a bunch of C functions, isn;t it true to say that all storage engines are usable as embedded databases without the use of SQL?

    Shlomi Noach

    13 Dec 09 at 2:51 pm

  3. [...] because SQL is just a query language, it is not a storage technology. This is well illustrated in “InnoDB is a NoSQL database”, which I will quote below: As long as the whole world is chasing this meaningless “NoSQL” [...]

  4. Is it though? Doesn’t it have at least parts of a SQL parser in the pars directory?

    In innobase/pars/pars0pars.c there is a note
    /* Historical note: Innobase executed its first SQL string (CREATE TABLE)
    on 1/27/1998 */

    Rob Wultsch

    13 Dec 09 at 4:55 pm

  5. And InnoDB is *already* owned by Oracle! There’s no suspense or uncertainty regarding its fate! :-)

    Bill Karwin

    13 Dec 09 at 5:37 pm

  6. Rob: yes, InnoDB has a stored procedure implementation, which it uses for a lot of internal tasks such as maintaining foreign keys, among other things. But you don’t get access to that.

    Shlomi: I doubt it’s as easy to use most of the other storage engines as embedded databases, but I’m actually the wrong person to say that.

    John: yes, I overlooked NDB.

    Xaprb

    13 Dec 09 at 9:11 pm

  7. Hi!

    I don’t know if you are aware of this, but we have an example inside of the libmemcached distribution where we use Embedded Innodb to backend a Memcached server. Protocol-wise it is Memcached, but the backend is Innodb. The Memcached protocol has a defined range search in it. I was hoping someone would go to the effort of hooking it up.

    Cheers,
    -Brian

    Brian Aker

    14 Dec 09 at 4:47 am

  8. I’ve had a play with Embedded InnoDB. It does seem a bit immature and there aren’t a lot of features to recommend it over MySQL + InnoDB.

    In particular, schema maintenance is a pain, there is a project to create some tools but otherwise it’s entirely up to the application.

    Of course unlike (say) sqlite, only one application at once may open an InnoDB database, so the application(s) need to ensure that.

    Also unlike sqlite, a single app may only open one innodb database (at once, possibly ever).

    Mark Robson

    14 Dec 09 at 6:49 am

  9. Brian, I wasn’t aware of that. But I am aware that memcached is a more capable database than the way people commonly use it. This is part of why I built protocol support into mk-query-digest. Mark, I wonder how many people are using Embedded InnoDB, and for what?

    Xaprb

    14 Dec 09 at 9:44 am

Leave a Reply