1-bo‘lim
PostgreSQL nima va uni kim yaratgan?
PostgreSQL nima, uni kim va nima uchun yaratgan, nomi qayerdan kelgan, boshqa bazalardan farqi va birinchi so'rov.
Ushbu bo‘lim mundarijasi
Agar siz SQL asoslarini bilsangiz - SELECT, INSERT, JOIN -
demak bazaning tilini bilasiz. Bu darslik esa boshqa
narsa haqida: qaysi bazani tanlash va uning o'ziga xos
kuchli tomonlaridan qanday foydalanish.
PostgreSQL - bugungi kunda jiddiy loyihalar uchun eng ko'p tanlanadigan ochiq kodli ma'lumotlar bazasi.
PostgreSQL nima? #
PostgreSQL - obyekt-relyatsion ma'lumotlar bazasi boshqaruv tizimi. "Relyatsion" qismi tanish: jadvallar, qatorlar, ustunlar. "Obyekt" qismi esa uni ajratib turadi - siz o'z turlaringizni, o'z funksiyalaringizni va hatto o'z indeks turlaringizni qo'sha olasiz.
Amalda bu shuni anglatadi: PostgreSQL faqat jadval saqlamaydi. U bir vaqtning o'zida:
| Vazifa | PostgreSQL da |
|---|---|
| Oddiy relyatsion baza | Jadvallar, JOIN, tranzaksiyalar |
| Hujjatli baza | JSONB - indekslanadigan JSON |
| Qidiruv tizimi | To'liq matn qidiruv, tsvector |
| Geografik ma'lumot | PostGIS kengaytmasi |
| Vaqt qatorlari | Bo'laklash va BRIN indekslar |
Ko'p loyihalarda bu bitta bazada hal qilinadi - alohida qidiruv serveri yoki hujjatli baza o'rnatish shart emas.
PostgreSQL ni kim yaratgan? #
Maykl Stounbreyker (1943-yilda tug'ilgan)
POSTGRES loyihasining boshlovchisi. 1986-yilda Berkli universitetida yangi ma'lumotlar bazasi loyihasini boshladi. Maqsad - relyatsion modelni saqlab qolgan holda, unga murakkab turlar va kengaytirish imkonini qo'shish edi.
Undan oldin u xuddi shu universitetda INGRES bazasini yaratgan edi. POSTGRES aynan o'sha ishning davomi sifatida o'ylab topilgan.
2014-yilda ma'lumotlar bazalari sohasidagi ishlari uchun Tyuring mukofotini oldi - bu informatikadagi eng nufuzli mukofot.
PostgreSQL ning bugungi ko'rinishi esa bitta odamning ishi emas. 1995-yilda Berklida ishlagan Endryu Yu va Jolli Chen loyihaning eski so'rov tilini olib tashlab, uning o'rniga SQL ni qo'yishdi. Aynan shundan keyin loyiha keng tarqaldi.
Bugun PostgreSQL ni butun dunyo bo'ylab tarqalgan ko'ngilli va kompaniyalardan iborat jamoa rivojlantiradi. Uning egasi yo'q - hech bir kompaniya uni sotib ololmaydi.
Bu nom uch bosqichda shakllangan va har bosqich tarixni saqlab qolgan.
| Bosqich | Nomi | Ma'nosi |
|---|---|---|
| 1973 | INGRES | Berklidagi birinchi loyiha |
| 1986 | POSTGRES | post-Ingres - "Ingresdan keyingi" |
| 1996 | PostgreSQL | Postgres + endi u SQL tilida gapiradi |
Ya'ni nom "Ingresdan keyin kelgan va SQL biladigan baza" degani.
Talaffuzi ham ko'pchilikni chalkashtiradi. Rasmiy javob: "post-gres-Q-L". Amalda esa deyarli hamma uni qisqacha "Postgres" deb ataydi - va bu ham to'g'ri hisoblanadi.
Birinchi so'rov #
PostgreSQL bilan ishlashning eng to'g'ridan-to'g'ri yo'li - psql dasturi. U buyruq qatorida ishlaydi va bazaga bevosita so'rov yuboradi.
Eng sodda so'rov jadvalsiz ham ishlaydi:
SELECT 'Salom, PostgreSQL!' AS xabar;
xabar
--------------------
Salom, PostgreSQL!
(1 row)
AS xabar - bu ustunga nom berish. Usiz ustun nomi
?column? bo'lib chiqadi.
Hisob-kitob ham shu yerda bajariladi:
SELECT 2 + 2 AS yigindi, 10 / 4 AS butun_bolish, 10.0 / 4 AS aniq_bolish;
yigindi | butun_bolish | aniq_bolish
---------+--------------+--------------------
4 | 2 | 2.5000000000000000
(1 row)
Ikkinchi ustunga diqqat qiling: 10 / 4 2 berdi, 2.5
emas.
PostgreSQL da ikkita butun son bo'linsa, natija ham butun son bo'ladi. Kasr qismi shunchaki tashlanadi.
| Ifoda | Natija | Nima uchun |
|---|---|---|
10 / 4 | 2 | ikkalasi ham butun son |
10.0 / 4 | 2.5000... | biri kasr - natija ham kasr |
10::numeric / 4 | 2.5000... | turni ochiq ko'rsatdik |
Bu xato hisobotlarda juda ko'p uchraydi: foizni hisoblaganda
sotilgan / jami * 100 yozilsa, natija deyarli har doim
nol chiqadi.
Yechim oddiy: bo'linuvchini kasr turiga o'tkazing.
Matn ustida ishlaydigan funksiyalar ham bor:
SELECT upper('husanboy') AS katta, length('Toshkent') AS uzunlik;
katta | uzunlik
----------+---------
HUSANBOY | 8
(1 row)
Nima uchun aynan PostgreSQL? #
Tanlov har doim vazifaga bog'liq, lekin umumiy manzara shunday:
| Xususiyat | PostgreSQL | Ko'p boshqa bazalar |
|---|---|---|
| Litsenziya | Ochiq, bepul, cheklovsiz | Turlicha |
| JSON qo'llab-quvvatlash | Indekslanadigan JSONB | Ko'pincha oddiy matn |
| Kengaytirish | O'z turlari, funksiyalari, indekslari | Odatda yo'q |
| Standartga rioya | Juda yuqori | O'rtacha |
| Murakkab so'rovlar | Oyna funksiyalari, rekursiya, LATERAL | Qisman |
Har doim eng kuchli vositani tanlash to'g'ri emas.
| Holat | Yaxshiroq tanlov |
|---|---|
| Mobil ilova ichidagi kichik baza | SQLite |
| Faqat kesh | Redis |
| Bir necha kishilik oddiy sayt | SQLite yoki MySQL ham yetarli |
PostgreSQL ning kuchi murakkablik oshganda ko'rinadi: ko'p foydalanuvchi, murakkab so'rovlar, ma'lumot butunligi muhim bo'lgan joyda.
SELECTbilan o'z ismingizni ekranga chiqaring.- Unga
ASorqali ustun nomi bering. 100 / 3va100.0 / 3natijalarini solishtiring.- Farq nima uchun paydo bo'lganini yozing.
7 / 2ni kasr natija beradigan qilib qayta yozing.lower()funksiyasi bilan katta harfli matnni kichraytiring.length()bilan o'z shahringiz nomining uzunligini toping.- INGRES, POSTGRES va PostgreSQL nomlari ketma-ketligini yozing.
- 1995-yilda loyihaga qanday muhim o'zgarish kiritilganini ayting.
- O'z loyihangiz uchun PostgreSQL mos keladimi - asoslab yozing.
Xulosa #
- PostgreSQL - obyekt-relyatsion baza: jadvallar ustiga kengaytirish imkoni qo'shilgan.
- Loyihani 1986-yilda Berklida Maykl Stounbreyker boshlagan.
- U bundan oldin xuddi shu joyda INGRES bazasini yaratgan edi.
- Nomi post-Ingres dan kelib chiqqan: "Ingresdan keyingi".
- 1995-yilda Endryu Yu va Jolli Chen loyihaga SQL ni qo'shishdi.
- 1996-yilda nom PostgreSQL ga o'zgardi va loyiha keng tarqaldi.
- Stounbreyker 2014-yilda Tyuring mukofotini oldi.
- Bazaning egasi yo'q - uni butun dunyo jamoasi rivojlantiradi.
- Ikkita butun son bo'linsa, natija ham butun son bo'ladi - bu klassik tuzoq.
- PostgreSQL bitta bazada JSON, qidiruv va geografik ma'lumotni ham qamraydi.
Keyingi bo'limda psql bilan yaqindan tanishamiz va bazaga ulanishni o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.