Basis data dalam memori bukanlah konsep baru. Tapi itu terlalu erat terkait dengan kata-kata "cache" dan "tidak persisten." Hari ini saya akan menjelaskan mengapa hal ini belum tentu terjadi. Solusi dalam memori memiliki bidang aplikasi yang jauh lebih luas dan tingkat keandalan yang jauh lebih tinggi daripada yang terlihat.
Dalam artikel ini, saya membahas prinsip arsitektur solusi dalam memori. Bagaimana Anda dapat mengambil yang terbaik dari dunia dalam memori - kinerja luar biasa - dan tidak mengorbankan keunggulan sistem relasional berbasis disk. Pertama-tama, keandalan - bagaimana Anda bisa yakin bahwa data Anda aman.
Kisah ini memadatkan 10 tahun pengalaman dengan solusi dalam memori menjadi satu teks. Ambang masuknya serendah mungkin. Anda tidak perlu memiliki pengalaman bertahun-tahun untuk mendapatkan manfaat dari membaca, pemahaman dasar tentang TI sudah cukup.
- pengantar
- Sejarah perkembangan
- Tarantool hari ini
- Cara kerja kernel
- lua
- Multitasking serat dan kooperatif
- Fungsionalitas basis data
- Perbandingan dengan sistem lain
- Skenario penggunaan
- Kesimpulan dan kesimpulan
- Tautan
pengantar
Nama saya Vladimir Perepelitsa, tetapi saya lebih dikenal sebagai Mons Anderson. Saya seorang arsitek dan manajer produk untuk Tarantool. Saya telah menggunakannya selama bertahun-tahun dalam produksi, misalnya ketika membangun penyimpanan objek yang sesuai dengan S3 [1]. Karena itu, saya cukup mengenalnya di dalam dan di luar.
Untuk memahami teknologi, akan sangat membantu jika kita terjun ke dalam sejarah. Kami akan mencari tahu seperti apa Tarantool, apa yang dilaluinya, seperti apa hari ini, membandingkannya dengan solusi lain, mempertimbangkan fungsinya, bagaimana ia dapat bekerja melalui jaringan, apa yang ada di ekosistem sekitar.
Contoh ini akan memungkinkan kami untuk memahami manfaat apa yang dapat Anda peroleh dari solusi dalam memori. Anda akan belajar bagaimana menghindari mengorbankan keandalan, skala, dan kegunaan.
PS: ini transkrip pelajaran terbuka, diadaptasi untuk artikel. Jika Anda lebih suka mendengarkan YouTube 2x, tautan ke video menunggu Anda di akhir artikel [2].
Sejarah perkembangan
Tarantool dibuat oleh tim pengembangan internal Mail.ru Group pada tahun 2008, awalnya tanpa ruang lingkup untuk open source. Namun, setelah dua tahun beroperasi di dalam perusahaan, kami menyadari bahwa produk tersebut cukup matang untuk dibagikan ke publik. Ini adalah bagaimana sejarah open source Tarantool dimulai.
commit 9b8dd7032d05e53ffcbde78d68ed3bd47f1d8081 Author: Yuriy Vostrikov <vostrikov@corp.mail.ru> Date: Thu Aug 12 11:39:14 2010 +0400
Tapi kenapa diciptakan?
Tarantool awalnya dikembangkan untuk jaringan sosial My World. Saat itu, kami sudah menjadi perusahaan yang cukup besar. Cluster MySQL yang menyimpan profil, sesi, dan pengguna sangat mahal. Sedemikian rupa sehingga selain produktivitas, kami memikirkan uang. Dari sinilah lahir cerita โCara menyimpan sejuta dolar di databaseโ [3].
Artinya, Tarantool dibuat untuk menghemat uang pada cluster MySQL yang besar. Itu mengalami evolusi bertahap: itu hanya cache, lalu cache yang persisten , dan kemudian database yang lengkap .
Setelah mendapatkan reputasi internal dalam satu proyek, itu mulai menyebar ke yang lain: surat, spanduk iklan, cloud. Sebagai hasil dari penggunaan yang meluas di dalam perusahaan, proyek-proyek baru sering diluncurkan di Tarantool secara default.
Jika Anda mengikuti sejarah perkembangan Tarantool, Anda dapat melihat gambar berikut. Tarantool awalnya adalah cache dalam memori. Pada awalnya, hampir tidak ada bedanya dengan memcached.
Untuk mengatasi masalah cache dingin, Tarantool menjadi gigih. Replikasi lebih lanjut ditambahkan ke dalamnya. Ketika kami memiliki cache persisten dengan replikasi, ini sudah menjadi basis data nilai kunci. Indeks ditambahkan ke basis data nilai kunci ini, yaitu, kami dapat menggunakan Tarantool hampir seperti basis data relasional.
Dan kemudian kami menambahkan fungsi Lua. Awalnya, ini adalah prosedur tersimpan untuk bekerja dengan data. Fungsi Lua kemudian berkembang menjadi runtime kooperatif dan server aplikasi.
Lambat laun, semua itu ditumbuhi berbagai fitur tambahan, kemampuan, dan storage engine lainnya. Hari ini sudah menjadi database multi-paradigma. Lebih lanjut tentang ini.
Tarantool hari ini
Saat ini Tarantool adalah platform komputasi skema data dalam memori yang fleksibel.
Tarantool dapat dan harus digunakan untuk membuat aplikasi beban tinggi. Artinya, untuk menerapkan solusi kompleks untuk menyimpan dan memproses data, dan tidak hanya membuat cache. Selain itu, ini bukan hanya database, tetapi platform tempat Anda dapat membuat sesuatu.
Tarantool hadir dalam dua versi. Tersedia untuk sebagian besar orang, yang paling mudah dipahami dan terkenal adalah versi open source. Tarantool dikembangkan di bawah lisensi BSD Sederhana, di-host sepenuhnya di GitHub oleh organisasi Tarantool.
Di sana kami memiliki Tarantool itu sendiri, intinya, konektor ke sistem eksternal, topologi seperti sharding atau antrian; modul, perpustakaan, baik dari tim pengembang maupun dari komunitas. Modul komunitas mungkin diselenggarakan oleh kami.
Selain versi open source, Tarantool juga memiliki cabang perusahaan. Pertama-tama, ini adalah dukungan, produk perusahaan, pelatihan, pengembangan kustom, dan konsultasi. Hari ini kita akan berbicara tentang fungsionalitas utama yang tersedia di semua versi produk.
Tarantool saat ini adalah komponen dasar untuk aplikasi database-centric.
Bagaimana cara kerja kernelnya?
Gagasan utama di mana Tarantool lahir dan dikembangkan adalah bahwa data ada dalam memori. Data ini selalu diakses dari satu thread. Perubahan yang kita buat ditulis secara linear di Write Ahead Log.
Indeks dibangun di atas data dalam memori. Artinya, kami memiliki akses data yang terindeks dan dapat diprediksi. Cuplikan data ini disimpan secara berkala. Apa yang ditulis ke disk dapat direplikasi.
Tarantool memiliki satu utas transaksional utama. Kami menyebutnya utas TX. Di dalam utas ini, ada Arena. Ini adalah area memori yang dialokasikan oleh Tarantool untuk menyimpan data. Data disimpan di Tarantool dalam spasi.
Ruang adalah satu set, kumpulan unit penyimpanan - taples. Tapl seperti baris dalam sebuah tabel. Indeks dibangun di atas data ini. Arena dan pengalokasi khusus yang bekerja di dalam Arena bertanggung jawab untuk menyimpan dan mengatur semua ini.
- Tapl = string
- Spasi = meja
Juga di dalam utas TX ada loop acara, loop acara. Serat bekerja dalam loop acara. Ini adalah primitif kooperatif dari mana kita dapat berkomunikasi dengan ruang. Kita bisa membaca data dari sana, kita bisa membuat data. Juga, serat dapat berinteraksi dengan loop acara dan satu sama lain secara langsung atau menggunakan saluran primitif khusus.
Untuk bekerja dengan pengguna dari luar, ada utas terpisah - iproto. iproto menerima permintaan dari jaringan, memproses protokol Tarantool, meneruskan permintaan ke TX, dan menjalankan permintaan pengguna dalam serat terpisah.
Ketika terjadi perubahan data, utas terpisah yang disebut WAL (dari log tulis di depan) menulis file yang disebut xlog.
Ketika Tarantool mengumpulkan xlog dalam jumlah besar, akan sulit untuk memulainya dengan cepat. Oleh karena itu, untuk mempercepat peluncuran, ada penyimpanan snapshot secara berkala. Untuk menyimpan snapshot, ada serat yang disebut daemon snapshot. Itu membaca konten yang konsisten dari seluruh Arena dan menulisnya ke disk dalam file snapshot.
Tidak mungkin menulis langsung ke disk dari Tarantool karena multitasking kooperatif. Anda tidak dapat memblokir, dan disk adalah operasi pemblokiran. Oleh karena itu, bekerja dengan disk dilakukan melalui kumpulan utas terpisah dari pustaka fio.
Tarantool memiliki replikasi dan cukup sederhana untuk diatur. Jika ada satu replika lagi, maka untuk mengirimkan data ke sana, utas lain dinaikkan - relai. Tugasnya adalah membaca xlog dan mengirimkannya ke replika. Sebuah applier serat diluncurkan pada replika, yang menerima perubahan dari host jarak jauh dan menerapkannya ke Arena.
Dan perubahan ini persis sama seperti jika dibuat secara lokal, melalui WAL, mereka ditulis ke xlog. Mengetahui cara kerjanya, Anda dapat memahami dan memprediksi perilaku bagian Tarantool ini atau itu dan memahami apa yang harus dilakukan dengannya.
Apa yang terjadi ketika Anda memulai ulang? Bayangkan saja Tarantool sudah berjalan beberapa saat, ada snapshot, ada xlog. Jika Anda memulai ulang:
- Tarantool menemukan snapshot terbaru dan mulai membacanya.
- Membaca dan melihat xlog apa yang ada setelah snapshot ini. Membaca mereka.
- Setelah selesai membaca snapshot dan xlog, kami memiliki snapshot dari data yang ada pada saat restart.
- Kemudian Tarantool melengkapi indeks. Pada saat membaca snapshot, hanya indeks utama yang dibangun.
- Ketika semua data telah dimasukkan ke dalam memori, kita dapat membangun indeks sekunder.
- Tarantool meluncurkan aplikasi.
Struktur kernel dalam enam baris:
- Data ada di memori
- Mengakses data dari satu utas
- Perubahan ditulis ke Write Ahead Log
- Indeks dibangun di atas data
- Snapshot akan disimpan secara berkala
- WAL direplikasi.
lua
Aplikasi Tarantool diimplementasikan di LuaJIT. Di sini Anda dapat berhenti dan berbicara tentang mengapa LuaJIT.
Pertama, Lua adalah bahasa scripting yang dapat diakses yang awalnya dibuat bukan untuk programmer, tetapi untuk insinyur. Yaitu, untuk orang-orang yang terdidik secara teknis, tetapi tidak terlalu mendalami spesifikasi pemrograman.
Lua telah dibuat sesederhana mungkin. Oleh karena itu, ternyata dimungkinkan untuk membuat kompiler JIT yang memungkinkan Anda membawa kinerja bahasa skrip hampir ke kinerja C. Anda dapat menemukan contoh ketika program Lua kecil yang dikompilasi dalam LuaJIT praktis mengejar C serupa program dalam kinerja [4].
Lua membuatnya cukup mudah untuk menulis hal-hal yang efisien. Secara umum, ada ide seputar Tarantool - untuk bekerja berdampingan dengan data. Dengan menjalankan program di namespace yang sama dan proses di mana data berada, kita tidak dapat membuang waktu untuk berjalan di sekitar jaringan.
Kami mengakses memori secara langsung, jadi membaca hampir nol dan latensi yang dapat diprediksi. Semua ini bisa dicapai hanya dengan fungsi Lua, tapi di dalam Tarantool ada event loop plus fiber. Lua terintegrasi dengan mereka.
Total:
- Lua: bahasa scripting sederhana untuk para insinyur
- Kompilasi JIT yang sangat efisien
- Bekerja bersama data
- Bukan prosedur, tetapi runtime kooperatif
Multitasking serat dan kooperatif
Fiber adalah benang eksekusi. Ini mirip dengan utas, tetapi lebih ringan dan mengimplementasikan primitif multitasking kooperatif. Ini memaksakan properti berikut pada kami.
- Lebih dari satu tugas tidak dieksekusi pada satu waktu.
- Sistem tidak memiliki penjadwal. Setiap serat harus secara sukarela menyerah.
Tidak adanya penjadwal dan menjalankan tugas secara bersamaan mengurangi konsumsi overhead parasit dan meningkatkan kinerja. Semua ini bersama-sama memungkinkan untuk membangun server aplikasi. Anda dapat keluar dari Tarantool ke dunia luar.
Tarantool memiliki perpustakaan untuk bekerja dengan jaringan dan data. Anda dapat menggunakannya sebagai bahasa pemrograman yang akrab, mirip dengan Python, Perl, JavaScript, dan menyelesaikan tugas-tugas yang tidak terkait dengan database sama sekali.
Di dalam Tarantool ada fungsi, di dalam server aplikasi itu sendiri, untuk bekerja dengan database. Selama pengembangan Tarantool, platform telah berkembang di atas server aplikasi ini. Yang kami maksud berikut ini dalam istilah platform.
Platformnya pada dasarnya adalah database dalam memori dan server aplikasi tertanam. Atau sebaliknya, server aplikasi plus database. Tapi Tarantool juga dilengkapi dengan alat untuk replikasi, untuk sharding; alat untuk mengelompokkan dan mengelola klaster ini, dan menghubungkan ke sistem eksternal.
Total:
- Fiber adalah utas eksekusi ringan yang mengimplementasikan multitasking kooperatif
- Tugas berikutnya dilakukan setelah yang sekarang mengumumkan transfer kendali
- Server aplikasi
- Loop acara dengan serat
- Pekerjaan soket non-blocking
- Koleksi Jaringan dan Pustaka Data
- Fungsi untuk bekerja dengan database
- Platform Tarantool
- Basis data dalam memori
- Server aplikasi bawaan
- Alat pengelompokan
- Konektor ke sistem eksternal
Fungsionalitas basis data
Kami menggunakan kaset untuk menyimpan data. Mereka adalah tupel. Ini adalah array dengan data yang tidak diketik. Tuples atau taples digabungkan menjadi spasi. Ruang pada dasarnya hanyalah kumpulan kaset. Analog dari dunia SQL adalah sebuah tabel.
Tarantool memiliki dua mesin penyimpanan. Anda dapat menentukan ruang yang berbeda untuk penyimpanan di memori atau di disk. Untuk bekerja dengan data, indeks utama diperlukan. Jika kita hanya membuat indeks utama, Tarantool akan terlihat seperti nilai kunci.
Tapi kita bisa memiliki banyak indeks. Indeks bisa komposit. Mereka dapat terdiri dari beberapa bidang. Kita dapat memilih dengan kecocokan parsial dengan index. Kita dapat mengerjakan indeks, yaitu, iterasi berurutan di atas iterator.
Indeks datang dalam berbagai jenis. Secara default, Tarantool menggunakan pohon B + *. Dan kemudian ada hash, bitmap, rtree, indeks fungsional dan indeks di jalur JSON. Semua keragaman ini memungkinkan kita untuk menggunakan Tarantool dengan cukup sukses di mana database relasional cocok.
Tarantool juga memiliki mekanisme transaksi ACID. Perangkat akses data berulir tunggal memberi kita kemampuan untuk mencapai tingkat isolasi serial. Ketika kita mengacu pada arena, kita dapat membaca darinya atau kita dapat menulis ke dalamnya, yaitu. melakukan modifikasi data. Segala sesuatu yang terjadi dieksekusi secara berurutan dan eksklusif dalam satu utas.
Dua serat tidak dapat berjalan secara paralel. Tetapi jika kita berbicara tentang transaksi interaktif, maka ada mesin MVCC yang terpisah. Ini memungkinkan Anda untuk melakukan transaksi serial yang sudah interaktif, tetapi Anda juga harus menangani potensi konflik transaksi.
Selain mesin akses Lua, Tarantool memiliki SQL. Kami telah sering menggunakan Tarantool sebagai penyimpanan relasional. Kami menyimpulkan bahwa kami akan merancang penyimpanan sesuai dengan prinsip relasional.
Di mana tabel digunakan dalam SQL, kami memiliki spasi. Artinya, setiap baris diwakili oleh satu ketukan. Kami mendefinisikan skema untuk ruang kami. Menjadi jelas bahwa Anda dapat menggunakan mesin SQL apa pun dan hanya memetakan primitif dan menjalankan SQL di atas Tarantool.
Di Tarantool, kita bisa memanggil SQL dari Lua. Kita dapat menggunakan SQL secara langsung, atau dari SQL kita dapat memanggil apa yang didefinisikan dalam Lua.
SQL adalah mekanisme pelengkap, Anda dapat menggunakannya, Anda tidak perlu menggunakannya, tetapi ini adalah tambahan yang cukup bagus yang memperluas kemungkinan menggunakan Tarantool.
Total:
Penyimpanan data primitif
- tapl (tupel, string)
- ruang (meja) - koleksi kaset
- mesin:
- memtx - seluruh jumlah data masuk ke dalam memori dan salinan yang andal di disk
- vynil - disimpan di disk, jumlah data dapat melebihi jumlah memori
- indeks utama
Indeks
- mungkin banyak
- gabungan
- jenis indeks
- pohon (Bโบ *)
- hash
- peta bit
- pohon
- fungsional
- jalur json
Transaksi
- AC ID
- Serializable (Tanpa hasil)
- Interaktif (MVCC)
SQL & Lua
- TABEL: spasi
- BARIS: tupel
- Skema: format spasi
- Lua -> SQL: box.execute
Perbandingan dengan sistem lain
Untuk mendapatkan pemahaman yang baik tentang tempat Tarantool di dunia DBMS, kami akan membandingkannya dengan sistem lain. Anda dapat membandingkan banyak hal dengan seseorang, tetapi saya tertarik pada empat kelompok utama:
- Platform dalam memori
- DBMS relasional
- Solusi nilai kunci
- Sistem Berorientasi Dokumen
Platform dalam memori
GridGain, GigaSpaces, Redis Enterprise, Hazelcast, Tarantool.
Bagaimana mereka mirip? Mesin dalam memori, database dalam memori, ditambah beberapa runtime aplikasi. Mereka memungkinkan Anda untuk secara fleksibel membangun sistem cluster untuk jumlah data yang berbeda.
Secara khusus, ini adalah penggunaan peran Data Grid. Platform ini ditujukan untuk memecahkan masalah bisnis. Setiap kisi, setiap platform dalam memori dibangun di atas arsitekturnya sendiri, sementara mereka termasuk dalam kelas yang sama. Juga, platform yang berbeda memiliki seperangkat alat yang berbeda, karena masing-masing ditujukan untuk segmen yang berbeda.
Tarantool adalah tujuan umum, platform tanpa segmen. Ini memberikan peluang yang lebih luas dan berbagai skenario bisnis untuk diselesaikan.
Database relasional
Sekarang mari kita bandingkan mesin database dalam memori Tarantool dengan MySQL dan PostgreSQL. Ini memungkinkan Anda untuk memposisikan mesin itu sendiri, terpisah dari server aplikasi dan terlebih lagi dari platform.
Tarantool mirip dengan database relasional karena menyimpan data dalam bentuk tabel (dalam pita dan spasi). Indeks dibangun di atas data, sama seperti di database relasional. Di Tarantool, Anda dapat menentukan skema, bahkan ada SQL, yang dengannya Anda dapat bekerja dengan data.
Tetapi skema SQL yang membedakan Tarantool dari database relasional klasik. Karena meskipun SQL ada, Anda tidak harus menggunakannya. Ini bukan alat utama untuk berinteraksi dengan database.
Skema Tarantool tidak ketat. Anda hanya dapat menentukannya untuk sebagian data Anda.
Dalam database relasional konvensional, tabel dalam memori bukanlah penyimpanan persisten yang digunakan untuk beberapa jenis operasi cepat. Di Tarantool, seluruh jumlah data masuk ke dalam memori, disajikan dari memori, dan pada saat yang sama dapat diandalkan dan persisten .
Ini sangat penting sehingga saya akan menulis lagi - Tarantool menyimpan seluruh kumpulan data dalam memori dan pada saat yang sama data disimpan dengan aman ke disk .
DB nilai kunci
Kelas berikutnya untuk dibandingkan adalah nilai kunci - memcached, Redis, Aerospike. Bagaimana Tarantool mirip dengan mereka? Ini dapat bekerja dalam mode nilai kunci, Anda dapat menggunakan tepat satu indeks. Dalam hal ini, Tarantool berperilaku seperti penyimpanan nilai kunci klasik.
Misalnya, Tarantool dapat digunakan sebagai pengganti drop-in untuk memcached. Ada modul yang mengimplementasikan protokol yang sesuai, dan dalam hal ini kami sepenuhnya meniru memcached.
Tarantool mirip dalam arsitektur dalam memorinya dengan Redis, hanya saja memiliki gaya deskripsi data yang berbeda. Di mana pun Redis berlaku untuk skenario arsitektur, Anda dapat menggunakan Tarantool. Pertempuran yokozun ini dijelaskan dalam artikel di tautan [5].
Perbedaan antara Tarantool dan basis data nilai kunci justru pada keberadaan indeks sekunder, transaksi, iterator, dan hal-hal lain yang melekat dalam basis data relasional.
Database berorientasi dokumen
Sebagai kategori keempat, saya ingin mengutip database berbasis dokumen. Contoh paling mencolok di sini adalah MongoDB. Tarantool juga dapat menyimpan dokumen. Oleh karena itu, kita dapat mengatakan bahwa Tarantool memiliki caranya sendiri, termasuk basis berorientasi dokumen.
Format penyimpanan internal Tarantool sendiri adalah msgpack. Ini adalah JSON biner. Ini hampir setara dengan format yang digunakan oleh Mongo. Ini adalah BSON. Ini memiliki kekompakan yang sama. Ini mencerminkan jenis data yang sama. Dengan melakukan itu, Anda dapat mengindeks konten dokumen-dokumen ini. Baca lebih lanjut tentang msgpack di artikel terbaru [6].
Juga disertakan dengan Tarantool adalah perpustakaan Skema Avro. Hal ini memungkinkan dokumen dari struktur biasa untuk diurai menjadi baris dan baris ini sudah disimpan langsung dalam database.
Tapi Tarantool awalnya tidak dipahami sebagai database berorientasi dokumen. Ini adalah bonus baginya dan kemampuan untuk menyimpan beberapa bagian data sebagai dokumen. Oleh karena itu, ia memiliki mekanisme pengindeksan yang sedikit lebih lemah dibandingkan dengan Mongo yang sama.
Putaran bonus: pangkalan kolom
Pertanyaan seperti itu terkadang muncul. Jawabannya di sini sederhana - Tarantool bukan database kolom (siapa sangka). Skrip yang bagus untuk basis kolom tidak berfungsi dengan Tarantool. Dapat dicatat bahwa mereka saling melengkapi dengan sangat baik.
Saya pikir banyak dari Anda yang akrab dengan Click House. Ini adalah solusi analitis yang bagus. Ini adalah dasar kolom. Apalagi ClickHouse tidak menyukai transaksi mikro. Jika Anda mengirim banyak transaksi kecil ke sana, itu tidak akan mencapai throughput maksimumnya. Anda perlu mengirim data dalam batch ke sana.
Pada saat yang sama, transaksi mikro dapat dan harus dikirim ke Tarantool. Dia mampu mengumpulkan mereka. Karena memiliki berbagai konektor, ia dapat mengakumulasikan transaksi ini dan mengirimkannya ke penyimpanan tipe ClickHouse sebagai kumpulan. Yin dan yang.
Total:
| vs | ||
|---|---|---|
| In-memory |
|
|
|
|
|
| Key-value |
|
|
| - |
|
|
|
|
Kami akan mulai dengan contoh kapan Tarantool tidak boleh digunakan. Skenario utamanya adalah analytics alias OLAP, termasuk menggunakan SQL.
Alasan untuk ini cukup sederhana. Tarantool pada dasarnya adalah aplikasi berulir tunggal. Tidak memiliki kunci akses data. Tetapi jika satu utas menjalankan SQL yang panjang, tidak ada orang lain yang dapat menjalankannya saat sedang berjalan.
Oleh karena itu, database analitik biasanya menggunakan mode akses data multi-utas. Kemudian Anda dapat menipu sesuatu di utas terpisah. Dalam kasus Tarantool, satu utas lebih cepat daripada banyak solusi lainnya. Tapi itu satu, dan tidak ada cara untuk bekerja dengan data dari beberapa utas.
Tetapi jika Anda ingin membangun beberapa analitik yang telah dihitung sebelumnya, misalnya, Anda tahu bahwa Anda akan memerlukan data kumulatif seperti ini. Anda memiliki aliran data, dan Anda dapat segera mengetahui bahwa Anda memerlukan semacam penghitung. Analitik yang telah ditentukan sebelumnya ini dibangun dengan baik di Tarantool.
Kapan harus menggunakan?
Skenario utama berasal dari warisan sejarahnya, dari apa ia diciptakan. Banyak transaksi kecil.
Ini bisa berupa sesi, profil pengguna, dan segala sesuatu yang berkembang darinya selama ini. Misalnya, Tarantool sering digunakan sebagai penyimpanan vektor di samping Machine Learning, karena nyaman untuk menyimpannya di sana. Ini dapat digunakan sebagai penghitung dengan muatan tinggi yang melewati semua lalu lintas melalui sistem mereka sendiri, anti-brute force.
Subtotal:
Contoh penggunaan yang buruk
- Analisis (OLAP)
- termasuk menggunakan SQL
Contoh penggunaan yang baik
- Transaksi Mikro Frekuensi Tinggi (OLTP)
- Profil pengguna
- Penghitung dan tanda
- Proksi cache data
- Pialang antrian
Kesimpulan dan kesimpulan
Tarantool gigih dan memiliki kemampuan untuk berjalan ke banyak sistem lain. Oleh karena itu, digunakan sebagai proxy cache untuk sistem lama. Untuk berat, kompleks, baik dalam menulis proxy yang benar dan menulis di belakang proxy.
Selain itu, arsitektur Tarantool, keberadaan serat di dalamnya dan kemampuan untuk menulis aplikasi yang kompleks menjadikannya alat yang baik untuk menulis antrian. Saya tahu 6 implementasi antrian, beberapa di antaranya ada di GitHub, beberapa di antaranya ada di repositori pribadi atau di suatu tempat di proyek.
Alasan utama untuk ini adalah jaminan latensi rendah untuk akses. Ketika kami berada di dalam Tarantool dan datang untuk beberapa data, kami memberikannya dari memori. Kami memiliki akses data yang cepat dan kompetitif. Kemudian Anda dapat membuat mashup yang berjalan tepat di sebelah data.
Coba Tarantool di situs web kami dan ajukan pertanyaan ke obrolan Telegram .
Tautan
- Arsitektur S3: 3 tahun evolusi untuk Mail.ru Cloud Storage
- Video - Tarantool sebagai dasar untuk aplikasi beban tinggi
- Tarantool: cara menghemat satu juta dolar pada database pada proyek dengan beban tinggi
- https://github.com/luafun/luafun
- Tarantool vs Redis: apa yang dapat dilakukan oleh teknologi dalam memori
- Fitur MessagePack Tingkat Lanjut