Postgres என்றால் என்ன? பல ஆப்களுக்குப் பின்னால் உள்ள தரவுத்தளம், விளக்கம்
Postgres (அதிகாரப்பூர்வமாக PostgreSQL) ஒரு இலவச, திறந்த மூல relational தரவுத்தளம்: ஒரு ஆப்பின் தரவை வரிசைகளும் நெடுவரிசைகளும் கொண்ட அட்டவணைகளில் சேமித்து, அந்த அட்டவணைகளை ஒன்றோடொன்று இணைத்து, SQL என்ற மொழியில் கேள்விகளுக்குப் பதில் சொல்லும் நிரல். நம்பகமானதாகவும், தரவைச் சரியாக வைத்திருப்பதில் கண்டிப்பானதாகவும், ஒரு கையொப்பப் பட்டியல் முதல் பெரிய நிறுவனத்தின் பதிவுகள் வரை எதையும் கையாளும் அளவுக்கு நெகிழ்வானதாகவும் அறியப்படுகிறது. பல வலை ஆப்களும், அவற்றை ஹோஸ்ட் செய்யும் பல சேவைகளும் இதன் மேல் கட்டப்பட்டுள்ளன.
AI மூலம் கட்டும்போது இது ஏன் முக்கியம்
ஒரு AI ஆப் பில்டர் உங்கள் திட்டத்தில் “ஒரு தரவுத்தளத்தைச்” சேர்க்கும்போது, அது Postgres ஆக இருக்க நல்ல வாய்ப்பு உண்டு. அதைப் பயன்படுத்த நீங்கள் SQL எழுத வேண்டியதில்லை; ஆனால் சிறிய புரிதலும் நிறைய உதவும்:
- தரவுத்தளத்துக்குத் தேவையான வடிவத்தில் தரவை விவரிக்கலாம். “வாடிக்கையாளர்களுக்கு பல ஆர்டர்கள் உண்டு; ஒவ்வொரு ஆர்டரிலும் பல பொருட்கள் உண்டு” என்பது நேரடியாக அட்டவணைகளாக மாறும்.
- சரியான பாதுகாப்புகளைக் கேட்கலாம். AI விதிகளை அமைத்தால், Postgres தானாகவே மோசமான தரவை மறுக்க முடியும் — ஒரே மின்னஞ்சல் இரண்டு முறை, இல்லாத வாடிக்கையாளருக்கான ஆர்டர் போன்றவற்றை.
- AI என்ன செய்தது என்று படிக்கலாம். அட்டவணைப் பெயர்கள், நெடுவரிசைகள், உறவுகள் ஆகியவற்றை ஒரு அட்டவணை பார்வையாளரில் எளிதாகச் சரிபார்க்கலாம் — கோடைத் தொடாவிட்டாலும்.
அன்றாட உதாரணம்: மிகக் கண்டிப்பான கோப்பு அலுவலகம்
ஒவ்வொரு வகைப் பொருளுக்கும் ஒரு அலமாரி உள்ள ஒரு கோப்பு அலுவலகத்தை நினையுங்கள் — ஒன்று வாடிக்கையாளர்களுக்கு, ஒன்று ஆர்டர்களுக்கு, ஒன்று தயாரிப்புகளுக்கு. ஒரு டிராயரில் உள்ள ஒவ்வொரு அட்டையிலும் நிரப்ப ஒரே அச்சிட்ட கட்டங்கள் உள்ளன. ஒவ்வொரு அட்டைக்கும் ஒரு தனித்த எண் உண்டு; ஒரு ஆர்டர் அட்டை வாடிக்கையாளரின் விவரங்களை மீண்டும் எழுதாது; “வாடிக்கையாளர் #214” என்று மட்டும் சொல்லி வாடிக்கையாளர் டிராயரைச் சுட்டிக்காட்டும்.
எழுத்தர் கண்டிப்பானவர். இல்லாத வாடிக்கையாளரைச் சுட்டும் ஆர்டரை அவர் பதிவு செய்ய மாட்டார். தேவையான கட்டம் காலியாக இருந்தால் அட்டையை ஏற்க மாட்டார். ஒரு கணக்கு அட்டையிலிருந்து இன்னொன்றுக்கு பணம் நகர்த்தச் சொன்னால், இரண்டு பகுதிகளையும் செய்வார் அல்லது எதையும் செய்ய மாட்டார் — ஒரு பகுதியை மட்டும் ஒருபோதும் இல்லை.
அந்த எழுத்தர்தான் Postgres. டிராயர்கள் அட்டவணைகள், அச்சிட்ட கட்டங்கள் நெடுவரிசைகள், ஒவ்வொரு அட்டையும் ஒரு வரிசை, “வாடிக்கையாளர் #214” என்ற இணைப்பு ஒரு foreign key.
Postgres சிறப்பாகச் செய்வது
| அம்சம் | எளிய சொற்களில் பொருள் |
|---|---|
| அட்டவணைகளும் உறவுகளும் | தரவு ஒன்றையொன்று சுட்டும் அட்டவணைகளில் வாழ்கிறது; எனவே எதுவும் ஐந்து இடங்களில் நகலெடுக்கப்படுவதில்லை |
| SQL | கேள்விகள் கேட்பதற்கான நிலையான மொழி: “கடந்த மாதத்தின் செலுத்தப்படாத எல்லா ஆர்டர்களும், புதியவை முதலில்” |
| Transactions (ACID) | மாற்றங்களின் குழு ஒன்றாக நடக்கும் அல்லது எதுவும் நடக்காது; சர்வர் பாதியில் செயலிழந்தாலும் |
| Constraints | தரவுத்தளமே தானாக அமல்படுத்தும் விதிகள்: கட்டாய புலங்கள், தனித்த மின்னஞ்சல்கள், அட்டவணைகளுக்கு இடையே சரியான இணைப்புகள் |
| Indexes | அட்டவணைகள் வளரும்போதும் தேடல்கள் வேகமாக இருக்க உதவும் தேடல் குறுக்குவழிகள் |
| JSONB | நிலையான அமைப்பு பொருந்தாதபோது, ஆவணம் போன்ற நெகிழ்வான தரவை ஒரு நெடுவரிசையில் சேமிக்கலாம் |
| Full-text search | எளிய நிகழ்வுகளுக்கு தனி தேடல் சேவை இல்லாமல் உரைப் புலங்களில் சொற்களைத் தேடலாம் |
| Extensions | வரைபடங்களுக்கும் இடங்களுக்கும் PostGIS, AI embeddings-ஐச் சேமிக்க pgvector போன்ற கூடுதல் அம்சங்கள் |
| Row-level security | ஒரு குறிப்பிட்ட பயனர் எந்த வரிசைகளைப் பார்க்கலாம் என்ற விதிகள் தரவுத்தளத்துக்குள்ளேயே |
Postgres 1980-களில் கலிபோர்னியா பல்கலைக்கழகம், பெர்க்லியில் ஓர் ஆராய்ச்சித் திட்டமாகத் தொடங்கியது; 1990-களிலிருந்து உலகளாவிய சமூகத்தால் திறந்த முறையில் வளர்க்கப்படுகிறது. அந்த நீண்ட வரலாறுதான் இது பெரும்பாலும் இயல்புத் தேர்வாக இருப்பதற்குக் காரணம்: நன்கு ஆவணப்படுத்தப்பட்டது, பரவலாக ஆதரிக்கப்படுகிறது, ஒவ்வொரு பெரிய cloud வழங்குநரும் நிர்வகிக்கப்பட்ட பதிப்பை வழங்குகின்றனர்.
நடைமுறை உதாரணம்: ஒரு விரிதாளை அட்டவணைகளாக மாற்றுதல்
ஒரு சிறிய உணவு வழங்கும் வணிகத்தை நடத்துகிறீர்கள் என்றும், எல்லாவற்றையும் ஒரே விரிதாளில் கண்காணிக்கிறீர்கள் என்றும் வைத்துக்கொள்ளுங்கள்: ஒவ்வொரு வரியும் ஒரு நிகழ்வு — வாடிக்கையாளரின் பெயர், தொலைபேசி, மின்னஞ்சல், தேதி, மெனு பொருட்கள், விலை.
சிக்கல்கள் விரைவில் வரும். அதே வாடிக்கையாளர் ஆறு வரிசைகளில் இரண்டு வெவ்வேறு தொலைபேசி எண்களுடன் வருகிறார். மெனு பொருட்கள் ஒரே கட்டத்தில் “canapés x40, salad x2” என்று தட்டச்சு செய்யப்பட்டுள்ளன; எனவே இந்த மாதம் எத்தனை canapés செய்தீர்கள் என்று கூட்ட முடியாது.
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 | நிகழ்வுகளை உணவுகளுடன் அளவுடன் இணைக்கும் |
இப்போது ஒரு வாடிக்கையாளரின் தொலைபேசி எண் ஒரே இடத்தில் வாழ்கிறது. “மார்ச் மாதத்தில் எத்தனை canapés செய்தோம்?” என்பது ஒரே SQL கேள்வி. ஒரு புதிய நிகழ்வை அதன் பொருட்களுடன் பதிவு செய்யும்போது, ஒரு transaction பாதி பொருட்கள் மட்டும் சேமிக்கப்பட்ட நிகழ்வு ஒருபோதும் உருவாகாமல் பார்த்துக்கொள்கிறது.
“என் விரிதாளிலிருந்து ஒரு ஆப் உருவாக்கு” என்று AI-யிடம் கேட்கும்போது மக்கள் தவிர்க்கும் படி இதுதான். விரிதாளை ஆப்பாக மாற்றுவது எப்படி வழிகாட்டி இதை மேலும் விரிவாக விளக்குகிறது.
முக்கிய சொற்கள்
- Table, row, column: ஒரு வகைப் பொருள், அதன் ஒரு நிகழ்வு, அதைப் பற்றிய ஒரு தகவல்.
- Primary key: ஒவ்வொரு வரிசையின் தனித்த அடையாளம்; பொதுவாக
id. - Foreign key:
client_idபோல, இன்னொரு அட்டவணையின் வரிசையைச் சுட்டும் நெடுவரிசை. - Schema: உங்கள் எல்லா அட்டவணைகளின் மற்றும் நெடுவரிசைகளின் வடிவமைப்பு.
- Migration: schema-ல் சேமிக்கப்பட்ட, மீண்டும் இயக்கக்கூடிய மாற்றம்; எடுத்துக்காட்டாக “events-க்கு
venueநெடுவரிசை சேர்”. - Query: SQL-ல் எழுதப்பட்ட கேள்வி அல்லது அறிவுறுத்தல்.
- Connection string: உங்கள் backend தரவுத்தளத்தை அடைய பயன்படுத்தும் முகவரியும் கடவுச்சொல்லும். இது ஒரு ரகசியம் — environment variables மற்றும் secrets பாருங்கள்.
- Managed Postgres: Postgres-ஐ உங்களுக்காக இயக்கி, backup எடுத்து, புதுப்பிக்கும் சேவை.
ஒவ்வொரு ஆப்பும் இந்த அட்டவணைகளில் செய்யும் அன்றாட செயல்பாடுகளுக்கு — உருவாக்குதல், படித்தல், புதுப்பித்தல், நீக்குதல் — CRUD என்றால் என்ன பாருங்கள்.
பொதுவான தவறுகளும் தவறான புரிதல்களும்
- ஒரே ஒரு பெரிய அட்டவணை. விரிதாளின் நெடுவரிசையை நெடுவரிசையாக நகலெடுப்பது அதே நகலெடுப்புச் சிக்கல்களுக்கு இட்டுச் செல்லும். மீண்டும் வருபவற்றை தனி அட்டவணைகளாகப் பிரியுங்கள்.
- பட்டியல்களை ஒரு உரைப் புலத்தில் சேமிப்பது. ஒரே நெடுவரிசையில் “canapés x40, salad x2” என்பதை சரியாக எண்ணவோ தேடவோ முடியாது. இணைக்கும் அட்டவணையைப் பயன்படுத்துங்கள்.
- கட்டுப்பாடுகள் இல்லாமை. “மின்னஞ்சல் தனித்ததாக இருக்க வேண்டும்” அல்லது “ஒவ்வொரு நிகழ்வுக்கும் ஒரு வாடிக்கையாளர் வேண்டும்” இல்லாவிட்டால், மோசமான தரவு அமைதியாக உள்ளே வந்து மாதங்கள் கழித்து வெளிப்படும்.
- production-ல் கையால் தரவுத்தளத்தை மாற்றுதல். schema மாற்றங்களை migrations ஆகக் கேளுங்கள்; அதனால் மாற்றம் பதிவாகும், மீண்டும் செய்யவும் முடியும்.
- உலாவி நேரடியாக தரவுத்தளத்துடன் பேச அனுமதித்தல். முன்பக்கம் அனுமதிகளைச் சரிபார்க்கும் உங்கள் backend வழியாகச் செல்ல வேண்டும். தரவுத்தள கடவுச்சொல் பக்கக் கோடில் ஒருபோதும் இருக்கக்கூடாது.
- “Postgres பெரிய நிறுவனங்களுக்கு மட்டும்.” 50 வரிசைகள் கொண்ட waitlist-க்கும் அது அதே அளவு நன்றாக இயங்கும்; நீங்கள் வளரும்போது அதிலிருந்து வெளியேற வேண்டியதில்லை.
- தரவுத்தளம் ஒரு backup என்று கருதுதல். அது தரவைச் சேமிக்கிறது; அதை நீக்குவதிலிருந்து தானாக பாதுகாப்பதில்லை. உங்கள் ஹோஸ்ட் என்ன backups வழங்குகிறது என்று சரிபாருங்கள்.
உங்கள் AI-யிடம் என்ன கேட்க வேண்டும்
- “[பொருட்களை] ஒரு தரவுத்தளத்தில் சேமியுங்கள். அட்டவணைகள்: … இந்தப் புலங்களுடன்: … ஒவ்வொரு [ஆர்டரையும்] ஒரு [வாடிக்கையாளருடன்] இணையுங்கள்.”
- “வாடிக்கையாளர்களில் மின்னஞ்சலைத் தனித்ததாக ஆக்குங்கள். இந்தப் புலங்களைக் கட்டாயமாக்குங்கள். வாடிக்கையாளர் இல்லாமல் ஆர்டர் அனுமதிக்காதீர்கள்.”
- “ஒவ்வொரு schema மாற்றத்துக்கும் migrations பயன்படுத்துங்கள்.”
- “நாம் அதிகம் செய்யும் தேடல்களுக்கு indexes சேருங்கள்: வாடிக்கையாளர் வாரியாகவும் தேதி வாரியாகவும் ஆர்டர்கள்.”
- “எல்லா தரவுத்தள அணுகலும் சர்வர் வழியாகவே செல்ல வேண்டும். Connection string-ஐ environment variables-ல் வையுங்கள்.”
தரவுத்தளம் என்ற யோசனைக்கு நீங்கள் புதியவராக இருந்தால், தரவுத்தளம் என்றால் என்ன என்பதுடன் தொடங்கி, பின்னர் இங்கு திரும்புங்கள். Full-stack ஆப் தரவுத்தளம் முன்பக்கத்தோடும் backend-ஓடும் எங்கே அமர்கிறது என்று காட்டுகிறது.
Mythex-ல் Postgres
Mythex தரவுத்தளம் தேவைப்படும் ஒவ்வொரு திட்டத்துக்கும் அதற்கென ஒரு பிரத்யேக Postgres தரவுத்தளத்தைத் தருகிறது. நீங்கள் அதை அமைக்க வேண்டியதில்லை: அரட்டையில் கேளுங்கள் (“waitlist மின்னஞ்சல்களை ஒரு தரவுத்தளத்தில் சேமியுங்கள்”), அல்லது /database கட்டளையைப் பயன்படுத்துங்கள்; Mythex அதை இணைத்து, இணைப்பு விவரங்களை உங்கள் ஆப்பில் செலுத்தி, அட்டவணைகளையும் உங்களுக்காக உருவாக்க முடியும். வெளியிடப்பட்ட ஆப்பின் தரவுத்தளம் ஐந்து நிமிடம் செயலின்றி இருந்தால் உறங்கும்; அடுத்த கோரிக்கையில் எழும். நீங்கள் உண்மையில் விழித்திருந்த நேரத்துக்கு மட்டும் கட்டணம், கட்டும்போது பயன்படுத்தும் அதே credit இருப்பிலிருந்து. விவரங்களுக்கு database ஆவணங்கள் பாருங்கள்; தரவு-ஆதரவு ஆப்களைப் பார்க்க டாஷ்போர்டு டெம்ப்ளேட்டுகள் நல்ல இடம்.
கேள்விகள்
Postgres மற்றும் PostgreSQL ஒன்றா?
ஆம். PostgreSQL என்பது அதிகாரப்பூர்வ பெயர்; Postgres என்பது பொதுவான சுருக்கம். இரண்டும் ஒரே திறந்த மூல relational தரவுத்தளத்தைக் குறிக்கின்றன.
Postgres இலவசமா?
ஆம். PostgreSQL, அனுமதிக்கும் PostgreSQL License-ன் கீழ் திறந்த மூலமானது; வணிகத் தயாரிப்புகளிலும் உட்பட இலவசமாகப் பயன்படுத்தலாம். நீங்கள் அதை இயக்கும் சர்வர்களுக்கு அல்லது நிர்வகிக்கப்பட்ட சேவைக்கு மட்டும் பணம் செலுத்துகிறீர்கள்.
Postgres மற்றும் MySQL-க்கு என்ன வித்தியாசம்?
இரண்டும் இலவச, relational SQL தரவுத்தளங்கள்; பெரும்பாலான ஆப்களுக்கு இரண்டும் சரிதான். Postgres கடுமையான தரவு ஒருமைப்பாட்டுக்கும், JSONB, arrays போன்ற வளமான தரவு வகைகளுக்கும், பெரிய extension சூழலுக்கும் பெயர் பெற்றது; MySQL எளிமைக்கும் வலை ஹோஸ்டிங்கில் நீண்ட வரலாற்றுக்கும் பெயர் பெற்றது.
சிறிய ஆப்புக்கு Postgres நல்லதா?
ஆம். ஒரு அட்டவணை கொண்ட waitlist-க்கும், பெரிய production அமைப்புகளுக்கும் நன்றாக வேலை செய்கிறது; ஆப் வளரும்போது தரவுத்தளத்தை மாற்ற வேண்டியிருக்காது. நிர்வகிக்கப்பட்ட சேவைகள் தரவுத்தள நிர்வாகி இல்லாமலும் இயக்குவதை எளிதாக்குகின்றன.