Strategi penyimpanan data
Keadaan teknologi komputer saat ini adalah memungkinkan untuk menyimpan jumlah data yang hampir tak ada habisnya. Sebagai konsekuensi dari ini, kebutuhan untuk menghapus data untuk membebaskan ruang untuk yang baru hampir dihilangkan.
Ini memberikan banyak keuntungan, mulai dari hubungan alami data dan objek yang mereka gambarkan, karena ada hukum konservasi di alam, hal yang sama harus berlaku untuk data yang mencerminkan objek alami, dan berakhir dengan pengecualian masalah teknologi murni yang terkait dengan integritas data dalam waktu.
Dengan demikian, strategi penyimpanan harus didasarkan pada paradigma penghapusan "lunak", yang terdiri dari menandai data sebagai telah kehilangan relevansinya dari titik waktu tertentu.
Hal yang persis sama berlaku untuk perubahan data. Pembaruan seharusnya tidak menimpa data sebelumnya, tetapi menunjukkan bahwa, mulai dari titik waktu tertentu, data memiliki arti yang berbeda.
Jika Anda benar-benar ingin mengosongkan ruang dengan membersihkan penyimpanan data yang tidak digunakan, Anda dapat menerapkan strategi mengompresi penyimpanan dengan membuat salinannya dengan hanya menimpa data yang relevan di beberapa titik waktu di masa lalu.
Pertimbangan ini bukanlah hal baru, karena sudah diterapkan di gudang data besar seperti Hadoop.
Format penyimpanan data
Data yang mencerminkan entitas tertentu, sebagai suatu peraturan, adalah seperangkat atribut, komposisi yang mencerminkan karakteristik entitas yang diperlukan. Untuk kesederhanaan, kami menganggap bahwa kami berbicara tentang model relasional yang terdiri dari tupel.
Dengan demikian, data disimpan dalam bentuk tuple dari jenis tertentu, yang dari waktu ke waktu dapat berubah dan kehilangan relevansi.
Kami juga berarti bahwa penyimpanan data besar modern sering memiliki struktur nilai kunci dengan indeks utama pada kunci dan kemungkinan indeks opsional pada atribut lainnya.
Dengan pertimbangan ini, format penyimpanan data berikut diusulkan.
Saya ingin segera mencatat bahwa format ini tidak unik, tetapi terinspirasi oleh struktur penyimpanan data dalam objek 1C dengan nama "Daftar". Namun dalam pengembangan ini, diusulkan untuk membuat format universal dan menyimpan semua data di dalamnya.
Jadi, kami mengusulkan format untuk merekam data tentang entitas dan atributnya, berdasarkan konsep alur kerja berdasarkan definisi berikut:
- Operasi adalah perubahan atom dalam satu entitas data.
- Entitas terdiri dari atribut.
- Entitas memiliki tipe yang menentukan komposisi atributnya.
- Entitas dengan tipe yang sama disimpan dalam satu utas.
- Alur kerja - objek penyimpanan dari tabel jenis tempat operasi terkait dengan entitas dari jenis yang sama dan mengubah statusnya berada.
Dengan demikian, setiap operasi terdiri dari header operasi dan satu set atribut yang tergantung pada jenis entitas:
- OpID - pengidentifikasi unik operasi
- OpTS - cap waktu operasi
- OpType - jenis operasi
- OpClass - nama aliran
- OpUser - pengguna sistem yang mengeluarkan perintah
- OpDoc - dokumen operasi, mis. Dokumen yang membuatnya mungkin tidak diinstal
- OpComment - komentar operasi
- ID - pengidentifikasi entitas yang terkait dengan operasi
- Parameter - atribut operasi aliran tergantung
OpID dan ID dapat berupa apa saja, tetapi untuk saat ini, mungkin masuk akal untuk menggunakan UID.
OpTS kemungkinan besar harus bertipe timestamp, tetapi ditambah dengan indeks ordinal, jika beberapa operasi berada dalam periode waktu yang sama untuk memastikan urutan operasi yang unik.
OpType dapat dari jenis apa saja, misalnya, satu / beberapa karakter atau angka.
OpClass, OpUser dan OpComment dapat berupa string atau referensi ke direktori.
OpDoc menyediakan tautan ke dokumen, tetapi mungkin tidak ada. Ini adalah koneksi dengan level atas.
Operasi dibagi menjadi dasar dan layanan.
Operasi dasar
Operasi dasar 3 - tambah, perbarui, hapus:
- Operation “A” add - menyatakan instantiasi entitas baru dari jenis tertentu dan menetapkan serangkaian atribut.
- Operasi "U" pembaruan - mendeteksi perubahan dalam entitas jenis tertentu dan menetapkan nilai baru untuk set atribut tertentu.
- Operasi "D" penghapusan - menyatakan akhir dari realitas suatu entitas dari jenis tertentu.
Operasi A dan U dapat mengatur tidak semua atribut, tetapi hanya beberapa. Atribut-atribut yang tidak diatur oleh operasi ini mungkin memiliki nilai tipe NULL, atau nilai khusus lainnya, yang saat ini belum tersedia, tetapi akan menyenangkan untuk dibuat.
Akibatnya, nilai aktual dari atribut entitas pada titik waktu tertentu memerlukan perhitungan dengan mencari kembali, dengan memilih semua atribut yang berbeda dari nilai khusus (non-set).
Saat mengeluarkan operasi U, sistem harus memeriksa keberadaan operasi A untuk entitas ini dan, jika tidak ada, ubah jenis operasi menjadi A.
Operasi D menutup keberadaan entitas tertentu, dan ketika meminta nilai atribut untuk entitas ini dengan titik relevansi setelah operasi ini, nilai-nilai "yang tidak disetel" harus dikembalikan untuk semua atribut entitas ini. Saat mengeluarkan operasi D, sistem harus memeriksa keberadaan operasi A untuk entitas ini dan, jika tidak ada, menolak untuk menyimpan perintah D.
Sebagai fitur tambahan, struktur operasi ini memungkinkan Anda untuk mengatur penyimpanan entitas dengan ID yang sama dengan atribut yang berbeda pada titik waktu yang berbeda, tidak hanya berdasarkan atribut, tetapi juga pada keseluruhan entitas. Artinya, kita dapat memiliki beberapa blok AN * UD di mana entitas itu ada, dan antara D dan A itu tidak ada.
Operasi Layanan
Operasi layanan dapat banyak dan komposisi mereka dapat diisi ulang. Sebagai contoh, beberapa pertimbangan dapat dibuat:
- Operasi "N" adalah operasi yang tidak valid - operasi ini harus diabaikan oleh sistem. Anda dapat mengubah jenis operasi lainnya menjadi N untuk mengeluarkannya dari pekerjaan.
- Operasi "C" cache - operasi ini dapat dibuat dengan frekuensi tertentu dan menyimpan nilai atribut pada titik waktu tertentu untuk mengurangi biaya pencarian nilai atribut secara mendalam. Rincian parameter operasi dapat disimpan, misalnya, dalam komentar atau dalam kode operasi itu sendiri. Tentu saja, ketika menerapkan operasi dasar, operasi tipe C harus dihitung ulang atau diganti dengan N.
- Operasi "S" operasi grup - operasi ini dapat dibuat dengan frekuensi tertentu dan menyimpan nilai grup (misalnya, jumlah, rata-rata, dan sebagainya) atribut tipe numerik untuk periode tertentu. Rincian parameter operasi dapat disimpan, misalnya, dalam komentar atau dalam kode operasi itu sendiri. Tentu saja, ketika menerapkan operasi dasar, operasi tipe S harus dihitung ulang atau diganti dengan N.
- Operasi "G" atribut grup - operasi ini mungkin mirip dengan U, tetapi pada saat yang sama, perintah sistem tertentu akan mengeluarkan bukan satu nilai atribut, tetapi beberapa. Satu nilai atribut per operasi A / U, nilai yang tersisa - pada operasi G, yang terletak di antara A / U yang berdekatan.
Operasi layanan bersifat opsional, tetapi dapat memberikan layanan tambahan ke sistem penyimpanan dan meningkatkan kinerjanya. Komposisinya mungkin berbeda untuk sistem yang berbeda.