Panduan

Apa Itu Postgres? Pangkalan Data di Sebalik Banyak Aplikasi, Dijelaskan

Postgres (secara rasminya PostgreSQL) ialah pangkalan data hubungan percuma dan bersumber terbuka: program yang menyimpan data aplikasi dalam jadual baris dan lajur, menghubungkan jadual-jadual itu, dan menjawab soalan tentangnya dalam bahasa yang dipanggil SQL. Ia terkenal kerana boleh dipercayai, ketat dalam memastikan data kekal betul, dan cukup fleksibel untuk mengendalikan apa sahaja daripada senarai pendaftaran hingga rekod syarikat besar. Banyak aplikasi web, dan banyak perkhidmatan yang menghoskannya, dibina di atasnya.

Mengapa ia penting apabila membina dengan AI

Apabila pembina aplikasi AI menambah “pangkalan data” pada projek anda, kemungkinan besar ia ialah Postgres. Anda tidak perlu menulis SQL untuk menggunakannya, tetapi sedikit pemahaman amat membantu:

  • Anda boleh menerangkan data dalam bentuk yang diperlukan pangkalan data. “Pelanggan mempunyai banyak pesanan; setiap pesanan mempunyai banyak item” diterjemahkan terus kepada jadual.
  • Anda boleh meminta perlindungan yang betul. Postgres boleh menolak data buruk dengan sendirinya — e-mel pendua, pesanan untuk pelanggan yang tidak wujud — jika AI menyediakan peraturannya.
  • Anda boleh membaca apa yang AI lakukan. Nama jadual, lajur dan hubungan mudah diperiksa dalam pemapar jadual, walaupun anda tidak pernah menyentuh kod.

Analogi harian: pejabat pemfailan yang sangat ketat

Bayangkan pejabat pemfailan dengan kabinet untuk setiap jenis perkara — satu untuk pelanggan, satu untuk pesanan, satu untuk produk. Setiap kad dalam laci mempunyai kotak bercetak yang sama untuk diisi. Setiap kad mempunyai nombor unik, dan kad pesanan tidak mengulang butiran pelanggan; ia hanya menyatakan “pelanggan #214”, menunjuk ke laci pelanggan.

Pegawai itu sangat ketat. Dia tidak akan memfailkan pesanan yang menunjuk kepada pelanggan yang tidak wujud. Dia tidak akan menerima kad dengan kotak tarikh dikosongkan jika ia diperlukan. Dan jika anda meminta dia memindahkan wang dari satu kad akaun ke kad lain, dia sama ada melakukan kedua-dua bahagian atau tidak melakukan apa-apa — tidak pernah hanya satu.

Pegawai itu ialah Postgres. Laci ialah jadual, kotak bercetak ialah lajur, setiap kad ialah baris, dan pautan “pelanggan #214” ialah kunci asing (foreign key).

Perkara yang Postgres kuasai

CiriMaksudnya dalam kata mudah
Jadual dan hubunganData tinggal dalam jadual yang saling menunjuk, supaya tiada apa yang disalin di lima tempat
SQLBahasa piawai untuk bertanya soalan: “semua pesanan belum dibayar dari bulan lepas, paling baharu dahulu”
Transaksi (ACID)Satu kumpulan perubahan sama ada semuanya berlaku atau tiada langsung, walaupun pelayan ranap di tengah-tengah
Kekangan (constraints)Peraturan yang dikuatkuasakan oleh pangkalan data sendiri: medan wajib, e-mel unik, pautan yang sah antara jadual
IndeksPintasan carian supaya pencarian kekal pantas apabila jadual membesar
JSONBSimpan data fleksibel bergaya dokumen dalam satu lajur apabila struktur tetap tidak sesuai
Carian teks penuhCari perkataan dalam medan teks tanpa perkhidmatan carian berasingan, untuk kes yang mudah
Sambungan (extensions)Tambahan seperti PostGIS untuk peta dan lokasi, atau pgvector untuk menyimpan embedding AI
Keselamatan peringkat baris (row-level security)Peraturan dalam pangkalan data tentang baris mana yang boleh dilihat oleh pengguna tertentu

Postgres bermula sebagai projek penyelidikan di University of California, Berkeley, pada 1980-an dan telah dibangunkan secara terbuka oleh komuniti global sejak 1990-an. Sejarah panjang itulah sebabnya ia sering menjadi pilihan lalai: ia didokumenkan dengan baik, disokong secara meluas, dan setiap penyedia awan utama menawarkan versi terurus.

Contoh kerja: menukar hamparan kepada jadual

Katakan anda menjalankan perniagaan katering kecil dan menjejak segalanya dalam satu hamparan: setiap baris ialah satu acara, dengan nama, telefon dan e-mel pelanggan, tarikh, item menu dan harga.

Masalah timbul dengan cepat. Pelanggan yang sama muncul pada enam baris dengan dua nombor telefon berbeza. Item menu ditaip dalam satu sel sebagai “canapés x40, salad x2”, jadi anda tidak boleh menjumlahkan berapa canapés yang dibuat bulan ini.

Dalam Postgres, maklumat yang sama menjadi empat jadual:

JadualLajurNota
clientsid, name, phone, emailE-mel mesti unik
eventsid, client_id, date, venue, statusclient_id mesti sepadan dengan pelanggan sebenar
menu_itemsid, name, unit_priceSatu baris setiap hidangan
event_itemsevent_id, menu_item_id, quantityMenghubungkan acara dengan hidangan, dengan kuantiti

Sekarang nombor telefon pelanggan tinggal di satu tempat. “Berapa canapés yang kita buat pada Mac?” ialah satu soalan SQL. Dan apabila anda merekod acara baharu dengan item-itemnya, satu transaksi memastikan anda tidak pernah berakhir dengan acara yang separuh item disimpan.

Ini langkah yang sering dilangkau apabila orang meminta AI untuk “buat aplikasi daripada hamparan saya”. Panduan menukar hamparan kepada aplikasi menerangkan lebih lanjut.

Istilah utama

  • Jadual, baris, lajur: satu jenis perkara, satu contoh perkara itu, satu maklumat tentangnya.
  • Kunci utama (primary key): ID unik setiap baris, biasanya id.
  • Kunci asing (foreign key): lajur yang menunjuk ke baris dalam jadual lain, seperti client_id.
  • Skema (schema): reka bentuk semua jadual dan lajur anda.
  • Migrasi (migration): perubahan skema yang disimpan dan boleh diulang, seperti “tambah lajur venue pada events”.
  • Pertanyaan (query): soalan atau arahan yang ditulis dalam SQL.
  • Rentetan sambungan (connection string): alamat dan kata laluan yang digunakan bahagian belakang anda untuk mencapai pangkalan data. Ia rahsia — lihat pembolehubah persekitaran dan rahsia.
  • Postgres terurus (managed Postgres): perkhidmatan yang menjalankan, membuat sandaran dan mengemas kini Postgres untuk anda.

Untuk operasi harian yang dilakukan oleh setiap aplikasi ke atas jadual ini — cipta, baca, kemas kini, padam — lihat apa maksud CRUD.

Kesilapan dan salah faham lazim

  • Satu jadual gergasi. Menyalin lajur hamparan satu demi satu membawa kepada masalah pendua yang sama. Pisahkan perkara yang berulang ke jadual sendiri.
  • Menyimpan senarai dalam satu medan teks. “canapés x40, salad x2” dalam satu lajur tidak boleh dikira atau dicari dengan betul. Gunakan jadual penghubung.
  • Tiada kekangan. Tanpa “e-mel mesti unik” atau “setiap acara memerlukan pelanggan”, data buruk masuk secara senyap dan muncul beberapa bulan kemudian.
  • Menukar pangkalan data secara manual dalam pengeluaran. Minta perubahan skema sebagai migrasi, supaya perubahan itu direkodkan dan boleh diulang.
  • Membenarkan pelayar bercakap terus dengan pangkalan data. Bahagian hadapan sepatutnya melalui bahagian belakang anda, yang menyemak kebenaran. Kata laluan pangkalan data tidak pernah patut berada dalam kod halaman.
  • “Postgres hanya untuk syarikat besar.” Ia berjalan sama baik untuk senarai menunggu 50 baris, dan anda tidak perlu berpindah daripadanya apabila berkembang.
  • Menganggap pangkalan data ialah sandaran. Ia menyimpan data; ia tidak secara automatik melindungi anda daripada memadamnya. Semak sandaran apa yang disediakan oleh hos anda.

Apa yang perlu diminta kepada pembina AI anda

  • “Simpan [perkara] dalam pangkalan data. Jadual: … dengan medan ini: … Pautkan setiap [pesanan] kepada [pelanggan].”
  • “Jadikan e-mel unik pada pelanggan. Jadikan medan ini wajib. Jangan benarkan pesanan tanpa pelanggan.”
  • “Gunakan migrasi untuk setiap perubahan skema.”
  • “Tambahkan indeks untuk carian yang paling kerap kita buat: pesanan mengikut pelanggan dan mengikut tarikh.”
  • “Semua akses pangkalan data melalui pelayan. Simpan rentetan sambungan dalam pembolehubah persekitaran.”

Jika anda baru mengenali idea pangkalan data sama sekali, mulakan dengan apa itu pangkalan data, kemudian kembali ke sini. Aplikasi full-stack menunjukkan di mana pangkalan data berada bersebelahan dengan bahagian hadapan dan bahagian belakang.

Postgres di Mythex

Mythex memberikan setiap projek yang memerlukannya pangkalan data Postgres khusus sendiri. Anda tidak perlu mengkonfigurasinya: minta dalam sembang (“simpan e-mel senarai menunggu ke pangkalan data”) atau gunakan arahan /database, dan Mythex melampirkannya, memasukkan butiran sambungan ke dalam aplikasi anda, dan boleh mencipta jadual untuk anda. Pangkalan data aplikasi yang diterbitkan tidur selepas lima minit tidak aktif dan bangun pada permintaan seterusnya, dan anda dicaj untuk masa ia benar-benar terjaga, daripada baki kredit yang sama seperti pembinaan. Butirannya ada dalam dokumentasi pangkalan data, dan templat papan pemuka ialah tempat yang baik untuk melihat aplikasi yang dipacu data.

Soalan lazim

Adakah Postgres sama dengan PostgreSQL?

Ya. PostgreSQL ialah nama rasmi dan Postgres ialah nama pendek yang biasa; kedua-duanya merujuk kepada pangkalan data hubungan bersumber terbuka yang sama.

Adakah Postgres percuma?

Ya. PostgreSQL bersumber terbuka di bawah Lesen PostgreSQL yang longgar, jadi anda boleh menggunakannya secara percuma, termasuk dalam produk komersial. Anda hanya membayar untuk pelayan atau perkhidmatan terurus yang menjalankannya.

Apakah perbezaan antara Postgres dan MySQL?

Kedua-duanya ialah pangkalan data SQL hubungan yang percuma, dan kedua-duanya sesuai untuk kebanyakan aplikasi. Postgres terkenal dengan integriti data yang ketat, jenis data yang kaya seperti JSONB dan tatasusunan, serta ekosistem sambungan yang besar; MySQL terkenal dengan kesederhanaannya dan sejarah panjang dalam hosting web.

Adakah Postgres sesuai untuk aplikasi kecil?

Ya. Ia berfungsi dengan baik untuk senarai menunggu berjadual tunggal dan juga untuk sistem pengeluaran yang besar, jadi anda tidak perlu menukar pangkalan data apabila aplikasi berkembang. Perkhidmatan terurus memudahkan menjalankannya tanpa pentadbir pangkalan data.

Mythex · Pricing · Bina apa sahaja dengan AI · Templat laman web dan aplikasi · Mythex dibandingkan · Glosari pembinaan aplikasi AI · Alat percuma untuk membina aplikasi dengan AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)