Postgres деген не? Көптеген қолданбаның дерекқоры түсіндіріледі
Postgres (ресми атауы PostgreSQL) — тегін, ашық бастапқы кодты реляциялық дерекқор: деректерді жолдар мен бағандардан тұратын кестелерде сақтайтын, кестелерді бір-бірімен байланыстыратын және олар туралы сұрақтарға SQL деп аталатын тілмен жауап беретін бағдарлама. Ол сенімділігімен, деректердің дұрыстығын қатаң сақтауымен және қарапайым тізімнен үлкен компания жазбаларына дейінгі кез келген нәрсені өңдей алатын икемділігімен танымал. Көптеген веб-қолданбалар, және оларды хосттайтын көптеген қызмет, осы дерекқорға негізделген.
AI-мен құрастырғанда Postgres неге маңызды
AI құрастырушысы жобаңызға «дерекқор» қосқанда, ол Postgres болуы мүмкін. Оны пайдалану үшін SQL жазудың қажеті жоқ, бірақ аздап түсіну көп көмектеседі:
- Деректерді дерекқорға қажет пішінде сипаттай аласыз. «Клиенттердің көп тапсырысы бар; әр тапсырыста көп тауар бар» деген сөйлем кестелерге тікелей аударылады.
- Керек қорғанысты сұрай аласыз. Postgres дұрыс емес деректерді өз бетінше қабылдамауы мүмкін — қайталанған электрондық пошта, жоқ клиентке тапсырыс — егер AI ережелерін орнатса.
- Не жасалғанын оқи аласыз. Кесте аттары, бағандар және байланыстар кестелер көрушісінде оңай тексеріледі, тіпті кодқа қол тигізбеген болсаңыз да.
Күнделікті салыстыру: қатаң мұрағат кеңсесі
Әр түрге арналған шкафы бар мұрағат кеңсесін елестетіңіз — бір шкаф клиенттерге, бір шкаф тапсырыстарға, бір шкаф өнімдерге арналған. Әр шкафтың қалтасындағы әр карта бірдей басылған жолақтарды толтырады. Әр картаның бірегей нөмірі бар, ал тапсырыс картасы клиенттің мәліметтерін қайталамайды; ол жай «клиент №214» деп көрсетеді, клиент шкафына сілтеме жасап.
Кеңсе қатаң. Бар емес клиентке сілтеген тапсырысты қабылдамайды. Керек жолақ бос қалдырылса картаны қабылдамайды. Ал сізден бір есептен екіншісіне ақша аударуды сұрасаңыз, не екі жағын да орындайды, не ешқайсысын — ешқашан тек біреуін.
Бұл кеңсе — Postgres. Шкаф — кесте, жолақтар — бағандар, әр карта — жол, ал «клиент №214» сілтемесі — сыртқы кілт (foreign key).
Postgres не жақсы істейді
| Мүмкіндік | Қарапайым тілмен мағынасы |
|---|---|
| Кестелер және байланыстар | Деректер бір-біріне сілтейтін кестелерде тұрады, сондықтан ештеңе бес жерде көшірілмейді |
| SQL | Сұрақтар қоюдың стандартты тілі: «өткен айдағы төленбеген барлық тапсырыс, ең жаңасынан бастап» |
| Транзакциялар (ACID) | Өзгерістер тобы не толық орындалады, не мүлде орындалмайды — тіпті сервер жартысында құласа да |
| Шектеулер (constraints) | Дерекқордың өзі орындайтын ережелер: міндетті өрістер, бірегей электрондық пошта, кестелер арасындағы дұрыс сілтемелер |
| Индекстер | Кестелер өскен сайын іздеу жылдам болуы үшін іздеу жолдары |
| JSONB | Тұрақты құрылым сәйкес келмегенде, бағанда икемді, құжат тәрізді деректерді сақтау |
| Толық мәтіндік іздеу | Қарапайым жағдайлар үшін бөлек іздеу қызметінсіз мәтін өрістеріндегі сөздерді іздеу |
| Кеңейтімдер | Қосымшалар, мысалы карталар мен орындар үшін PostGIS, немесе AI эмбеддингтерін сақтау үшін pgvector |
| Жол деңгейіндегі қауіпсіздік | Белгілі бір пайдаланушы қандай жолдарды көре алатынын дерекқор ішіндегі ережелер |
Postgres 1980 жылдары Калифорния университетінде (Беркли) зерттеу жобасы ретінде басталды, ал 1990 жылдардан бері жаһандық қауымдастық оны ашық түрде дамытып келеді. Осы ұзақ тарих оны жиі әдепкі таңдау етеді: ол жақсы құжатталған, кең қолдау табады, және әр ірі бұлттық провайдер оның басқарылатын нұсқасын ұсынады.
Нақты мысал: электрондық кестені кестелерге айналдыру
Айталық, шағын кейтеринг бизнесін жүргізесіз және барлығын бір электрондық кестеде бақылайсыз: әр жол — іс-шара, клиенттің аты, телефоны мен электрондық поштасы, күні, мәзір элементтері және бағасы бар.
Мәселелер тез пайда болады. Бір клиент алты жолда екі түрлі телефон нөмірімен кездеседі. Мәзір элементтері бір ұяшыққа «канапе x40, салат x2» деп жазылған, сондықтан осы айда қанша канапе жасағаныңызды санай алмайсыз.
Postgres-те сол ақпарат төрт кестеге айналады:
| Кесте | Бағандар | Ескерту |
|---|---|---|
| clients | id, name, phone, email | Электрондық пошта бірегей болуы керек |
| events | id, client_id, date, venue, status | client_id нақты клиентке сәйкес келуі керек |
| menu_items | id, name, unit_price | Әр тағам үшін бір жол |
| event_items | event_id, menu_item_id, quantity | Іс-шараларды тағамдармен байланыстырады, санымен |
Енді клиенттің телефоны бір жерде тұрады. «Наурызда қанша канапе жасадық?» — бір SQL сұрауы. Ал іс-шараны элементтерімен бірге жазғанда транзакция бір жартысы сақталған іс-шараның қалмауын қамтамасыз етеді.
Бұл — адамдардың AI-дан «электрондық кестемнен қолданба жаса» деп сұрағанда өткізіп жіберетін қадамы. Электрондық кестені қолданбаға айналдыру нұсқаулығы оны толығырақ қарастырады.
Негізгі терминдер
- Кесте, жол, баған: бір түрдегі нәрсе, оның бір данасы, ол туралы бір ақпарат.
- Негізгі кілт (primary key): әр жолдың бірегей идентификаторы, әдетте
id. - Сыртқы кілт (foreign key): басқа кестедегі жолға сілтейтін баған, мысалы
client_id. - Схема: барлық кестелер мен бағандардың дизайны.
- Миграция: схемаға жасалған сақталған, қайталанатын өзгеріс, мысалы «events кестесіне
venueбағанын қос». - Сұрау (query): SQL-мен жазылған сұрақ немесе нұсқау.
- Қосылу жолы (connection string): серверіңіздің дерекқорға жету мекенжайы мен құпиясөзі. Бұл құпия — айнымалылар мен құпиялар туралы қараңыз.
- Басқарылатын Postgres: Postgres-ті сіз үшін іске қосатын, сақтық көшірме жасайтын және жаңартатын қызмет.
Осы кестелерде әр қолданба орындайтын күнделікті әрекеттер — жасау, оқу, жаңарту, жою — үшін CRUD деген не туралы қараңыз.
Жиі кездесетін қателер мен түсініспеушіліктер
- Бір үлкен кесте. Электрондық кестені бағанды бағанмен көшіру сол қайталану мәселелеріне әкеледі. Қайталанатын нәрселерді өз кестелеріне бөліңіз.
- Тізімдерді бір мәтін өрісінде сақтау. Бір бағандағы «канапе x40, салат x2» санауға немесе іздеуге болмайды. Байланыстыратын кесте пайдаланыңыз.
- Шектеулердің болмауы. «Электрондық пошта бірегей болуы керек» немесе «әр іс-шараның клиенті болуы керек» деген ережелерсіз дұрыс емес деректер байқалмай кіреді де, айлар өткен соң көрінеді.
- Өндірісте дерекқорды қолмен өзгерту. Схема өзгерістерін миграция ретінде сұраңыз, сонда өзгеріс жазылады және қайталанып орындалуы мүмкін.
- Браузердің дерекқормен тікелей сөйлесуіне рұқсат беру. Фронтенд рұқсаттарды тексеретін бэкенд арқылы жүруі керек. Дерекқор құпиясөзі беттің кодында ешқашан болмауы керек.
- «Postgres тек ірі компанияларға арналған». Ол 50 жолдық күту тізімі үшін де бірдей жақсы жұмыс істейді, және өскен сайын одан көшудің қажеті болмайды.
- Дерекқор сақтық көшірме деп ойлау. Ол деректерді сақтайды; бірақ оларды өшіруден автоматты түрде қорғамайды. Хостингіңіз қандай сақтық көшірмелерді ұсынатынын тексеріңіз.
AI құрастырушысынан не сұрау керек
- «Деректерді дерекқорда сақтаңыз. Кестелер: … мына өрістермен: … Әр [тапсырысты] [клиентке] байланыстырыңыз.»
- «Клиенттердегі электрондық поштаны бірегей етіңіз. Мына өрістер міндетті болсын. Клиентсіз тапсырысқа рұқсат етпеңіз.»
- «Схеманың әр өзгерісі үшін миграцияларды пайдаланыңыз.»
- «Ең жиі орындайтын іздеулерге индекстер қосыңыз: клиент пен күн бойынша тапсырыстар.»
- «Дерекқорға барлық қатынау серверден өтеді. Қосылу жолын айнымалыларда сақтаңыз.»
Дерекқор туралы мүлде жаңа болсаңыз, алдымен дерекқор деген не туралы оқып, содан кейін осы жерге қайтыңыз. Толық стек қолданба дерекқордың фронтенд пен бэкенд жанында қайда орналасатынын көрсетеді.
Mythex-тегі Postgres
Mythex дерекқор қажет әр жобаға өз жеке Postgres дерекқорын береді. Оны бапталмайсыз: чатта сұраңыз («күту тізімінің электрондық поштасын дерекқорға сақта») немесе /database командасын пайдаланыңыз, Mythex оны қосады, қосылу мәліметтерін қолданбаңызға енгізеді және кестелерді сіз үшін жасай алады. Жарияланған қолданбаның дерекқоры бес минут бос тұрса ұйықтайды және келесі сұраумен оянады; сіз тек ол шынында оянып тұрған уақыт үшін ақы төлейсіз, құрастыру кезіндегідей кредиттер балансынан. Толық мәлімет дерекқор құжаттамасында, ал деректерге негізделген қолданбаларды бақылау тақтасы үлгілерінен көруге болады.
Сұрақтар
Postgres PostgreSQL-мен бірдей ме?
Иә. PostgreSQL — ресми атауы, ал Postgres — ортақ қысқа атауы; екеуі де бір ашық бастапқы кодты реляциялық дерекқорды білдіреді.
Postgres тегін бе?
Иә. PostgreSQL рұқсаттық PostgreSQL License астында ашық бастапқы кодты, сондықтан оны коммерциялық өнімдерде қоса алғанда тегін пайдалануға болады. Сіз тек оны іске қосатын серверлер немесе басқарылатын қызметке ақы төлейсіз.
Postgres мен MySQL арасында қандай айырмашылық бар?
Екеуі де тегін, реляциялық SQL дерекқорлар және көп қолданба үшін жарайды. Postgres деректердің тұтастығын қатаң сақтауымен, JSONB және массивтер сияқты бай деректер түрлерімен және үлкен кеңейтімдер экожүйесімен танымал; MySQL қарапайымдылығымен және веб хостингтегі ұзақ тарихымен танымал.
Postgres шағын қолданбаға жарай ма?
Иә. Ол бір кестелі күту тізіміне де, үлкен өндірістік жүйелерге де жақсы жұмыс істейді, сондықтан қолданба өскенде дерекқорды ауыстыру қажет болмайды. Басқарылатын қызметтер оны дерекқор әкімшісінсіз пайдалануды жеңілдетеді.