On 19 Nov 2010, at 7:04am, Yang wrote:

> when I create a db on a file system, I guess a query process

Wait ... are you talking here about creating a new database file or querying 
one what already exists ?

> has to go
> through 2 levels of seeks ?
> first sqlite finds the B-tree node that stores the index to the file
> offset of my desired record, then sqlite uses that offset to make
> syscall seek(offset),
> then Kernel consults the FS implementation to find from its  OWN
> B-tree (for example in ext3 fs )  the block location of that offset.

Assuming that you're using a FS that uses B-trees, nodes, and indices (many 
don't), that's a fair summary of what happens.  But SQLite runs fine on many 
embedded systems that use linked lists instead of B-trees, or don't use nodes, 
or have databases stored in non-writable sequential memory.

> innodb allows creating a db on a raw disk partition, can we do the
> same on  sqlite?

No.  You need a file system of some kind.  Or, at least, your operating system 
needs to be able to address your storage using file-system calls, not 
storage-structure calls.

> I tried directly creating a db on ramdisk, failed:
> 
> javasqlite-20100727# sqlite3 /dev/ram0

You didn't tell it what to call the database, just where you wanted it.  I 
think you want something like

# sqlite3 /dev/ram0/myDatabase.sqlite

There's no reason this shouldn't work if your drivers and your version of *n*x 
/fully/ support the use of /deb/ram0 for file storage, including support for 
locking calls.  Works fine under Mac OS X, by the way.

But SQLite does provide its own way of creating a database in memory.  See

http://www.sqlite.org/inmemorydb.html

So you'd use something like

# sqlite3 :memory:

Of course, that database will be visible only to the process that creates it.  
Which means that if you use the command-line tool to create it it will 
effectively disappear as you quit the command-line tool.

If you're using Linux or a Unix that supports it, you can also look into the 
shared memory filesystem 'tmpfs'.  I haven't tried it, but this should also 
support SQLite without any problems.

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

Reply via email to