There are real, standardized protocols [0] for this sort of thing, now. Early in my career, when I worked at JPL/NASA, I did a bit of work to test these protocols on Linux in a simulated Network of spacecraft. Fun stuff!
What a coincidence, I'm working on the core flight system project right now, which includes an implementation of CCSDS File Delivery Protocol. You might be happy to know that project is still very much alive within NASA (you were probably already aware).
Haha. Great to hear that work still lives! I hope you’re not using the (horrible in retrospect) stuff I wrote 15 years ago that worked on 2.0-2.6 kernels. I remember porting the network kernel driver from 2.0-2.2 manual build system to implementing a (really basic) Makefile that worked with 2.0-2.6.0ish kernels (which were newer at the time). I knew Scott Burleigh was still innovating CCSDS and other protocols at JPL, and, IIRC the work I had done had also been delivered to Ames and ESA for test lab use. I had some other work to create protocol dissectors for Ethereal (before the name change to WireShark). WireShark now includes built in dissectors for CCSDS, CFDP and others.
The small parts of the Mars Rovers (MER) I worked on or worked with didn’t use SQLite. It was too early in SQLite’s history for it to be used on MER. MER also used VxWorks which probably didn’t have a lot in the way of POSIX support at the time. I remember other devs telling me the fun they had supporting 1553 bus on “such a new RTOS”.
Wikipedia say MSL used VxWorks as well.
I’d have to ask a buddy still doing Mission Ops Support at JPL but I’d think the answer is no SQLite on MER or MSL missions. The OSes were fairly custom, non-POSIX builds. The ESA folks might have tried though on their missions.
No worries. Been meaning to investigate VxWorks at some point, mostly from an interest in embedded devices (for specific wearables concepts). This will be another thing to add for that list. :)
As far as I know, it has flown on two government (civil space) missions. I'm not longer at the company so I don't know what else it has or will go into.
I don't know about rovers, but some smaller spacecraft (mainly satellites) use mysql, as well as postgres. Disclaimer: I'm not the right person to ask.
What does it use for time? The spec mentions time in a lot of places, but never defines it. There is even a field to communicate light-time but no mention of how to synchronize anything. I guess this runs on top of another protocol that solves it? Any idea what it is?
So, it’s been a while since I’ve dived in [0], but “time” as a dependency has been, what I would call, “engineered out of the system”. Instead, there’s concepts of (local) timers, Store-And-Forward Overlays, retries, communication opportunities and the overall realization that time is relative and synchronized time can be difficult at a protocol level when link-level distances are always changing (by miles to billions of miles at a time per communication opportunity).