We're using linux.

Data loss is not critical. If anything is lost due to unexpected power
downs, we can rebuild it and add it to the database at a later stage.

Apart from using :memory: another idea is to use linux ramfs and
periodically copy this to flash.

The other thing I'm assuming is to compile SQLITE with
-DSQLITE_TEMP_STORE=3 to keep sqlite temporary files in memory.

-  
-Paul


On Thu, 2008-10-02 at 13:36 -0600, J Glassy wrote:
> Paul,
>  here are a few odd thoughts on this:
> --Flash memory devices in general are subject to 'finite' numbers of
> I/O events, mostly affecting writes; more recent flash memory devices
> ease this constraint a bit, if only by supporting more I/O events
> before they hit their useful life-limit.  I think you're asking the
> right questions though; can you model the likely no. of writes over
> the intended life-cycle based on anticipated activity etc?
> --Some of how you implement this depends on what embedded OS you're
> working with (is it a RTOS, a Linux hybrid, WinCE, Win Mobiles 5 or
> 6.x etc?. I'd want to make sure I could implement the software that
> manages the Sqlite as a daemon or background-service, for better
> flexibility.
> --Your idea of posting transactions from near-real-time event traffic
> to an in-memory definition (":memory:") may be good, certainly bears
> some study. It complicates how you might implement periodic handoffs
> from the ":memory:" instance to the non-volatile 'disk' instance of
> sqlite though, particularily when a serious exception (say, something
> really severe like a power-outage) might need to be trapped almost
> instantaneously. This is coincidentally (precisely) when you may need
> assurance that the most-recent data is safely stored on the
> non-volatile side of the embedded system.  This in turn raises the
> question of your assessment on how much data can you afford to lose?
> (if any).... a metric that governs how often you schedule your
> synchronization-transactions; I'm guessing you'll use a delta-oriented
> sync logic to avoid messy redundancy.
> --To try to address your question on how intimately you might need to
> know the insides of sqlite3, you can get away with knowing less in
> proportion to how closely your implementation strategy resembles a
> standard use-case (writing to 'disk'); the more multi-tier mechanism
> you decide to support, the more you'll benefit from knowing sqlite
> better on the inside (IMHO); at least you can study the code anytime
> etc.
> --Overall, always writing to the flash memory as a default strategy
> would be safer, simpler.. presuming you can afford the amount of time
> the I/O takes (some SD devices are notoriously slow at write-side I/O,
> so watch that).  I'm assuming that each transaction is fairly small
> and atomic.  I would prototype any of this using Python's binding to
> sqlite, to give yourself a good feel for the dynamics.
> --My own experience in this sort of implementation is using SyBASE
> Anywhere's mobile database,(along with MobiLink for device-to-host
> synchronization) on WinCE,Win Mobile 5 (not yet v6). I've used sqlite
> primarily on several non-embedded application area, but am looking
> hard myself at just the questions you are addressing.
> 
> I don't if any of this helped.. but good luck.
> 
> joe
> 
> On Thu, Oct 2, 2008 at 2:20 AM, Paul McMahon <[EMAIL PROTECTED]>
> wrote:
>         What's the consensus on using sqlite with flash based storage
>         such as sd
>         cards on embedded devices?
>         
>         Has anyone done this successfully yet with a real product
>         (that needs to
>         last a few years in the field)?
>         
>         How does one solve the problem of minimizing writes to flash?
>         I've done
>         a search through the user lists but there seems to be no
>         generally
>         agreed way to do this. Does it require intimate knowledge of
>         the inner
>         workings of sqlite?
>         
>         One scheme I thought of was to use an in memory sqlite
>         database in
>         conjunction with a flash based one.
>         
>         New entries go in the in memory database (using ":memory:" on
>         filename).
>         Searches search both the in memory and flash based database.
>         Every now
>         and then the in memory database entries get written to the
>         flash based
>         database.
>         
>         Any ideas would be greatly appreciated!
>         
>         
>         
>         _______________________________________________
>         sqlite-users mailing list
>         sqlite-users@sqlite.org
>         http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 
> 
> 

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

Reply via email to