----- Original Message ----- From: "Simon Slavin" <slav...@bigfraud.org> To: <phi...@blastbay.com>; "General Discussion of SQLite Database" <sqlite-users@sqlite.org>
Sent: Thursday, June 06, 2013 12:15 AM
Subject: Re: [sqlite] Serialize an in-memory database



On 5 Jun 2013, at 8:38pm, Philip Bennefall <phi...@blastbay.com> wrote:

On 5 Jun 2013, at 8:32pm, Petite Abeille <petite.abei...@gmail.com> wrote:

write to tmpfs… read the file into byte[]… do what you meant to do… to reload… write byte[] do tmpfs… open db… and be merry… or something along these lines...

I don't want it in a file, however. I want it in a memory block.

That's why you read from tmpfs (or any other file stored in any other file system) into byte[]. Once your data is in byte[] you will have entire SQLite database in one run of memory.

You can't usefully store a memory database of SQLite because SQLite's data in memory isn't all in one big run of memory. The data is stored in various little chunks, some here, some there. If you tried to read the data directly out of those chunks you would have to read lots of little chunks, not one big run of continuous memory. And you'd be storing lots of pointers to various locations in memory. When you 'restore' the data back into memory you're not going to be allocated the same locations in memory so those pointers won't mean anything any more.

A database stored in a file, however, has pointers to locations in that file instead of pointers to locations in memory. If you save and restore the whole file in one big run, those pointers will become valid again: the same bits of data will be at the same offsets of the file.

Doesn't have to be tmpfs. You can use any file system that SQLite thinks is file storage rather than memory storage.

Simon.

Hi Simon,

Since I don't believe that Windows for example has tmpfs (seems to be a Unix thing), would the idea of constructing a vfs that just reads and writes a huge memory block be doable? If so, how difficult of a task do you estimate that this might be? I want to reuse as much of the existing vfs code as possible (e.g. I don't want to reimplement randomness, date etc). Could you possibly give me some pointers? I read the chapter about the virtual file systems, but it seems incomplete.

Kind regards,

Philip Bennefall
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to