James Kimble wrote: > >> I'm in the process of architecting the software for an embedded Linux system >> >>> that functions as a remote and local user interface to a control system. >>> There >>> will be a lot of analog (fast) data arriving via SPI bus and I'm thinking of >>> using SQLite to store this data in a well organized and easy to access >>> manner. >>> >>> My main concern is performance. Has anyone had any similar application >>> experience they could comment on? I want to be able to insert data arriving >>> on the SPI bus and then query the data to update a GUI at a very high rate >>> (less than 250Ms). This is not real time so 250Ms is desirable but does not >>> have to be guaranteed. >>> >>> Any thoughts or experience would be appreciated... >>> >>> >> >> >> > > >>> You arn't clear about your update rate, or the amount of data you need >>> to extract for each GUI update. You also haven't said where you will be >>> storing the database, in RAM, on a hard disk, or in flash. >>> > > >>> If the data is only updated every 250 ms, i.e. at a 4 Hz rate, it is not >>> really very fast, and SQLite should have no problem keeping up even on >>> an embedded processor. >>> > > >>> If the GUI has to display only the last value every 250 ms, then you >>> should have no trouble. If you are trying to redraw a scrolling graph of >>> the last 400 samples every 250 ms you may have issues to be concerned about. >>> > > >>> Dennis Cote >>> > > > Thanks for your reply. > > The one thing that scares me is that this will be residing on a flash > based file system > and not a disk. I'm hoping that's not too much of a performance hit. > Right now I've > got it running out of RAM and that may be fine 99% of the time but I > will need to > write it back to flash at some set interval (minutes) to prevent loss of > data in the case > of a power failure. Not sure how to mix modes like that yet. > > The biggest thing on the GUI will be some power level meters. Very slow > moving > and mostly fixed data. Possibly a spectrum diagram but again, slow > moving. This > is a control system for commercial TV/Radio transmitter systems. > > I didn't give many details because I haven't implemented anything yet. I > am still > considering my options. I thing SQLite will work I've just got to test > it. I'm in the > process of setting up a test database and tables that I can work on in a > way similar to > what I will need. That's probably the best way to be sure in any case. > If it doesn't > perform fast enough I will work on optimizations. I've dealt with some > big DB's in the > past (Oracle, Informix, Ingres) but never one quite like this and never > on an embedded > system. Very new to me. > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > One thing I can highly recommend on embedded systems, especially flash based ones, is turn pragma synchronous to off. Having sqlite write every record modification to the flash, is a stunningly expensive process, even when it's all encapsulated in a large transaction. Let linux handle the synchronisation and write caching for you. A lot less robust, but, the benefits more than outweighed the cost. If you need guaranteed write to disk, then perform the synch yourself.
Cost vs benefit and all that guff. -- Bill King, Software Engineer Trolltech, Brisbane Technology Park 26 Brandl St, Eight Mile Plains, QLD, Australia, 4113 Tel + 61 7 3219 9906 (x137) Fax + 61 7 3219 9938 mobile: 0423 532 733 _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users