pangkalan data Rusia postgres pro. Perbezaan antara Postgres Pro Standard dan PostgreSQL. Ekosistem PostgreSQL domestik

Postgres Pro ialah DBMS Rusia yang dibangunkan oleh Postgres Professional berdasarkan DBMS PostgreSQL yang diedarkan secara bebas. Postgres Pro disertakan dalam daftar perisian Rusia (lihat https://reestr.minsvyaz.ru/reestr/65273/)

Dengan cara ini, pelanggan boleh mengakses manfaat fungsi dan prestasi yang memberi manfaat kepada mereka tanpa perlu menunggu keluaran PostgreSQL baharu (yang boleh mengambil masa sehingga setahun). Sebagai pengarang, kami memberikan sokongan untuk semua perkembangan kami. Sebagai wakil komuniti antarabangsa pembangun PostgreSQL, kami juga menyediakan sokongan komersial untuk DBMS PostgreSQL yang diedarkan secara bebas.

Perbandingan versi PostgreSQL

DBMSPostgreSQL
Perusahaan
PostgreSQL
Standard
PostgreSQL
DBMS komersial yang dibangunkan oleh Postgres Professional untuk aplikasi kritikal misi dan beban tinggi.DBMS sumber terbuka Rusia yang dibangunkan oleh Postgres Professional berdasarkan DBMS PostgreSQL yang diedarkan secara bebasDBMS yang diedarkan secara bebas yang dibangunkan oleh masyarakat antarabangsa.
Daftar Bersatu Perisian Rusia
Kaunter transaksi 64-bit
Sandaran tambahan pada tahap blok
Sijil FSTEC SVT 5, NDV 4
Transaksi Autonomi
Meja pembahagian
Pemampatan data
Multimaster
sokongan 1C
Meja mudah alih
Petunjuk penjadual


Versi PostgreSQL

Nombor versi PostgreSQL dibina daripada nombor versi PostgreSQL dengan penambahan satu digit yang menunjukkan nombor keluaran semasa. Apabila versi kecil PostgreSQL baharu dikeluarkan (ini biasanya berlaku apabila tampung yang berkaitan dengan keselamatan dan pembetulan ralat serius muncul), penomboran PostgreSQL ditetapkan semula kepada satu. Contohnya, apabila PostgreSQL 9.5.1 dikeluarkan, PostgresPro 9.5.1.1 dikeluarkan, kemudian sebelum PostgreSQL 9.5.2 dikeluarkan, Postgres Pro 9.5.1.2, 9.5.1.3, dll. mungkin dikeluarkan. Apabila PostgreSQL 9.5.2 dikeluarkan, Postgres Pro akan dikemas kini kepada versi 9.5.2.1, dsb.

Serentak dengan pelepasan kod sumber Postgres Pro kami menerbitkan perhimpunan kami sebagai pakej di bawah pelbagai platform. Ini ialah sistem pengendalian berikut dan versinya:

  1. Linux
    • CentOS 6/7
    • Debian 7/8
    • Ubuntu 12.04/14.04/16.04/16.10,
    • Oracle Linux,
    • pelayan Rosa Enterprise Linux,
    • Pelayan Kobalt ROSA SX,
    • Pelayan Kobalt ROSA DX,
    • ROSA Marathon LTS 2012,
    • Alt Linux Centaur 8,
    • Alt Linux SPT 6,
    • Alt Linux SPT 7,
    • SUSE Linux Enterprise Pelayan
  2. Microsoft ® Windows ® 2012 atau 2016.

Pangkalan Data postgres Pro 9.5.*.* serasi dengan PostgreSQL 9.5.* Apabila berhijrah dari 9.5 dump/restore tidak diperlukan. Apabila berpindah dari lebih versi terdahulu PostgreSQL memerlukan penggunaan dump/restore atau pg_upgrade.

Versi semasa Postgres Pro Standard ialah 11.2.1. Tarikh keluaran - 28 Mac 2019. .

Perbezaan antara Postgres Pro Standard dan PostgreSQL

Berbanding dengan versi semasa PostgreSQL, Postgres Pro Standard pada masa ini termasuk perubahan berikut:

  1. Peningkatan prestasi pada sistem berbilang teras:
    • mengoptimumkan peruntukan jadual cincang dalam memori kongsi, menghapuskan pertikaian kunci untuk sejumlah besar proses.
    • Pengoptimuman Pemilik Sumber. Meningkatkan prestasi pertanyaan kompleks dan jadual pertanyaan dengan jumlah yang besar sekatan.
    • Pengoptimuman pengurus penimbal
    • Pengoptimuman LWLock untuk seni bina Power8
    • Pengoptimuman komit dua fasa
  2. Penambahbaikan carian teks penuh:
    • sokongan carian frasa
    • sokongan untuk kamus hunspell untuk bekerja dengan bentuk perkataan
    • beberapa kamus, termasuk Rusia dan Inggeris, disertakan dalam pengedaran dan sambungannya memerlukan satu arahan SQL
    • modul shared_ispell, yang mengoptimumkan prestasi carian teks penuh dengan memuatkan kamus ke dalam memori pada permulaan pelayan, dan bukan pada permulaan sesi.
  3. Meliputi indeks. Sokongan untuk konstruk TERMASUK dalam CREATE INDEX.
  4. Mudah alih: libicu disokong pada semua platform, menyediakan pengendalian yang jelas bagi susunan isihan dan operasi lain dengan aksara Unicode. Pada beberapa platform, perpustakaan ini meningkatkan prestasi pengisihan, dan, yang penting, membolehkan Postgres Pro menggunakan kekunci yang disingkatkan, yang telah dilumpuhkan dalam versi utama PostgreSQL.
  5. Modul pg_trgm bukan sahaja menyokong perbandingan rentetan kabur, tetapi juga carian subrentetan kabur.
  6. Modul pageinspect menyokong akses bukan sahaja kepada maklumat meta, tetapi juga kepada perwakilan dalaman data jadual.
  7. Modul baharu telah ditambah, sr_plan, yang membolehkan anda menyimpan rancangan pelaksanaan pertanyaan dan menggunakan rancangan yang disimpan dan bukannya menjana pelan pertanyaan baharu setiap kali ia dilaksanakan.
  8. Modul dump_stat telah ditambahkan, yang membolehkan anda menyimpan maklumat tentang statistik dan memulihkannya apabila membuang pangkalan data. Ini membolehkan anda mempercepatkan proses pemulihan dengan menghapuskan keperluan untuk mengira statistik dengan arahan VACUUM ANALYZE selepas pemulihan.
  9. Modul JSQuery telah ditambah, yang membolehkan anda merumuskan pertanyaan dalam bahasa khas untuk medan jenis JSONB dengan sokongan untuk indeks GIN.
  10. Modul menyediakan jenis tambahan data untuk keserasian dengan Microsoft SQL pelayan.
  11. Modul menyediakan pengendali tambahan kesaksamaan untuk keserasian dengan Microsoft SQL Server.
  12. Modul ini menyediakan fungsi transaksi yang tidak selamat untuk memotong jadual sementara, menghalang direktori pg_class daripada berkembang.
  13. Modul ini menyediakan satu set fungsi yang dengan serta-merta mengemas kini statistik pada jadual sasaran selepas INSERT, UPDATE, DELETE, dan SELECT INTO operasi pada mereka.
  14. Modul ini menambah sokongan untuk arahan kepada penjadual, membolehkan anda melumpuhkan atau mendayakan indeks tertentu apabila melaksanakan pertanyaan.

Anda boleh mengetahui lebih lanjut tentang perbezaan antara PostgreSQL dan PostgreSQL dalam Jadual Perbandingan Produk.

Lesen Standard PostgreSQL

Postgres Pro Standard diedarkan di bawah lesen PostgreSQL dengan alat tambah Postgres Professional:

Hak Cipta Bahagian (c) 2015-2019, Postgres Professional
Hak Cipta Bahagian (c) 1996-2019, Kumpulan Pembangunan Global PostgreSQL
Hak Cipta Bahagian (c) 1994 Regents of the University of California

Hak diberikan untuk menggunakan, menyalin, mengubah suai dan mengedar perisian ini dan dokumentasinya untuk tujuan ujian, pembangunan perisian, membiasakan diri dengan fungsi DBMS, menggunakan dalam proses pendidikan secara percuma dan tanpa menandatangani sebarang perjanjian, dengan syarat untuk setiap salinan maklumat ini disediakan Notis hak cipta di atas, perenggan semasa dan empat perenggan berikut. Penggunaan untuk tujuan lain, penyepaduan ke dalam produk lain, replikasi dan tindakan lain memerlukan pembelian lesen berasingan.

Universiti California tidak bertanggungjawab untuk sebarang kerosakan, termasuk kehilangan pendapatan, yang timbul secara langsung atau tidak langsung, khas atau sampingan, daripada penggunaan perisian ini atau dokumentasinya, walaupun Universiti California telah dinasihatkan tentang kemungkinan kerosakan tersebut. .

Universiti California secara khusus menafikan sebarang waranti dalam apa jua bentuk, termasuk, tetapi tidak terhad kepada, waranti tersirat kebolehdagangan atau kesesuaian untuk tujuan tertentu. Diberi perisian disediakan atas dasar "seadanya" dan Universiti California tidak bertanggungjawab untuk menyediakan penyelenggaraan, sokongan, kemas kini, peningkatan atau perubahan.

Syarikat Liabiliti Terhad Postgres Professional tidak bertanggungjawab untuk sebarang kerosakan, termasuk kehilangan pendapatan, yang disebabkan oleh penggunaan langsung atau tidak langsung, khas atau sampingan perisian ini atau dokumentasinya, walaupun jika Syarikat Liabiliti Terhad Postgres Professional telah dinasihatkan tentang kemungkinan kerosakan tersebut .

Syarikat Liabiliti Terhad Profesional Postgres secara khusus menafikan sebarang waranti, termasuk, tetapi tidak terhad kepada, waranti tersirat kebolehdagangan atau kesesuaian untuk tujuan tertentu. Perisian ini disediakan atas dasar "seadanya" dan Syarikat Liabiliti Terhad Profesional Postgres tidak bertanggungjawab untuk menyediakan penyelenggaraan, sokongan, kemas kini, sambungan atau perubahan.

Sejarah POSTGRES bermula pada tahun 1977 dengan pangkalan data Ingress.

Pada tahun 1986, ia telah dinamakan semula PostgreSQL (disebut Post-Gres-Q-El) di Universiti Berkeley, California.

Pada tahun 1995, Postgres menjadi pangkalan data terbuka. psql interaktif muncul.

Pada tahun 1996, Postgres95 telah dinamakan semula PostgreSQL versi 6.0.

Postgres mempunyai beberapa ratus pembangun di seluruh dunia.

Seni bina PostgreSQL

PostgreSQL ialah pelayan pangkalan data bersatu dengan satu enjin storan. Postgres menggunakan model pelayan pelanggan.

Untuk setiap pelanggan, proses baharu (bukan benang!) dicipta pada pelayan. Untuk bekerja dengan proses klien sedemikian, pelayan menggunakan semaphore.

Permintaan pelanggan melalui peringkat berikut.

1. Sambung.

2. Penghuraian: ketepatan permintaan disemak dan pepohon pertanyaan dibuat. Penghurai adalah berdasarkan utiliti asas Unix yacc dan lex.

3. Tulis semula: pokok pertanyaan diambil dan kehadiran peraturan di dalamnya diperiksa, yang terletak di direktori sistem. Setiap kali pertanyaan pengguna ditulis semula kepada pertanyaan yang mengakses jadual pangkalan data.

4. Pengoptimum: untuk setiap permintaan, pelan pertanyaan dibuat, yang dipindahkan kepada pelaksana. Maksud rancangan itu ialah semua orang dapat mengatasinya pilihan yang mungkin mendapatkan keputusan (sama ada untuk menggunakan indeks, gabungan, dll.), dan memilih pilihan terpantas.

5. Pelaksanaan pertanyaan: pelaksana secara rekursif melintasi pepohon dan mendapat hasilnya, menggunakan pengisihan, cantum, dsb., dan mengembalikan baris.

Postgres ialah pangkalan data hubungan objek, setiap jadual di dalamnya mewakili kelas, dan warisan dilaksanakan antara jadual. Melaksanakan piawaian SQL92 dan SQL99.

Model urus niaga dibina berdasarkan apa yang dipanggil kawalan konkurensi berbilang versi (MVCC), yang memberi prestasi maksimum. Integriti rujukan dipastikan dengan kehadiran kunci primer dan sekunder.

Organisasi DBMS PostgreSQL

Seperti mana-mana DBMS, PostgreSQL mesti menyediakan pertanyaan sql dan mengembalikan hasil aplikasi pelanggan. Untuk melakukan ini, pengoptimum pertanyaan DBMS membuat keputusan mengenai penggunaan yang optimum sumber dan membina rancangan pertanyaan. Pada masa yang sama, dia boleh bergantung pada mekanisme pecutan kerja yang digunakan (indeks, cache memori, sumber pemproses, data statistik, dll.).
Hasil pertanyaan dikembalikan kepada sambungan pelanggan

Dalam Windows, fail perkhidmatan pg_ctl.exe mengawal segala-galanya (berhenti, bermula, mulakan semula).

Enjin pangkalan data itu sendiri ialah postgres.exe.

Pengoptimum pertanyaan adalah sedikit tertakluk kepada kawalan oleh pembangun, jadi kami akan kembali kepadanya hanya secara tidak langsung dalam bahagian analisis prestasi.



Tetapi pengurusan ruang cakera adalah sangat penting. Seperti mana-mana DBMS, untuk pangkalan data PostgreSQL adalah lebih baik menggunakan RAID 10 untuk pangkalan data dan tatasusunan cakera berasingan untuk logi. Penggunaan sistem STORAGE juga boleh memberi kesan positif ke atas prestasi keseluruhan. Satu lagi ciri yang mempercepatkan kerja dengan meletakkan data pada pemacu yang berbeza, ini adalah ruang meja.

Penting untuk pentadbir gudang data berbilang gigabait, ruang jadual membenarkan jadual dan indeks yang besar diletakkan pada cakera atau tatasusunan berasingan, meningkatkan prestasi pertanyaan.

PostgreSQL mempunyai keanehan dalam pelaksanaan storannya - ini adalah apa yang dipanggil "kluster". Dalam kes ini kita bercakap tentang lokasi direktori untuk pangkalan data. Selain itu, PostgreSQL mengatur struktur fail tunggal di mana fail individu tidak sepadan secara langsung dengan jadual atau objek pangkalan data lain.

Apabila memasang, anda menentukan "kelompok" (baca direktori).

Rajah 6.7.1

Apabila dipasang, PostgreSQL mencipta asas sistem postgres dan pangkalan data template1 sebagai templat tetapan untuk semua pangkalan data baharu. Biasanya, dalam persekitaran Linux, direktori /var/postgres/data mengandungi beberapa fail perkhidmatan untuk PostgreSQL, dan direktori /var/postgres/data/base mengandungi pangkalan data, setiap satu dalam direktori tersendiri.

Malangnya, kaedah penyimpanan data yang dilaksanakan dalam PostgreSQL memerlukan penyelenggaraan tambahan - defragmentasi berkala pangkalan data dengan arahan VACUUM. Catatan. Paparan pertanyaan terwujud (paparan pengguna) tidak digunakan oleh platform.

Saiz pangkalan data

Pada masa ini (versi 9.1.2), PostgreSQL mempunyai had berikut:

Kekuatan PostgreSQL ialah:

1. sokongan untuk pangkalan data saiz hampir tidak terhad;

2. mekanisme transaksi dan replikasi yang berkuasa dan boleh dipercayai;

3. sistem bahasa pengaturcaraan terbina dalam yang boleh diperluas: PL/pgSQL, PL/Perl, PL/Python dan PL/Tcl disokong sebagai standard;

4. Anda boleh menggunakan PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Skim dan PL/sh, dan terdapat juga sokongan untuk memuatkan modul serasi C;

5. pusaka;

6. mudah dikembangkan.

Utiliti Pentadbiran Pangkalan Data PostgreSQL pgAdmin - cangkerang grafik reka bentuk dan pentadbiran PostgreSQL DBMS untuk sistem Unix dan Windows.

Rajah 6.7.2

Pgadmin ditulis dalam bahasa pengaturcaraan C dan menggunakan kit pembangun platform wxWidgets (dahulu wxWindows) yang sangat baik. pgAdmin diedarkan di bawah lesen PostgreSQL, i.e. juga merupakan perisian percuma.

PostgreSQL ialah DBMS hubungan objek rentas platform sumber terbuka. Artikel ini akan menunjukkan kepada anda cara memasang PostgreSQL dalam Ubuntu Linux, sambung kepadanya dan lakukan pasangan pertanyaan SQL mudah, serta cara menyediakan sandaran.

Untuk memasang PostgreSQL 9.2 pada Ubuntu 12.10, jalankan arahan berikut:

sudo apt-add-repository ppa:pitti/ postgresql
sudo apt-get kemas kini
sudo apt-get install postgresql-9.2

Mari cuba bekerja dengan DBMS melalui shell:

sudo -u postgres psql

Mari buat pangkalan data ujian dan pengguna ujian:

CIPTA PANGKALAN DATA test_database;
BUAT PENGGUNA test_user DENGAN kata laluan "qwerty" ;
BERIKAN SEMUA PADA PANGKALAN DATA test_database KEPADA test_user;

Untuk keluar dari shell, masukkan arahan \q .

Sekarang mari kita cuba bekerja dengan pangkalan data yang dibuat bagi pihak test_user:

psql -h localhost test_database test_user

Mari buat jadual baharu:

BUAT URUTAN user_id;
CIPTA pengguna JADUAL (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids") ,
log masuk CHAR(64),
kata laluan CHAR(64));

Sila ambil perhatian bahawa, tidak seperti beberapa DBMS lain, PostgreSQL tidak mempunyai lajur dengan sifat auto_increment. Sebaliknya, Postgres menggunakan jujukan. Buat masa ini, sudah cukup untuk mengetahui bahawa menggunakan fungsi nextval kita boleh mendapatkan nombor unik untuk urutan tertentu:

PILIH NEXTVAL ("user_id" );

Dengan menetapkan nilai lalai untuk medan id jadual pengguna kepada NEXTVAL("user_id"), kami telah mencapai kesan yang sama seperti yang diberikan oleh auto_increment. Apabila menambah rekod baharu pada jadual, kami mungkin tidak menentukan id, kerana id unik akan dijana secara automatik. Berbilang jadual boleh menggunakan urutan yang sama. Dengan cara ini kami boleh menjamin bahawa nilai beberapa medan dalam jadual ini tidak bertindih. Dalam pengertian ini, jujukan adalah lebih fleksibel daripada auto_increment.

Jadual yang sama boleh dibuat menggunakan hanya satu arahan:

CIPTA pengguna JADUAL2 (
id KUNCI UTAMA SIRI ,
log masuk CHAR(64),
kata laluan CHAR(64));

Dalam kes ini, urutan untuk medan id dibuat secara automatik.

Kini menggunakan perintah \d anda boleh melihat senarai semua jadual yang tersedia dan menggunakan \d pengguna anda boleh melihat penerangan jadual pengguna. Jika anda tidak mendapat maklumat yang anda cari, cuba \d+ bukannya \d . Anda boleh mendapatkan senarai pangkalan data dengan perintah \l dan bertukar kepada pangkalan data tertentu dengan perintah \c dbname. Untuk memaparkan bantuan arahan, sebut \? .

Adalah penting untuk ambil perhatian bahawa dalam PostgreSQL, secara lalai, nama jadual dan lajur dihantar ke huruf kecil. Jika anda tidak mahu tingkah laku ini, anda boleh menggunakan petikan berganda:

CIPTA JADUAL "satu lagi Jadual" ("someValue" VARCHAR (64 ) );

Satu lagi ciri PostgreSQL yang mungkin menyebabkan kesukaran apabila mula bekerja dengan DBMS ini ialah apa yang dipanggil "skema". Skema ialah sesuatu seperti ruang nama untuk jadual, seperti direktori dengan jadual di dalam pangkalan data.

Membuat skema:

BUAT tempahan SKEMA;

Tukar kepada skema:

TETAPKAN laluan_carian KEPADA tempahan;

Anda boleh melihat senarai skema sedia ada menggunakan arahan \dn. Skema lalai dinamakan awam. Pada dasarnya, anda boleh berjaya menggunakan PostgreSQL tanpa mengetahui tentang kewujudan skema. Tetapi apabila bekerja dengan kod warisan, dan dalam beberapa kes kelebihan, mengetahui tentang skema boleh menjadi sangat berguna.

Jika tidak, bekerja dengan PostgreSQL tidak jauh berbeza daripada bekerja dengan mana-mana DBMS hubungan lain:

MASUKKAN KE DALAM pengguna (log masuk, kata laluan)
NILAI ("afiskon" , "123456" );
PILIH * DARI pengguna;

Jika anda kini cuba menyambung ke Postgres dari mesin lain, anda akan gagal:

psql -h 192.168.0.1 test_database test_user

Psql: tidak dapat menyambung ke pelayan: Sambungan ditolak
Adakah pelayan berjalan pada hos "192.168.0.1" dan menerima
Sambungan TCP/IP pada port 5432?

Untuk membetulkannya, tambahkan baris:

listen_addresses = "localhost,192.168.0.1"

...ke fail /etc/postgresql/9.2/main/postgresql.conf juga.

Sehingga kini, ekosistem untuk mencipta dan menggunakan penyelesaian berprestasi tinggi telah terbentuk di sekitar DBMS PostgreSQL sumber terbuka yang berfungsi sepenuhnya, membolehkan DBMS ini dianggap sebagai alternatif sebenar kepada produk komersial.

20/07/2015 Ivan Panchenko

Sumber terbuka PostgreSQL DBMS berfungsi sepenuhnya telah mencipta ekosistem di sekelilingnya untuk membina dan mengendalikan penyelesaian berprestasi tinggi, dan hari ini sistem ini boleh dianggap sebagai alternatif kepada produk komersial.

Akar PostgreSQL terletak pada projek POSTGRES Michael Stonebraker, seorang profesor di University of California di Berkeley, yang dibangunkan sebagai salah satu daripada tiga cabang pangkalan data hubungan data. Yang pertama berkembang daripada Sistem R, yang dipromosikan oleh IBM pada awal 70-an, yang kedua ialah projek Ingres Stonebreaker, dan yang ketiga ialah Oracle. DBMS Ingres dibangunkan dalam semangat Berkeley sebagai pangkalan terbuka, yang kodnya telah diedarkan pada pita pada harga barang pos. Sistem ini dibangunkan untuk sistem pengendalian UNIX PDP 11, yang telah menentukan popularitinya, dan lesen BSD liberal dan karisma Stonebreaker menyumbang kepada pembangunan Ingres dan kemunculan Kuantiti yang besar DBMS hubungan.

Projek Postgres adalah hasil daripada memahami pengalaman Ingres dan keinginan untuk mengatasi batasan jenis data dengan membenarkan definisi jenis baharu. Kerja-kerja projek itu bermula pada tahun 1985; dalam tempoh dari 1985 hingga 1988, penerangan tentang model data, bahasa pertanyaan POSTQUEL dan storan muncul, tetapi walaupun itu batasan telah diperhatikan model hubungan, terhasil daripada kesederhanaannya. Versi pertama DBMS Postgres pasca perhubungan telah dikeluarkan pada tahun 1989, dan kod Ingres dan Postgres tidak mempunyai persamaan. Projek ini telah ditutup selepas keluaran versi 4.2 pada tahun 1993, tetapi kod sumber terbuka dan lesen BSD menggalakkan graduan Berkeley Andrew Yu dan Jolly Chen untuk meneruskan pembangunannya pada tahun 1994. Selepas menggantikan bahasa pertanyaan POSTQUEL dengan bahasa standard projek SQL, dipanggil Postgres95, serta-merta menarik ramai pengikut.

Pada tahun 1996, projek itu dinamakan PostgreSQL untuk menekankan sambungan dengan projek POSTGRES dan SQL asal, dan ia telah diambil alih oleh kumpulan inisiatif pengguna dan pembangun PGDG (PostgreSQL Global Development Group). Semua keputusan tentang rancangan pembangunan dan keluaran versi baharu dibuat oleh jawatankuasa pengurusan (pasukan Teras), yang terdiri daripada enam orang. Di samping itu, terdapat sekumpulan pembangun utama (kira-kira 20 orang, tiga daripadanya berasal dari Rusia), yang telah memberikan sumbangan besar kepada pembangunan PostgreSQL, serta hanya pembangun.

Pembangunan dan sokongan

Kitaran kerja pada versi "utama" PostgreSQL seterusnya biasanya adalah kira-kira setahun, di mana sesiapa sahaja boleh menyerahkan cadangan (tampalan) mereka untuk dipertimbangkan. Senarai mel pgsql-hackers digunakan untuk membincangkannya, dan jika tampalan telah melepasi prosedur pengesahan mandatori oleh pembangun lain, ia disertakan dalam keluaran baharu (terdapat prosedur untuk menjejaki status cadangan yang dicadangkan di laman web commitfest. postgresql.org). Semasa penyediaan keluaran, versi beta muncul, keluaran yang biasanya digabungkan dengan mengadakan persidangan PGDG.

Pada satu ketika, fasa pembekuan kod diumumkan, di mana cadangan daripada fungsi baharu tidak diterima, tetapi hanya pembetulan atau penambahbaikan kod dibenarkan. Kadangkala, semasa mengerjakan versi baharu, ralat daripada versi terdahulu ditemui atau diperbetulkan (backporting), dan oleh kerana pembetulan sedemikian terkumpul, keputusan dibuat untuk mengeluarkan versi stabil baharu yang serasi dengan versi lama. Sebagai contoh, 9.4.4 ialah pembetulan pepijat untuk versi stabil 9.4. Menjelang penghujung kitaran, Calon Pelepasan dikeluarkan, dan kemudian versi utama PostgreSQL yang baharu dikeluarkan.

Melalui senarai mel, PGDG menyediakan sokongan untuk versi utama selama lima tahun dari tarikh ia dikeluarkan, dan mesej ralat yang diformat dengan betul mempunyai peluang untuk disemak dengan cepat, dan selalunya terdapat kes apabila pembetulan dikeluarkan dalam masa 24 jam. Selain sokongan daripada komuniti pembangun, PostgreSQL juga disokong secara komersial oleh beberapa syarikat: EnterpriseDB di Amerika Utara, 2ndQuadrant, Dalibo dan lain-lain di Eropah, dan Postgres Professional di Rusia.

Jejak PostgreSQL Rusia

Salah satu pembangun PostgreSQL pertama (1996) ialah Vadim Mikheev dari Krasnoyarsk. Beliau ialah pengarang bahagian DBMS seperti: kawalan berbilang versi akses serentak(kawalan konkurensi berbilang versi, MVCC), di mana pengurusan transaksi dan sokongan integriti data berasaskan PostgreSQL moden; sistem pembersihan (Vakum); log transaksi (WAL); pertanyaan bersarang dan pencetus. Hari ini, antara pemaju utama projek PostgreSQL terdapat tiga wakil dari Rusia: seorang penyelidik di Institut Penerbangan Negeri Moscow State University Oleg Bartunov, seorang graduan jabatan fizik Universiti Negeri Moscow Fedor Sigaev dan Alexander Korotkov (MEPhI). Mereka menyetempatkan PostgreSQL (sokongan untuk pengekodan nasional, termasuk Unicode), mencipta sistem untuk carian teks penuh dan bekerja dengan data separa berstruktur (hstore, json, jsonb), dan juga mencadangkan kaedah pengindeksan baharu (GiST, GIN, SP-GIST ).

Bartunov dan Sigaev adalah sebahagian daripada pasukan pembangunan portal Rambler (ketua Runet pada awal 2000-an), yang mana perlu untuk mencipta sistem pengurusan kandungan dan platform untuk membangunkan projek kandungan, menggabungkan prestasi tinggi dan fleksibiliti. Pada masa itulah idea timbul untuk mengatur carian pantas melalui tatasusunan menggunakan DBMS, tetapi pada masa itu PostgreSQL menyokong kerja dengan indeks jenis B-tree dan R-tree, yang kurang sesuai untuk tugas ini, jadi pembangun beralih perhatian mereka kepada infrastruktur pokok indeks umum Pokok Carian Umum (GiST).

Sistem GiST pada asalnya projek penyelidikan- generalisasi ke atas R-tree dan variasinya (RD-tree, signature-tree, dll.), dan pelaksanaan GiST untuk PostgreSQL, yang dicadangkan oleh pengarang GiST, mempunyai banyak batasan (hanya kunci saiz tetap, kekurangan sokongan pemulihan , dsb.), yang tidak membenarkan kita bercakap tentang kegunaan industri. Bartunov dan Sigaev memodenkan GiST, yang menjadi komponen lengkap PostgreSQL - indeks dibangunkan berdasarkannya untuk pencarian pantas pada tatasusunan, sistem carian teks penuh OpenFTS dan indeks untuk carian pada pokok dan graf ltree. Pelaksanaan GiST bagi R-tree telah menggantikan pelaksanaan R-tree berasingan PostgreSQL.

Pada tahun 2011, Alexander Korotkov, sebagai pelajar siswazah di MEPhI, sebagai sebahagian daripada program Google Summer of Code, membangunkan pelaksanaan algoritma pembinaan GiST pada ruang cakera dan membentangkannya pada persidangan PGConf.EU 2011 (https://wiki .postgresql.org/images/0/07 /Fast_GiST_index_build.pdf). Kemudian dia mencadangkan algoritma baharu pemisahan nod untuk R-tree, yang telah digunakan dalam pelbagai aplikasi GiST: untuk jenis data geometri terbina dalam, julat, pgSphere, jenis geometri dalam PostGIS.

Sistem carian teks penuh PostgreSQL ialah salah satu kelebihan utama DBMS ini: keupayaan untuk memasukkan kriteria carian teks penuh dalam pertanyaan SQL sewenang-wenangnya membezakan carian dalam PostgreSQL daripada enjin carian khusus seperti Solr atau Sphynx. Sigaev dan Korotkov membangunkan sistem carian teks kabur berdasarkan penguraian trigram - modul pg_trgm, yang menambah keupayaan untuk mengindeks carian menggunakan keadaan LIKE/ILIKE, serta ungkapan biasa. Carian indeks untuk ungkapan biasa pg_trgm telah dibentangkan pada persidangan antarabangsa PGCon 2012 (http://www.pgcon.org/2012/schedule/attachments/248_Alexander%20Korotkov%20-%20Index%20support%20for%20regular%20expression%20search.pdf). Walau bagaimanapun, untuk carian teks penuh dan carian dalam tatasusunan yang berkesan, prestasi indeks GiST tidak mencukupi - indeks terbalik diperlukan. Dengan analogi dengan GiST, indeks sedemikian telah dilaksanakan: Generalized Inverted iNdex (GIN) membenarkan pengindeksan objek kompleks dengan pembahagian sewenang-wenang ke dalam kunci. GIN telah dibentangkan di Sidang Kemuncak Ulang Tahun PostgreSQL di Toronto pada tahun 2006 (http://www.sai.msu.su/~megera/postgres/talks/Gin-toronto-2006.pdf). Akibatnya, PostgreSQL DBMS kini boleh bersaing dengan sistem carian teks penuh khusus. Perkembangan selanjutnya GiST ialah teknologi untuk mencari jiran terdekat (KNN), yang membolehkan penganjuran carian berkesan untuk kedua-dua objek geometri berhampiran dan imej serupa serta set data kompleks lain.

Salah satu sambungan PostgreSQL yang paling popular ialah modul PostGIS, yang menyokong standard OpenGIS dan semua unjuran GIS untuk bekerja dengan data geometri dalam ruang dari dua hingga lima dimensi. PostGIS termasuk algoritma pembahagian nod yang dibangunkan oleh Korotkov untuk jenis geometri, yang meningkatkan kelajuan carian daripada tiga hingga sepuluh kali ganda.

Bermula dengan versi 8.2 (2006), sambungan Hstore muncul dalam PostgreSQL, yang melaksanakan jenis data untuk menyimpan set pasangan nilai kunci, dan dengan permintaan yang semakin meningkat untuk DBMS berorientasikan dokumen, idea timbul untuk menambah sokongan untuk bersarang, jenis dan tatasusunan kepada Hstore. Prototaip telah dibentangkan oleh Bartunov dan Sigaev pada persidangan PGCon 2013. Selepas itu, berdasarkan kerja ini, jenis data jsonb telah dicipta, melaksanakan yang cekap storan binari objek json, yang menjadi salah satu daripada Ciri-ciri utama PostgreSQL versi 9.4.

DBMS PostgreSQL moden

Sepanjang lebih 20 tahun sejarah pembangunannya, PostgreSQL telah berkembang daripada pembangunan akademik kepada DBMS peringkat perusahaan sepenuhnya, membentuk alternatif sebenar kepada pangkalan data komersial. Lesen PostgreSQL membenarkan penggunaan tanpa had, pengubahsuaian kod dan kemasukan dalam produk lain, termasuk produk proprietari dan komersial.

Kebolehpercayaan dan keselamatan

Isu kebolehpercayaan amat penting dalam aplikasi peringkat perusahaan apabila bekerja dengan data kritikal misi. DBMS PostgreSQL memungkinkan untuk mengkonfigurasi sandaran panas dan memulihkan ke titik tertentu pada masa lalu, dan juga menyokong jenis lain replikasi (synchronous, asynchronous dan cascade). Semua ini membolehkan anda membina sistem toleransi kesalahan dengan sandaran "hangat" atau "panas", serta mencipta penyelesaian kluster yang boleh dipercayai.

PostgreSQL memberi perhatian khusus kepada keselamatan - DBMS menyediakan pelbagai kaedah pengesahan: melalui kata laluan dalam bentuk yang jelas atau disulitkan (md5), menggunakan pelayan LDAP, RADIUS atau modul pemalam (PAM); melalui pengesahan luaran (ident, rakan sebaya, sijil - sijil SSL, gss - Kerberos melalui protokol GSSAPI, sspi - Kerberos/NTLM untuk Windows). Apabila mengurus pengguna dan akses kepada objek pangkalan data, adalah mungkin untuk memilih pengguna dan peranan individu, yang boleh bersarang; capaian kepada objek pangkalan data (memberi/membatalkan) boleh dijalankan sama ada secara langsung oleh pengguna atau secara tidak langsung melalui peranan; dalam versi 9.5 akan terdapat pengasingan akses pada tahap lajur dan baris (Keselamatan Tahap Baris); Sokongan SELinux telah dilaksanakan melalui fungsi terbina dalam SE-PostgreSQL (akses mandatori).

Apabila standard ANSI SQL berkembang, ia turut disokong dalam PostgreSQL: SQL-92, SQL:1999, SQL:2003, SQL:2008 dan SQL:2011. PostgreSQL 9.4 menyokong 160 daripada 179 ciri SQL:2011 yang diperlukan.

PostgreSQL DBMS menyediakan sokongan penuh sifat ASID dan menjamin pengasingan urus niaga terima kasih kepada mekanisme kawalan konkurensi berbilang versi - baca transaksi jangan sekali-kali menyekat transaksi tulis, dan begitu juga sebaliknya. Ini juga berlaku untuk tahap pengasingan SERIALIZABLE yang paling ketat, yang menggunakan sistem SSI (SERIALIZABLE SNAPSHOT ISOLATION) yang inovatif dan menyediakan pengasingan transaksi yang lengkap, memastikan bahawa hasil transaksi serentak adalah sama seperti apabila ia dilaksanakan secara berurutan.

Ciri Pembangun

Pembangun mempunyai alat pelupusan mereka yang membolehkan mereka membuat aplikasi dalam apa jua jenis. Ia termasuk:

  • antara muka untuk Tcl, Perl, C, C++, PHP, Json, ODBC, JDBC, SQL Terbenam dalam C, Python, Ruby, Java;
  • perwakilan, urutan, warisan, kekangan integriti, gabungan luar, pertanyaan bersarang, fungsi tetingkap, CTE (dengan pertanyaan), prosedur tersimpan, fungsi, pencetus;
  • sistem carian teks penuh fleksibel terbina dalam dengan sokongan untuk Rusia dan semua bahasa Eropah;
  • Sokongan NoSQL: data separa berstruktur (xml, json, jsonb);
  • menghubungkan sumber luaran sebagai jadual semua pangkalan data utama dengan keupayaan untuk menulis melalui Pembungkus Data Asing.

Kebolehlanjutan dan Aplikasi

Kebolehlanjutan adalah salah satu sifat asas sistem, yang mendasari seni binanya. Pengguna secara bebas boleh menambah fungsi, jenis data, pengendali untuk bekerja dengan jenis baharu, menggunakan kaedah akses indeks (Btree, Hash, GiST, GIN, SP-GiST) dan bahasa pengaturcaraan (pl/pgsql, pl/perl, pl/python , pl /tcl, pl/R, pl/java, pl/v8,...). Sambungan ke sumber luar(Pembungkus Data Asing) dilaksanakan melalui antara muka kepada hampir semua DBMS, dan sambungan yang boleh dimuat turun membenarkan, sebagai contoh, menyokong geomaklumat Data PostGIS, lakukan carian kabur menggunakan trigram, bekerja dengan tatasusunan, dsb.

Pengguna utama PostgreSQL termasuk syarikat seperti Microsoft, Yahoo, Instagram, BASF dan Afilias. DBMS ini juga digunakan dalam sektor awam: Sebagai contoh, di Perancis, perkhidmatan cuaca negara dan sistem maklumat dana negara untuk faedah keluarga (CNAF), yang menyimpan data pada 30 juta orang, adalah berdasarkan PostgreSQL. Di Rusia, PostgreSQL digunakan, khususnya, oleh Yandex dan Avito, serta dalam beberapa Agensi-agensi kerajaan dan di perusahaan perindustrian.

PostgreSQL menyokong semua klon Unix, termasuk Linux, FreeBSD, Solaris, HPUX, Mac OS X, serta Windows.

DBMS PostgreSQL mengambil kira ciri seni bina pemproses berbilang teras, jadi prestasi meningkat hampir secara linear dengan peningkatan bilangan teras, tetapi bagaimanapun terdapat beberapa had dalam sistem (lihat jadual).

PostgreSQL menggunakan perancang pertanyaan untuk mengoptimumkan pertanyaan kompleks. Keupayaan penjadual untuk mengecualikan paparan jadual anak berdasarkan analisis keadaan pertanyaan dan kekangan integriti sedia ada (pengecualian kekangan) membolehkan anda melaksanakan pembahagian dalam PostgreSQL, yang sangat penting untuk gudang data yang besar.

Semasa mengindeks, sebagai tambahan kepada pokok B tradisional, yang berikut juga tersedia: Hash, GIN (Indeks Terbalik Umum - indeks songsang umum), GiST (Pokok Carian Umum - pokok carian umum), SP-GIST (GiST Pembahagian Angkasa - indeks spatial) - dan indeks boleh dibina berdasarkan ungkapan (berfungsi), dan jika perlu, indeks dibuat hanya untuk baris tertentu dalam jadual (indeks separa).

Ekosistem PostgreSQL domestik

Mengatasi pergantungan teknologi adalah mustahil dalam persekitaran tertutup, jadi adalah dinasihatkan untuk memperkenalkan perisian sumber terbuka, menyepadukan komuniti pengaturcaraan Rusia, khususnya, ke dalam ekosistem pembangunan PostgreSQL DBMS, serta mewujudkan pusat kecekapan di negara ini dan membangunkan latihan pakar. sistem. Ketersediaan set lengkap kod sumber, prosedur pemasangan, dan yang paling penting, sokongan teknikal daripada pemaju domestik dalam negara adalah asas untuk kejayaan integrasi tersebut. Sesungguhnya, prestasi DBMS sebahagian besarnya bergantung pada sistem yang berkuasa sokongan teknikal dalam mod 24x7x365 - ini adalah tugas peringkat industri yang sedang diselesaikan untuk PostgreSQL di Rusia oleh syarikat Postgres Professional.

Di Rusia hari ini ekosistem PostgreSQL sedang membangun, termasuk semakin banyak syarikat dan institusi. Kerjasama ahli perikatan melibatkan bukan sahaja pembangunan DBMS PostgreSQL dan sambungannya, tetapi juga integrasi rapat dengan OS, pembangunan penyelesaian aplikasi, alat migrasi daripada DBMS lain, dsb. Antara yang paling banyak karya yang signifikan Mengenai pembangunan PostgreSQL, perkara berikut boleh dibezakan.

Kluster kongsi-tiada apa-apa yang boleh skala ketersediaan tinggi. Kelompok ini akan membolehkan anda menskalakan rakaman dan pemprosesan data dalam sistem OLAP dan OLTP sambil menyediakan tahap tinggi kebolehcapaian, yang diperlukan dalam sistem perindustrian yang sarat tinggi. Taburan konfigurasi toleransi kesalahan PostgreSQL menjadikannya agak mudah untuk menggunakan kluster berlebihan sepenuhnya untuk berfungsi dalam persekitaran pengkomputeran yang berubah secara dinamik (contohnya, awan). Di samping itu, anda boleh mencipta kluster MultiMaster yang sangat tersedia dengan penskalaan baca-tulis apabila bilangan nod meningkat, dan disebabkan perpecahan data, jumlah kapasiti storan boleh melebihi yang tersedia pada setiap nod secara individu.

Storan bersambung. Mekanisme pembungkus data asing (fdw) untuk bekerja dengan stor data khusus (menyimpan mengikut baris atau lajur, bekerja dengan cakera atau menyimpan dalam memori capaian rawak) akan mempercepatkan pelaksanaan kedua-dua pertanyaan OLTP dan OLAP.

Sistem untuk pengoptimuman penyesuaian automatik bagi pelaksanaan pertanyaan. Kaedah moden pembelajaran mesin membuka prospek baharu untuk pembangunan DBMS - tugas seperti mengimbangi beban, mengira pelan pelaksanaan pertanyaan, membina indeks yang cekap, dsb. penyelesaian yang optimum untuk set data, pertanyaan dan keadaan beban tertentu. Selain itu, pembelajaran mesin membolehkan anda membina semula algoritma pemprosesan secara adaptif dalam masa nyata. Dibangunkan bersama pakar dari Moscow State University dan Pusat Pengajian Tinggi Ekonomi Universiti Penyelidikan Nasional, alatan pembelajaran mesin yang dibina ke dalam kefungsian DBMS standard boleh mengembangkan skop biasa aplikasi DBMS - khususnya, ia akan membolehkan anda untuk cekap dan dengan kehilangan minimum ketepatan dalam masa nyata melaksanakan pertanyaan pada volum data yang besar. Ia juga mungkin untuk bertindak balas secara fleksibel terhadap perubahan dalam pengedaran data dan pertanyaan, yang amat penting untuk DBMS dalam era Internet Perkara.

Kefungsian lanjutan data separa berstruktur. Terima kasih kepada teknologi yang membolehkan anda bekerja dengan data dalam format JSON dan JSONB, PostgreSQL menggabungkan kelebihan DBMS tradisional, seperti keurusniagaan, atomicity perubahan dan integriti data, dengan fleksibiliti NoSQL tanpa mengorbankan prestasi. Bahasa Pertanyaan Data Separa Berstruktur memungkinkan untuk merumuskan pertanyaan kompleks dalam SQL, meningkatkan prestasi dengan memudahkan struktur data, memindahkan penapisan data kompleks daripada aplikasi ke bahagian DBMS dan penggunaan indeks yang cekap.

Sistem yang lebih baik untuk memantau dan menjejaki pelaksanaan permintaan. DBMS industri memerlukan keupayaan untuk memantau dan mengesan pelaksanaan pertanyaan dengan sumber penjejakan untuk peringkat pemprosesan yang berbeza - ini membolehkan mengoptimumkan prestasi aplikasi dan konfigurasi pelayan. PostgreSQL menyediakan keupayaan untuk mengumpul pelbagai metrik prestasi dan cara untuk mengaitkannya dengan metrik OS.

Terjemahan dan latihan dokumentasi. Proses penterjemahan ke dalam bahasa Rusia telah bermula dokumentasi teknikal, pengemaskinian tepat pada masanya juga dirancang. Di samping itu, sistem latihan pakar dalam bidang seperti teknologi moden dan pembangunan DBMS, operasi industri DBMS dan pembangunan aplikasi gunaan sedang dibangunkan di Rusia. sistem maklumat berdasarkan DBMS dengan mengambil kira PostgreSQL. Kursus latihan lanjutan untuk pentadbir dan pembangun sedang dibuat, dan atas dasar mereka sistem pensijilan dibina.

Masa depan PostgreSQL

Pada Julai 2015, versi alfa PostgreSQL 9.5 telah dikeluarkan, di mana perhatian serius diberikan kepada pelaksanaan fungsi baharu yang bercirikan penyelesaian peringkat perusahaan dan bertujuan terutamanya untuk meningkatkan kebolehpercayaan dan prestasi DBMS.

Fungsi keselamatan peringkat Baris membolehkan anda mengatur akses bukan kepada keseluruhan jadual, tetapi kepada baris individunya. Ciri ini juga dikenali sebagai Pangkalan Data Peribadi Maya atau kawalan capaian halus dan melengkapkan mekanisme kawalan capaian data PostgreSQL sedia ada. Terima kasih kepada fungsi pgaudit, anda boleh melakukan audit terperinci bagi operasi pangkalan data, yang amat berguna untuk mengautomasikan pemantauan prestasi sistem aplikasi, contohnya untuk merekodkan jejak audit. Di samping itu, dalam versi baharu, alatan untuk bekerja dengan Data Besar telah dibangunkan - khususnya, indeks Julat Blok (BRIN) telah muncul dengan kaedah akses berdasarkan julat halaman (mereka mengambil lebih sedikit ruang dan memerlukan lebih sedikit sumber semasa mengemas kini, walaupun mereka kurang cekap semasa mendapatkan data, berbanding B-tree). Untuk meningkatkan kebolehpercayaan, sambungan pg_rewind telah disertakan, yang, apabila menggunakan replikasi induk-hamba, membolehkan anda menyegerakkan pelayan induk yang gagal dengan hamba dengan cepat.

Hari ini PostgreSQL ialah DBMS sumber terbuka berfungsi sepenuhnya yang membolehkan anda menyelesaikan pelbagai masalah. Semasa kewujudan PostgreSQL, ekosistem telah terbentuk di sekelilingnya, termasuk pembangun, penganalisis dan pengguna, berkat yang memungkinkan untuk mengembangkan fungsi DBMS ini bergantung pada keperluan pasaran.

kesusasteraan

  1. Sergey Muravyov, Sergey Dvoryankin, Igor Nasenkov. DBMS: masalah pilihan // Open Systems.DBMS. - 2015. - No. 1. - P. 22–24. URL: (tarikh akses: 1.09.2015).
  2. Konstantin Seleznev, Vitaly Maksimov. Penggantian import: matlamat atau cara? // Sistem terbuka.DBMS. - 2015. - No. 1. - P. 30–33. URL: (tarikh akses: 2.09.2015).
  3. Alexander Lashmanov. Import penggantian: risiko dan ilusi // Sistem Terbuka.DBMS. - 2015. - No. 1. - P. 34–35. URL: (tarikh akses: 09/03/2015).

Ivan Panchenko ([e-mel dilindungi]) - timbalan Ketua Pengarah, syarikat Postgres Professional (Moscow).



Jenis data terbina dalam yang disokong

Jenis angka
smallint integer 2-bait pendek
integer integer 4-bait biasa
bigint integer 8-bait yang besar
perpuluhan
angka pecahan titik tetap
sebenar pecahan titik terapung
ketepatan berganda pecahan titik terapung berketepatan ganda
bersiri integer dengan autokenaikan
bigserial integer besar dengan autokenaikan
Jenis wang
wang untuk menyimpan nilai kewangan
Jenis watak
aksara berbeza-beza(n), varchar(n) barisan panjang berubah-ubah dengan batasan
aksara(n), aksara(n) rentetan panjang tetap
teks rentetan berubah dengan panjang tanpa had
Jenis binari (binari).
bytea rentetan binari panjang berubah-ubah
tarikh dan masa
cap waktu [ (p) ] [tiada zon waktu] tarikh dan masa
cap masa [ (p) ] dengan zon waktu tarikh dan masa dengan zon masa
selang [(p)] selang masa
Tarikh hanya tarikh
masa [ (p) ] [tiada zon waktu] hanya masa
masa [ (p) ] dengan zon waktu hanya masa dengan zon waktu
Jenis Boolean
boolean Betul atau salah
Jenis geometri
titik Titik pada satah (x,y)
barisan Talian Halimunan (tidak dilaksanakan sepenuhnya)
lseg Segmen yang boleh dilihat ((x1,y1),(x2,y2))
kotak Segiempat ((x1,y1),(x2,y2))
laluan Poligon tertutup (serupa dengan poligon) ((x1,y1),…)
laluan Polyline [(x1,y1),…]
poligon Poligon (serupa dengan poligon tertutup) ((x1,y1),…)
bulatan Bulatan (x,y),r (pusat dan jejari)
Jenis untuk alamat rangkaian komputer
cidr Rangkaian IPv4 atau IPv6
inet Hos dan rangkaian IPv4 atau IPv6
macaddr Alamat MAC
Rentetan bit
sedikit [(n)] rentetan bit panjang tetap
sedikit berbeza [(n)] rentetan bit panjang berubah-ubah
Jenis untuk carian teks
tsquery permintaan carian teks
tsvector senarai carian teks
Jenis UUID
uuid pengecam unik universal
Jenis XML
xml data XML

Sebagai tambahan kepada set jenis ini, PostgreSQL menyediakan keupayaan untuk mencipta senarai (jenis ENUM), tatasusunan jenis, jenis komposit seperti struktur dalam bahasa C, dan juga mempunyai jenis untuk pengenalan unik objek (OID) dan pseudotaip untuk prosedur tersimpan.

Jenis data ciptaan pengguna

Menggunakan arahan CREATE pengguna TYPE boleh mencipta jenis data baharu untuk keperluan mereka.

Penyetempatan

Pangkalan PostgreSQL berfungsi dengan penyetempatan yang dipasang dalam sistem pengendalian dan mematuhi piawaian POSIX. Dalam amalan, ini bermakna keupayaan untuk bekerja dengan beberapa dozen bahasa, termasuk Rusia dalam semua pengekodan yang mungkin: koi8-r, cp1251, iso8859-5 dan UTF-8. Peluang operasi yang betul PostgreSQL dengan pengekodan tertentu bergantung pada sokongan yang betul bagi pengekodan ini oleh sistem pengendalian itu sendiri.
Terima kasih kepada penggunaan pustaka gettext, mesej ralat dalam utiliti telah diterjemahkan ke dalam banyak bahasa, termasuk bahasa Rusia.

Bahasa

yang boleh digunakan untuk menulis prosedur tersimpan (fungsi)

  • Ular sawa
  • C/C++
  • PL/pgSQL

Fungsi dan Operator

Untuk setiap jenis yang disenaraikan di atas, terdapat set fungsi dan pengendalinya sendiri, yang menjadikan kerja dengan data jenis ini semudah, fleksibel dan produktif yang mungkin. Penyenaraian fungsi dan pengendali ini memerlukan sejumlah besar dokumentasi yang dibekalkan PostgreSQL, jadi lihat butiran di sana.

Indeks
PostgreSQL menawarkan 4 jenis indeks: B-tree, Hash, GiST dan GIN. Setiap jenis indeks mempunyai algoritma pelaksanaan sendiri, yang boleh meningkatkan prestasi dengan ketara jika untuk jenis tertentu data, pilih jenis indeks tertentu.
PostgreSQL membolehkan anda membuat indeks menggunakan ungkapan, contohnya: CIPTA INDEKS test1_lower_col1_idx HIDUP test1(lower(col1));
PostgreSQL membolehkan anda membuat indeks separa menggunakan klausa WHERE, sebagai contoh: CIPTA INDEKS indeks_pesanan_tidak_dibilkan HIDUP pesanan (order_nr) DI MANA dibilkan IS TIDAK benar;.

Carian teks penuh
Bermula dari versi 8.3 dalam kernel PostgreSQL fungsi carian teks penuh disertakan (yang sebelum ini dibekalkan sebagai modul sambungan berasingan).
Carian teks penuh membolehkan anda membuat pertanyaan untuk dokumen teks, seperti: "cari semua dokumen yang mengandungi perkataan tertentu dan keluarkan dalam susunan tertentu," di mana kedua-dua permintaan itu sendiri dan susunan terbitan boleh dikonfigurasikan secara fleksibel bergantung pada keperluan khusus.

Kawalan berbilang versi transaksi serentak dan pengasingan transaksi
DALAM PostgreSQL dilaksanakan (Multiversion Concurrency Control, MVCC) - kawalan berbilang versi bagi urus niaga serentak, yang menguruskan akses kompetitif kepada data pada asas berbilang versi. Dalam amalan, ini bermakna bahawa apabila membuat pertanyaan pangkalan data, setiap transaksi melihat petikan data (versi) pada masa petikan ini, dan bukan keadaan semasa data. Dengan cara ini, urus niaga dilindungi daripada melihat data tidak lengkap yang mungkin masih dijana oleh urus niaga serentak lain dalam baris jadual yang sama. Ini juga mencapai pengasingan transaksi untuk setiap sesi pangkalan data. MMVC membolehkan anda mengelakkan kaedah penguncian eksplisit yang digunakan dalam DBMS tradisional dan dengan itu meminimumkan kunci data dan meningkatkan prestasi dalam kerja berbilang pengguna. Kelebihan utama MMVC ialah data membaca tidak pernah menyekat penulisan, dan menulis tidak pernah menyekat bacaan.
juga dalam PostgreSQL skim tradisional penguncian data eksplisit yang digunakan untuk mengasingkan transaksi telah dilaksanakan, seperti:

  • penguncian aras meja
  • mengunci pada tahap rekod meja (baris).
  • kunci nasihat (untuk kunci peringkat aplikasi asli)

Juga melaksanakan penjejakan kebuntuan (kunci bersama)

Tulis Log Hadapan (WAL)
PostgreSQL melaksanakan mekanisme WAL (log tulis ke hadapan), yang memberikan kelebihan seperti:

  • Meningkatkan prestasi DBMS kerana hanya perubahan yang dibuat direkodkan tanpa menulis semula semua data dalam jadual.
  • Meningkatkan kebolehpercayaan storan data dengan pra-simpan data penimbal dalam WAL
  • Keupayaan untuk melancarkan semula keadaan pangkalan data pada bila-bila masa dengan menggunakan WAL pada salinan sandaran sedia ada

Ruang meja
Ruang meja dalam PostgreSQL membolehkan anda menentukan lokasi storan untuk objek pangkalan data dalam sistem fail. Pertama, ruang meja dengan nama tertentu dicipta. Selanjutnya, nama ini boleh digunakan semasa membuat jadual untuk meletakkan jadual ini secara khusus dalam ruang jadual ini

Persediaan pelayan yang fleksibel
Fail konfigurasi postgresql.conf utama termasuk lebih daripada 150 parameter boleh dikonfigurasikan dalam bahagian:

  • Fail dan laluan kepada mereka
  • Jaringan rangkaian
  • Keizinan dan keselamatan
  • Peruntukan sumber
  • WAL - log tulis balik
  • Perancangan pertanyaan
  • Ralat dan pengelogan
  • Minta statistik
  • Pengoptimuman data melalui VACUUM
  • Pengurusan kunci
  • Keserasian versi dan platform
  • Tetapan Lalai Pelanggan

Fail konfigurasi tambahan pg_hba.conf termasuk tetapan untuk akses kepada pangkalan data individu, seperti menentukan alamat IP tertentu dan/atau rangkaian dari mana akses dibenarkan, serta kaedah kebenaran untuk mengakses pangkalan data dan keupayaan untuk mendayakan selamat ( disulitkan) sambungan ) melalui SSL.

Kekangan Integriti
Kekangan integriti berikut disokong:

  • BUKAN NULL - bukan NULL
  • UNIK - keunikan
  • KUNCI PRIMER - kunci utama
  • KUNCI/RUJUKAN ASING - kunci asing, pautan
  • SEMAK - semak

Prosedur tersimpan
Prosedur tersimpan dalam PostgreSQL boleh ditulis dalam mana-mana bahasa terbina dalam yang disokong. Prosedur tersimpan boleh digunakan dalam pencetus dan boleh mengembalikan mana-mana jenis data yang disokong, serta tatasusunan dan senarai.

Pencetus
Pencetus direka untuk perlaksanaan automatik prosedur individu bergantung pada operasi yang telah ditetapkan. Pencetus boleh diberikan sebelum atau selepas operasi INSERT, UPDATE atau DELETE, kedua-duanya apabila rekod dalam jadual ditukar dan apabila pernyataan SQL dilaksanakan. Jika peristiwa yang mana pencetus ditetapkan berlaku, prosedur yang ditetapkan kepada pencetus ini dipanggil.

Sistem peraturan
Sistem peraturan (lebih tepat dipanggil sistem peraturan pengubahsuaian pertanyaan) membenarkan pertanyaan diubah suai mengikut peraturan yang ditentukan dan kemudian menghantar pertanyaan yang diubah suai kepada perancang pertanyaan untuk penjadualan dan pelaksanaan. Sistem peraturan sangat alat yang berkuasa dan boleh digunakan dalam banyak kes seperti prosedur tersimpan, paparan dan versi.

Skim

PostgreSQL menyokong skema. Skema adalah seperti skop tambahan dalam pangkalan data. Anda juga boleh membandingkan skema dengan laluan tambahan (nama skema mesti ditunjukkan sebelum nama jadual) dan dengan direktori di mana jadual boleh diletakkan. Setiap pangkalan data mempunyai skema lalai awam, di mana semua jadual dicipta secara lalai dan yang tidak perlu dinyatakan secara khusus, tetapi pentadbir pangkalan data boleh mencipta skema lain (dan mengehadkan akses kepada mereka), yang menyediakan satu lagi tahap pengedaran hak akses untuk pengguna, membenarkan setiap pengguna untuk diperuntukkan bahagian peribadi dalam pangkalan data dengan nama jadual yang sama seperti pengguna lain.

Peranan dan keistimewaan
PostgreSQL menguruskan keistimewaan pangkalan data menggunakan konsep peranan. Peranan boleh sama ada pengguna pangkalan data individu atau sekumpulan pengguna. Peranan boleh menjadi pemilik objek dalam pangkalan data (contohnya, jadual), dan juga boleh memberikan keistimewaan akses kepada objek ini kepada peranan lain. Adalah mungkin untuk memberikan satu keahlian peranan dalam peranan lain dan, dengan itu, memindahkan kepada peranan ini hak-hak peranan yang akan menjadi ahlinya. Konsep peranan menggantikan konsep lama pengguna dan kumpulan, menyediakan fungsi yang sama.

Pengumpulan statistik
Untuk membina pelan pertanyaan prestasi, perancang pertanyaan masuk PostgreSQL menggunakan apa yang dipanggil perangkaan atau maklumat statistik, dikumpul berdasarkan analisis data dalam jadual, yang dikumpul menggunakan arahan ANALYZE, yang seterusnya merupakan sebahagian daripada proses penyelenggaraan pangkalan data VACUUM. Bermula dari versi 8.1, dalam PostgreSQL ia menjadi mungkin, dan bukannya memanggil arahan pengumpulan statistik secara manual, untuk bekerja dengan alat baharu yang dipanggil autovakum. Dengan autovakum, semua pengumpulan statistik yang diperlukan dan proses penyelenggaraan pangkalan data berlaku secara automatik di latar belakang. Berdasarkan tetapan, PostgreSQL sendiri menentukan jadual yang mana perlu untuk mengumpul statistik dan melakukan penyelenggaraan VACUUM.

Sandaran dan Pulihkan
PostgreSQL menawarkan beberapa mod Salinan simpanan dan pemulihan pangkalan data. Oleh kerana pangkalan data terletak dalam sistem fail, ia agak kaedah biasa ialah sandaran peringkat fail, i.e. direktori itu sendiri di mana fail pangkalan data berada. Satu-satunya syarat untuk mod ini ialah penutupan sepenuhnya pelayan PostgreSQL. Walau bagaimanapun, untuk sistem ketersediaan tinggi mod sandaran ini tidak boleh diterima, oleh itu PostgreSQL membolehkan anda melakukan sandaran semasa pelayan berjalan tanpa mengganggunya kerja biasa. Mod paling mudah adalah untuk mendapatkan tempat pembuangan pangkalan data bentuk teks(dalam bentuk pernyataan SQL) pada keluaran standard. Untuk menjimatkan ruang cakera, anda boleh segera mengubah hala pembuangan sedemikian ke input standard kepada utiliti mampatan (contohnya, gzip). Ia juga mungkin untuk membuat longgokan pangkalan data dalam bentuk binari, serta keupayaan untuk menetapkan parameter khas untuk kemudahan yang lebih besar dalam mendapatkan salinan sandaran dan pemulihannya yang seterusnya.
PostgreSQL juga menyediakan keupayaan untuk membuat sandaran dan, disebabkan ini, memulihkan pangkalan data ke titik masa tertentu, serta sandaran tambahan.