These days I'm reading about different ways to manage a huge dataset in the MySQL database.
To be honest, at the moment, I'm confused. I read some concepts about the mentioned issue but I don't know how they are related to each other?
Please take a look at these:
- Partitioning - Which is a plugin
- Clustering - Named NDB I guess
- Sharding - Which is a concept I think and nothing implementable
The scenario is storing/maintaining/searching a huge set of data (assume a table with 5 billion rows) in MySQL. So we have to take apart the dataset, but how?
I've a few questions:
- How much overlap is between those three items above?
- In partitioning, all parts will be stored on the same machine (server)? Or they can be kept in different machines?
- How to detect is the data stored in which partition? (in order to look up the data accordingly)
- I know partitioning is for "tables", is clustering for "databases"?
- By sharding, we replicate the data in different servers or we would have different data in the different servers? Also, is it happen in the "table" layer or the "database" layer?
- How different parts (clusters/partitions) will see each other when it is needed? Like when we need to have a
joinclause on the whole table. Assuming the data is parted in different partitions/machines. - To use clustering, do I need to install a different edition (version) of MySQL? Isn't it supported by the normal edition?
Anyway, I've read about them over 3 days, and the main concept is still ambiguous for me.