Bagaimana Twitter Menyimpan 250 Tweet per Hari menggunakan MYSQL

Kali ini saya akan memposting tentang data store Twitter yang biasa kita gunakan :

Jeremy Cole, Pemimpin / Arsitek Database Tim DBA  di Twitter, melakukan pembicaraan yang bagus pada konferensi O'Reilly MySQL: Besar dan Kecil data di Twitter, di mana topik itu membahas tentang prespektif data Twitter.

Salah satu cerita menarik dia memberitahu transisi dari cara lama Twitter menyimpan tweet menggunakan sharding temporal, untuk penyebaran yang lebih menyebar lalu menggunakan penyimpanan baru tweet yang disebut T-bird, yang dibangun di atas Gizzard, dengan menggunakan MySQL .


Penyimpanan tweet asli Twitter :
  • Tweet temporal sharded adalah ide arsitektur yang baik. Sharding Temporal berarti tweets dari rentang tanggal yang sama disimpan bersama-sama pada pecahan yang sama. 
  • Masalahnya adalah tweet diisi dengan mesin satu, maka kedua, dan kemudian ketiga. Anda akhirnya mengisi mesin satu demi satu. 
  • Ini adalah pendekatan yang cukup umum dan salah satu yang memiliki beberapa kelemahan yang nyata: 
    1. Load balancing : Sebagian besar mesin lama tidak mendapatkan lalu lintas karena orang-orang tertarik pada apa yang terjadi sekarang, terutama dengan Twitter. 
    2. Mahal : Mereka mengisi satu mesin, dengan semua budak replikasi, dan setiap tiga minggu dilakukan pengaturan ulang dan itu mahal.
    3. Logistik rumit : Membangun cluster baru di setiap tiga minggu adalah kerepotan tersendiri untuk tim DBA.
Penyimpanan tweet baru Twitter :
  • Ketika Anda menge-tweet itu disimpan dalam sistem internal yang disebut T-bird, yang dibangun di atas Gizzard. Indeks sekunder disimpan dalam sistem terpisah yang disebut T-flock, yang juga berbasis Gizzard.
  • ID unik untuk setiap tweet yang dihasilkan Snowflake, yang dapat lebih merata di sebuah cluster. FlockDB digunakan untuk ID dan ID untuk pemetaan, menyimpan hubungan antara ID (menggunakan Gizzard).
  • Gizzard adalah framework untuk penyebaran data Twitter yang dibangun menggunakan MYSQL(InnoDB)
    • InnoDB dipilih karena tidak merusak data.Gizzard hanya datastore. Data dimasukkan dan Anda akan mendapatkannya kembali keluar.
    • Untuk mendapatkan kinerja yang lebih tinggi pada node individu banyak fitur seperti log biner dan replikasi dimatikan. Gizzard menangani sharding, replikasi N menangani data, dan penjadwalan kerja.  
    • Gizzard digunakan sebagai sebuah blok bangunan untuk sistem penyimpanan lainnya di Twitter.
  • Gizzard mengimplementasikan penyimpanan tweet yang tidak sempurna dalam arti load balancing, tetapi memungkinkan:
    • Tumbuh perlahan-lahan dari waktu ke waktu tanpa harus khawatir ketika mesin akan mengisi atau ketika mereka harus membuat pemotongan yang sulit pada waktu yang tepat.
    • DBAs bisa tenang. Mereka tidak harus membuat keputusan seperti biasa dan mengurangi biaya yang tidak efisien. 
  • MySQL sebagian besar bekerja cukup baik ketika digunakan dan bahwa itu layak digunakan. Twitter menghargai stabilitas fitur sehingga mereka tetap dengan rilisan yang lebih tua.
  • MySQL tidak bekerja untuk ID generasi dan penyimpanan grafik. 
  • MySQL digunakan untuk dataset yang lebih kecil <1.5TB, yang merupakan ukuran array RAID mereka, dan sebagai penyimpanan dukungan untuk dataset yang lebih besar.
  • Tipikal database server config: HP DL380, 72GB RAM, 24 disk RAID10. Keseimbangan yang baik antara memori dan disk.

Post a Comment