Saya pikir Anda memiliki beberapa istilah yang tercampur di sini.
Semua data Anda masuk ke dalam satu database (alias skema). Dalam database Anda dapat memiliki tabel.
misalnya
table employee
id integer
name varchar
address varchar
country varchar
table office
id integer
employee_id integer
address varchar
Di dalam tabel Anda memiliki bidang (id, name, address)
alias kolom. Dan tabel memiliki satu atau lebih baris.
Contoh untuk karyawan tabel:
id name address country
----------------------------------------------------
1 John 1 Regent Street UK
2 James 24 Jump Street China
3 Darth Vader 1 Death Star Bestine, Tatooine
Begitu banyak untuk dasar-dasarnya.
Mengapa mempartisi
Sekarang misalkan kita memiliki banyak sekali orang (baris) di database kita.
Ingat ini database galaksi, jadi kita punya 100 miliar record.
Jika kita ingin menelusuri secepat ini bagus jika kita bisa melakukan ini secara paralel.
Jadi kita mempartisi tabel (katakanlah berdasarkan negara) dan kemudian kita dapat memiliki x server yang mencari di 1 negara masing-masing.
Mempartisi antar server disebut sharding
.
Atau kita dapat mempartisi mis. data historis menurut tahun, jadi kita tidak perlu menelusuri semua data hanya untuk mendapatkan terbaru berita. Kami hanya harus melalui partisi untuk tahun ini. Ini disebut partitioning
.
Apa perbedaan besar antara sharding
cukup partitioning
?
Berbagi
Dalam sharding
Anda mengantisipasi bahwa semua data Anda relevan, dan kemungkinannya sama untuk ditanyakan. (mis. Google dapat mengharapkan semua data mereka ditanyakan; pengarsipan sebagian data mereka tidak berguna untuk mereka).
Dalam hal ini Anda ingin banyak mesin melihat data Anda secara paralel, di mana setiap mesin melakukan bagian dari work.
Jadi, Anda memberi setiap mesin partisi (pecahan) data yang berbeda dan memberikan kueri yang sama kepada semua mesin. Ketika hasilnya keluar, Anda UNION
mereka semua bersama-sama dan output hasilnya.
Pembagian dasar
Dalam partitioning
dasar sebagian data Anda hot
dan sebagian adalah not
. Kasus tipikal adalah data historis, data baru adalah hot
, data lama hampir tidak tersentuh.
Untuk kasus penggunaan ini, tidak ada gunanya meletakkan data lama di server terpisah. Mesin-mesin itu hanya akan menunggu dan menunggu dan tidak melakukan apa-apa karena tidak ada yang peduli dengan data lama kecuali beberapa auditor yang memeriksanya setahun sekali.
Jadi, Anda mempartisi data itu berdasarkan tahun dan server akan secara otomatis mengarsipkan partisi lama sehingga Anda kueri hanya akan melihat data satu (mungkin 2) tahun dan jauh lebih cepat.
Apakah saya perlu mempartisi?
Anda hanya melakukan partisi jika Anda memiliki banyak data, karena itu mempersulit pengaturan Anda.
Kecuali Anda memiliki lebih dari satu juta record, Anda tidak perlu mempertimbangkan untuk mempartisi.
Jika Anda memiliki lebih dari 100 juta catatan, Anda pasti harus mempertimbangkannya.
Untuk info lebih lanjut lihat:http://dev.mysql.com/ doc/refman/5.1/en/partitioning.html
dan:http://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html
Lihat juga wiki:http://en.wikipedia.org/wiki /Partition_%28database%29
Ini hanya heuristik pribadi saya YMMV.