Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1 Pedang pangkalan data sebenar - global - telah lama diketahui, tetapi masih sedikit yang tahu cara menggunakannya dengan berkesan atau tidak memiliki senjata super ini sama sekali.

Jika anda menggunakan global dalam menyelesaikan masalah yang mereka benar-benar mahir, anda boleh mencapai hasil yang cemerlang. Sama ada dalam produktiviti atau dalam memudahkan penyelesaian masalah (1, 2).

Global ialah cara khas untuk menyimpan dan memproses data, berbeza sama sekali daripada jadual dalam SQL. Mereka muncul pada tahun 1966 dalam bahasa itu M(UMPS) (perkembangan evolusi - Cache ObjectScript, selepas ini COS) dalam pangkalan data perubatan dan masih ada digunakan secara aktif, dan juga menembusi beberapa kawasan lain yang memerlukan kebolehpercayaan dan prestasi tinggi: kewangan, perdagangan, dsb.

Global dalam DBMS moden menyokong transaksi, pengelogan, replikasi dan pembahagian. Itu. ia boleh digunakan untuk membina sistem moden, boleh dipercayai, diedarkan dan pantas.

Global tidak menghadkan anda kepada model hubungan. Mereka memberi anda kebebasan untuk membangunkan struktur data yang dioptimumkan untuk tugasan tertentu. Untuk kebanyakan aplikasi, penggunaan pintar global benar-benar boleh menjadi senjata rahsia, memberikan prestasi yang hanya boleh diimpikan oleh pembangun aplikasi perhubungan.

Global sebagai cara untuk menyimpan data boleh digunakan dalam banyak bahasa pengaturcaraan moden, kedua-dua peringkat tinggi dan peringkat rendah. Oleh itu, dalam artikel ini saya akan memberi tumpuan khusus kepada global, dan bukan pada bahasa dari mana mereka datang.

2. Cara kerja global

Mari kita fahami cara global berfungsi dan apakah kekuatan mereka. Global boleh dilihat dari sudut pandangan yang berbeza. Dalam bahagian artikel ini kita akan melihat mereka sebagai pokok. Atau seperti gudang data hierarki.

Ringkasnya, global ialah tatasusunan yang berterusan. Tatasusunan yang disimpan secara automatik ke cakera.
Sukar untuk membayangkan sesuatu yang lebih mudah untuk menyimpan data. Dalam kod (dalam bahasa COS/M) ia berbeza daripada tatasusunan bersekutu biasa hanya dalam simbol ^ sebelum nama.

Untuk menyimpan data secara global, anda tidak perlu mempelajari bahasa pertanyaan SQL; arahan untuk bekerja dengannya adalah sangat mudah. Mereka boleh dipelajari dalam satu jam.

Mari kita mulakan dengan contoh yang paling mudah. Pokok satu aras dengan 2 dahan. Contoh-contoh ditulis dalam COS.

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



Apabila memasukkan maklumat ke dalam global (Tetapkan arahan), 3 perkara berlaku secara automatik:

  1. Menyimpan data ke cakera.
  2. Pengindeksan. Apa yang ada dalam kurungan ialah kunci (dalam kesusasteraan Inggeris - "subskrip"), dan di sebelah kanan sama dengan nilai ("nilai nod").
  3. Isih. Data diisih mengikut kekunci. Pada masa hadapan, apabila melintasi tatasusunan, elemen pertama akan menjadi "Sergey Smith", dan yang kedua "John Sidorov". Apabila menerima senarai pengguna dari global, pangkalan data tidak membuang masa menyusun. Selain itu, anda boleh meminta output senarai yang diisih, bermula dari mana-mana kunci, walaupun yang tidak wujud (output akan bermula dari kunci sebenar pertama, yang datang selepas yang tidak wujud).

Semua operasi ini berlaku dengan sangat pantas. Pada komputer rumah saya, saya mendapat nilai sehingga 750 sisipan/saat dalam satu proses. Pada pemproses berbilang teras nilai boleh dicapai berpuluh juta sisipan/saat

Sudah tentu, kelajuan sisipan itu sendiri tidak mengatakan banyak. Anda boleh, sebagai contoh, menulis maklumat dengan cepat ke dalam fail teks - seperti ini mengikut khabar angin Pemprosesan visa berfungsi. Tetapi dalam kes global, kami mendapat storan diindeks berstruktur sebagai hasilnya, yang boleh digunakan dengan mudah dan cepat pada masa hadapan.

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

  • Kekuatan terbesar global ialah kelajuan di mana nod baharu boleh dimasukkan.
  • Data dalam global sentiasa diindeks. Melintasi mereka, pada satu tahap dan jauh ke dalam pokok, sentiasa pantas.

Mari tambah beberapa lagi cawangan peringkat kedua dan ketiga kepada global.

Set ^a("+7926X", "city") = "Moscow"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

Adalah jelas bahawa pokok pelbagai peringkat boleh dibina berdasarkan global. Selain itu, akses kepada mana-mana nod adalah hampir serta-merta disebabkan oleh pengindeksan automatik semasa pemasukan. Dan di mana-mana peringkat pokok, semua cawangan diisih mengikut kunci.

Seperti yang anda lihat, maklumat boleh disimpan dalam kedua-dua kunci dan nilai. Jumlah panjang kunci (jumlah panjang semua indeks) boleh dicapai Bait 511, dan nilai 3.6 MB untuk Cache. Bilangan aras dalam pokok (bilangan dimensi) ialah 31.

Satu lagi perkara yang menarik. Anda boleh membina pokok tanpa menyatakan nilai nod peringkat atas.

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3

Bulatan kosong ialah nod yang tidak mempunyai nilai yang ditetapkan.

Untuk lebih memahami global, mari kita bandingkan dengan pokok lain: pokok taman dan pokok nama sistem fail.

Mari kita bandingkan pokok di global dengan struktur hierarki yang paling biasa kepada kita: dengan pokok biasa yang tumbuh di taman dan ladang, serta dengan sistem fail.

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

Seperti yang kita lihat pada pokok taman, daun dan buah hanya terdapat di hujung dahan.
Sistem fail - maklumat disimpan hanya di hujung cawangan, yang merupakan nama fail yang layak sepenuhnya.

Dan inilah struktur data global.

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1Perbezaan:

  1. Nod dalaman: maklumat dalam global boleh disimpan dalam setiap nod, bukan hanya di hujung cawangan.
  2. Nod luaran: Global mesti mempunyai nilai yang ditentukan di hujung dahan, manakala FS dan pokok taman tidak.



Dari segi nod dalaman, kita boleh mengatakan bahawa struktur global adalah superset struktur pokok nama dalam sistem fail dan pokok taman. Itu. lebih fleksibel.

Secara umum, global adalah pokok yang dipesan dengan keupayaan untuk menyimpan data dalam setiap nod.

Untuk lebih memahami kerja global, bayangkan apa yang akan berlaku jika pencipta sistem fail menggunakan pendekatan yang serupa dengan global untuk menyimpan maklumat?

  1. Memadamkan satu fail dalam direktori akan memadamkan direktori secara automatik, serta semua direktori di atasnya yang mengandungi hanya satu direktori yang baru dipadamkan.
  2. Tidak akan ada keperluan untuk direktori. Terdapat hanya fail dengan subfail dan fail tanpa subfail. Jika dibandingkan dengan pokok biasa, maka setiap dahan akan menjadi buah.

    Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

  3. Perkara seperti fail README.txt mungkin tidak diperlukan. Segala yang perlu diperkatakan tentang kandungan direktori boleh ditulis ke dalam fail direktori itu sendiri. Dalam ruang laluan, nama fail tidak dapat dibezakan daripada nama direktori, jadi anda boleh mendapatkannya dengan hanya fail.
  4. Kelajuan memadam direktori dengan subdirektori dan fail bersarang akan meningkat secara mendadak. Banyak kali di Habré terdapat artikel tentang berapa lama dan sukar untuk memadam berjuta-juta fail kecil (1, 2). Walau bagaimanapun, jika anda membuat sistem fail pseudo pada global, ia akan mengambil masa beberapa saat atau pecahan daripadanya. Apabila saya menguji pemadaman subpokok pada komputer rumah, ia mengalih keluar 1-96 juta nod daripada pokok dua peringkat pada HDD (bukan SSD) dalam 341 saat. Selain itu, kita bercakap tentang memadam sebahagian daripada pokok, dan bukan hanya keseluruhan fail dengan global.

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1
Mengalih keluar subpokok ialah satu lagi titik kukuh global. Anda tidak memerlukan pengulangan untuk ini. Ini berlaku dengan sangat pantas.

Dalam pokok kami ini boleh dilakukan dengan arahan Bunuh.

Kill ^a("+7926X")

Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 1

Untuk pemahaman yang lebih baik tentang tindakan yang tersedia untuk kita berbanding global, saya akan menyediakan jadual ringkas.

Perintah dan fungsi asas untuk bekerja dengan global dalam COS

Tetapkan
Menetapkan cawangan kepada nod (jika belum ditakrifkan) dan nilai nod

Bergabung
Menyalin subpokok

Bunuh
Mengalih keluar subpokok

ZKill
Memadam nilai nod tertentu. Subpokok yang muncul dari nod tidak disentuh

$Query
Merentasi pokok itu sepenuhnya, pergi jauh ke dalam pokok

$Order
Merentasi cawangan nod tertentu

$Data
Menyemak sama ada nod ditakrifkan

$Kenaikan
Menaikkan nilai nod secara atom. Untuk mengelak daripada melakukan membaca dan menulis, untuk ACID. Baru-baru ini telah disyorkan untuk menukar kepada $Sequence

Terima kasih atas perhatian anda, kami sedia menjawab soalan anda.

Penafian: Artikel ini dan ulasan saya mengenainya adalah pendapat saya dan tidak mempunyai kaitan dengan kedudukan rasmi InterSystems Corporation.

Tambahan Global adalah pedang harta karun untuk menyimpan data. pokok. Bahagian 2. Anda akan mengetahui jenis data yang boleh dipaparkan pada global dan tugas yang mereka berikan manfaat maksimum.

Sumber: www.habr.com

Tambah komen