Proyek ini memiliki nama pendek Protobuf-Delphi dan porting beberapa bagian dari kode proyek dari buffer protokol untuk Java. Pada saat itu, proyek ini menurut saya lebih jelas dan lebih bersih dibandingkan dengan implementasi lainnya.
Proyek untuk parsing dan pembuatan kode sedang dibangun. Sekarang kami telah pindah ke fase pembuatan kode. Anda dapat mengirim sampel kode dan visi Anda. Harapan pasti akan dipertimbangkan dan disambut.
Ketika Google mengunggah kode sumber untuk buffer protokol ke open source. Saya kagum pada ide -ide di baliknya, kekompakan data dan efisiensinya, kecepatan pemrosesannya, terutama dibandingkan dengan XML.
Versi pertama port di Delphi disiapkan pada tahun 2007, selama proyek pada pekerjaan utama saya. Saya harus mentransfer tabel besar dengan data ke aplikasi klien. Operasi ini lambat. Tugasnya adalah entah bagaimana meningkatkan kecepatan kerja. dan mengurangi jumlah lalu lintas yang dikirim dari server ke aplikasi klien melalui HTTPS. Sebelum itu, XML digunakan untuk tujuan yang sama.
Setelah transisi ke format data buffer protokol selesai, menjadi mungkin untuk mengunduh lebih banyak data dan secara signifikan meningkatkan produktivitas.
Cukup cepat, port di Delphi dibuat, terbatas dalam fungsionalitas. Abstraksi protokol tingkat rendah diimplementasikan, tidak ada generasi kode. Tetapi ini tidak mencegah kami menggunakannya dalam layanan web, dan fungsionalitas yang diterapkan sudah cukup untuk proyek tersebut.
Mengetahui struktur pesan, dimungkinkan untuk mengirim dan menerima data tentang protokol ini. Setahun kemudian saya menempatkan kode di situs https://sourceForge.net/p/protobuf-delphi.
Mungkin banyak orang akan merasa menarik untuk digunakan untuk penyimpanan baik pada disk maupun di dalam program.
Jika Anda tahu fitur penyimpanan fisik data dalam buffer protokol, Anda dapat melakukan hal -hal menarik.
Di awal catatan ada bidang yang menyimpan panjang catatan. Anda juga dapat selalu melewatkan bidang catatan yang tidak perlu. Bergantung pada jenis mereka memiliki panjang tetap atau jika bidang memiliki panjang variabel, maka awal bidang akan berisi panjang bidang ini. Jadi mudah untuk memisahkan catatan dari satu sama lain, dan kadang -kadang dapat berguna untuk melewatkan bagian catatan yang tidak perlu.
Data di pohon dapat diindeks oleh struktur b-tree atau hashmap, misalnya. Ini memungkinkan Anda untuk mendapatkan akses acak cepat ke catatan yang Anda cari dengan kunci.
Proses membaca dapat diterapkan pada satu catatan yang dikemas.
Data dalam format ini memiliki kompresi yang signifikan. Dibandingkan dengan penyimpanan objek yang biasa dalam memori:
Dalam proyek kami, kami telah menyimpan banyak konsumsi memori. dibandingkan dengan menyimpan benda normal. Dalam beberapa kasus, keuntungannya adalah 20 kali atau lebih dan tanpa kehilangan kecepatan akses data. Ini sangat berguna jika data tidak dapat diubah.
Format serupa digunakan untuk penyimpanan data fisik dalam DBM industri.
Yaitu, di tangan yang terampil, format data ini adalah hal yang kuat.
Ngomong -ngomong, tentu saja, tidak semua dalam format ini adalah penemuan Google. Sebaliknya, sedikit yang telah ditemukan oleh Google.
Kaki IMHO tumbuh dari format ASN.1. Ketika saya melihat dokumentasi format ini saya kagum betapa mereka cocok.
Kelebihan paling penting dari Google dalam mempromosikan format data ini dan dalam menerbitkan kode sumber di open source.
Asn.1 adalah yang serupa dalam tujuan dan digunakan untuk buffer protokol dan barang bekas Apache, yang juga merupakan bahasa deskripsi antarmuka untuk serialisasi data lintas platform. Seperti bahasa-bahasa itu, ia memiliki skema (di ASN.1, yang disebut "modul"), dan satu set pengkodean, biasanya pengkodean nilai-panjang. Namun, ASN.1, didefinisikan pada tahun 1984, mendahului mereka selama bertahun -tahun. Ini juga mencakup berbagai jenis data dasar yang lebih luas, beberapa di antaranya sudah usang, dan memiliki lebih banyak opsi untuk ekstensibilitas. Satu pesan ASN.1 dapat mencakup data dari beberapa modul yang ditentukan dalam beberapa standar, bahkan standar yang ditentukan tahun terpisah.