I am about to start collecting large amounts of numeric data in real-time (for those interested, the bid/ask/last or 'tape' for various stocks and futures).  The data will later be retrieved for analysis and simulation.  That's not hard at all, but I would like to do it efficiently and that brings up a lot of questions.  I don't need the best solution (and there are probably many 'bests' depending on the metric, anyway).  I would just like a solution that a computer scientist would approve of.  (Or not laugh at?)
(1) Optimize for disk space, I/O speed, or memory?
For simulation, the overall speed is important.  We want the I/O (really, I) speed of the data just faster than the computational engine, so we are not I/O limited.  
(2) Store text, or something else (binary numeric)?
(3) Given a set of choices from (1)-(2), are there any standout language/library combinations to do the job-- Java, Python, C++, or something else?
I would classify this code as "write and forget", so more points for efficiency over clarity/compactness of code.  I would very, very much like to stick with Python for the simulation code (because the sims do change a lot and need to be clear).  So bonus points for good Pythonic solutions.
Edit: this is for a Linux system (Ubuntu)
Thanks
Optimizing for disk space and IO speed is the same thing - these days, CPUs are so fast compared to IO that it's often overall faster to compress data before storing it (you may actually want to do that). I don't really see memory playing a big role (though you should probably use a reasonably-sized buffer to ensure you're doing sequential writes).
Binary is more compact (and thus faster). Given the amount of data, I doubt whether being human-readable has any value. The only advantage of a text format would be that it's easier to figure out and correct if it gets corrupted or you lose the parsing code.
Collecting, storing, and retrieving large amounts of numeric data