I am a Java developer. I want to know what is the best way to store huge data into mysql using Java.
Huge: two hundred thousand talk messages every second.
An index is not needed here
Should I store the messages into the database as soon as the user creates them? Will it be too slow?
1 billion writes / day is about 12k / second. Assuming each message is about 16 bytes, that’s about 200k / sec. If you don’t care about reading, you can easily write this to disk at this rate, maybe one message per line. Your read access pattern is probably going to dictate what you end up needing to do here.
If you use MySQL, I’d suggest combining multiple messages per row, if possible. Partitioning the table would be helpful to keep the working set in memory, and you’ll want to commit a number of records per transaction, maybe 1000 rows. You’ll need to do some testing and tuning, and this page will be helpful:
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.htmlYou should probably also look at Cassandra which is written with heavy write workloads in mind.