Database என்றால் என்ன? செயலிகள் உருவாக்குபவர்களுக்கான வழிகாட்டி
Database என்பது ஒரு செயலி சேமிக்கும், படிக்கும் தகவலின் ஒழுங்கமைக்கப்பட்ட களஞ்சியம் — அதன் பயனர்கள், ஆர்டர்கள், முன்பதிவுகள், செய்திகள். உலாவியின் tab-இல் மட்டும் வைக்கப்படும் தகவல் போலல்லாமல், database-இல் உள்ள தரவு புதுப்பித்த பிறகும் மறுதொடக்கத்துக்குப் பிறகும் இருக்கும்; செயலியைப் பயன்படுத்தும் அனைவரும் ஒரே பதிவுகளைப் பார்ப்பார்கள். பெரும்பாலான databases தரவை விரிதாளின் தாள்கள் போன்ற tables-ஆக ஒழுங்கமைக்கின்றன; ஆனால் தரவு ஒத்திசைவாக இருக்க கடுமையான விதிகளுடன்.
AI கருவிகளுடன் உருவாக்கும்போது இது ஏன் முக்கியம்
AI-உடன் உருவாக்குபவர்களுக்கு மிகவும் பொதுவான ஆச்சரியம்: முடிந்துவிட்டது போலத் தோன்றும், ஆனால் எல்லாவற்றையும் மறக்கும் செயலி. ஒரு வாடிக்கையாளரைச் சேர்க்கிறீர்கள், பக்கத்தைப் புதுப்பிக்கிறீர்கள், அவர் போய்விட்டார். அதற்கு காரணம் பொதுவாக செயலி தரவை database-இல் அல்ல, browser நினைவகத்தில் வைத்திருந்தது.
நீங்கள் உணர்ந்தாலும் உணராவிட்டாலும், மிக முக்கியமான பல முடிவுகள் database-இல்தான் இருக்கின்றன:
- நீங்கள் எதைப் பதிவு செய்கிறீர்கள். ஒரு முன்பதிவின் நிலையை (status) சேமிக்கவில்லை என்றால், எவை ரத்து செய்யப்பட்டன என்று காட்ட முடியாது.
- விஷயங்கள் எப்படி இணைகின்றன. ஒரு வாடிக்கையாளருக்கு பல முன்பதிவுகள் இருக்கலாமா, ஒரு முன்பதிவுக்குப் பல சேவைகள் இருக்கலாமா என்பது முழு செயலியையும் வடிவமைக்கிறது.
- யார் எதைப் பார்க்கலாம். பெரும்பாலான தனியுரிமைத் தவறுகள், பயனர் எந்தப் பதிவுகளைப் படிக்கலாம் என்பதைப் பற்றியவை.
நீங்களே database-ஐ வடிவமைக்க வேண்டியதில்லை. ஆனால் அடிப்படைகளைப் புரிந்துகொண்டால், உங்கள் தரவை தெளிவாக விவரிக்கலாம், பிரச்சினைகளை ஆரம்பத்திலேயே கண்டறியலாம்.
ஒரு அன்றாட ஒப்புமை
ஒரு சிறிய அலுவலகத்தின் நன்கு நிர்வகிக்கப்பட்ட கோப்பு அலமாரியை நினைத்துப் பாருங்கள்.
ஒவ்வொரு இழுப்பறையிலும் ஒரு வகை விஷயம் இருக்கும்: ஒன்று வாடிக்கையாளர்களுக்கு, ஒன்று சந்திப்புகளுக்கு, ஒன்று விலைப்பட்டியல்களுக்கு. ஒவ்வொரு இழுப்பறைக்குள்ளும் ஒவ்வொரு கோப்பும் ஒரே வடிவத்தைப் பின்பற்றி, ஒரே புலங்களை நிரப்பியிருக்கும். ஒவ்வொரு கோப்புக்கும் ஒரு தனித்த குறிப்பு எண் இருக்கும்; ஒரு விலைப்பட்டியல் ஒரு வாடிக்கையாளருக்கு உரியதாக இருந்தால், அந்த வாடிக்கையாளரின் முழுக் கோப்பையும் நகலெடுப்பதற்குப் பதிலாக, விலைப்பட்டியல் கோப்பு அவரது எண்ணைக் குறிப்பிடும்.
அதுதான் relational database. இழுப்பறைகள் tables, கோப்புகள் rows, புலங்கள் columns, குறிப்பு எண்கள் primary keys, இன்னொரு கோப்பைச் சுட்டும் குறிப்புகள் foreign keys. ஒரு நல்ல அலுவலக மேலாளர் விதிகளையும் அமல்படுத்துகிறார் — தேதி இல்லாமல் சந்திப்பு இல்லை, ஒரே எண்ணில் இரண்டு வாடிக்கையாளர்கள் இல்லை — database செய்வதைப் போலவே.
ஒரு வேலை செய்யப்பட்ட எடுத்துக்காட்டு: ஒரு முடிவெட்டும் நிலையத்தின் முன்பதிவு செயலி
ஒரு முடிவெட்டும் நிலையத்துக்கு முன்பதிவு தளம் உருவாக்க AI-யிடம் கேட்கிறீர்கள் என்று வைத்துக்கொள்ளுங்கள். நியாயமான database-இல் நான்கு tables இருக்கும்.
services
| id | name | duration_minutes | price |
|---|---|---|---|
| 1 | Haircut | 45 | 40.00 |
| 2 | Colour | 90 | 95.00 |
staff
| id | name | |
|---|---|---|
| 1 | Sara | sara@example.com |
| 2 | Omar | omar@example.com |
customers
| id | name | phone | |
|---|---|---|---|
| 101 | Lena Park | lena@example.com | 555-0100 |
bookings
| id | customer_id | service_id | staff_id | starts_at | status |
|---|---|---|---|---|---|
| 5001 | 101 | 1 | 2 | 2026-10-03 14:00 | confirmed |
bookings tableஐ கவனியுங்கள். ஒவ்வொரு முன்பதிவிலும் Lena-வின் பெயரையும் தொலைபேசி எண்ணையும் நகலெடுக்கவில்லை; customer_id = 101 என்று மட்டும் சேமிக்கிறது. Lena தன் தொலைபேசி எண்ணை மாற்றினால், அது ஒரே இடத்தில் மாறும்; ஒவ்வொரு முன்பதிவும் புதிய எண்ணைக் காட்டும். இதுதான் relational database-இன் அடிப்படைக் கருத்து: ஒவ்வொரு உண்மையையும் ஒரே முறை சேமியுங்கள், அதற்கு இணையுங்கள்.
அதே அமைப்பு பயனுள்ள கேள்விகளுக்கும் பதில் தரும்:
- "வெள்ளிக்கிழமை Omar-க்கு எந்த நேரங்கள் காலியாக உள்ளன?" — அன்று Omar-இன் முன்பதிவுகளைப் பாருங்கள்.
- "இந்த மாதம் colour சேவைகள் எவ்வளவு வருமானம் ஈட்டின?" — bookings-ஐ services உடன் இணைத்து விலைகளைக் கூட்டுங்கள்.
- "90 நாட்களாக முன்பதிவு செய்யாத வாடிக்கையாளர்கள் யார்?" — customers-ஐ அவர்களின் கடைசி முன்பதிவுடன் ஒப்பிடுங்கள்.
பொதுவான சொற்கள் விளக்கம்
| சொல் | பொருள் |
|---|---|
| Table | ஒரே வகையான பதிவுகளின் தொகுப்பு, எடுத்துக்காட்டாக வாடிக்கையாளர்கள் அல்லது முன்பதிவுகள். |
| Row (பதிவு) | ஒரு table-இன் ஒரு உருப்படி — ஒரு வாடிக்கையாளர், ஒரு முன்பதிவு. |
| Column (புலம்) | ஒவ்வொரு row-விலும் இருக்கும் ஒரு தகவல் பகுதி, எடுத்துக்காட்டாக மின்னஞ்சல் அல்லது விலை. |
| Primary key | ஒவ்வொரு row-க்கும் உள்ள தனித்த ID; பொதுவாக ஒரு எண் அல்லது சீரற்ற சரம். |
| Foreign key | இன்னொரு table-இன் row-ஐ சுட்டும் நெடுவரிசை, எடுத்துக்காட்டாக bookings-இல் customer_id. |
| Schema | ஒட்டுமொத்த வடிவமைப்பு: என்னென்ன tables உள்ளன, அவற்றின் நெடுவரிசைகள், அவை எப்படி இணைகின்றன. |
| Query | தரவைப் படிக்க அல்லது மாற்ற ஒரு கோரிக்கை, எடுத்துக்காட்டாக "நாளைக்கான அனைத்து முன்பதிவுகளும்." |
| SQL | Structured Query Language, relational databases-க்கான நிலையான மொழி. |
| Migration | Schema-வில் ஒரு மாற்றம், எடுத்துக்காட்டாக ஒரு நெடுவரிசை சேர்ப்பது — சேமித்து மீண்டும் செய்யக்கூடியது. |
| Index | ஒரு நெடுவரிசையில் தேடலை வேகமாக்கும் தேடல் அமைப்பு; புத்தகத்தின் அட்டவணை போல. |
| CRUD | Create, Read, Update, Delete — செயலிகள் தரவில் செய்யும் நான்கு அடிப்படைச் செயல்கள். |
| Backup | தவறு நடந்தால் மீட்டெடுக்கக்கூடிய தரவின் நகல். |
Databases-இன் வகைகள்
| வகை | தரவை எப்படி சேமிக்கிறது | எடுத்துக்காட்டுகள் | பயன்படும் இடம் |
|---|---|---|---|
| Relational (SQL) | நிலையான நெடுவரிசைகளும் அவற்றுக்கிடையே உறவுகளும் கொண்ட tables | Postgres, MySQL, SQLite | பெரும்பாலான வணிக செயலிகள்: முன்பதிவுகள், கடைகள், CRM, SaaS |
| Document (NoSQL) | நெகிழ்வான JSON போன்ற ஆவணங்கள் | MongoDB, Firestore | பதிவுக்குப் பதிவு வடிவம் பெரிதும் மாறுபடும் தரவு |
| Key-value | ஒரு key-இன் கீழ் சேமிக்கப்படும் மதிப்பு | Redis | Cache, sessions போன்ற குறுகிய கால தரவு |
ஒரு தொழில்முனைவோர் அல்லது சிறு வணிகம் முதலில் உருவாக்கும் பெரும்பாலானவற்றுக்கு, relational database பாதுகாப்பான இயல்புநிலை.
Database செயலியில் எங்கே அமர்கிறது
பார்வையாளர்கள் database-ஐ நேரடியாகத் தொடர்புகொள்வதில்லை. அவர்களின் உலாவியில் உள்ள பக்கம் (frontend) தரவுக்காக உங்கள் சர்வரிடம் (backend) கேட்கிறது, பொதுவாக API வழியாக. சர்வர் கேட்பவர் யார், அவருக்கு அனுமதி உண்டா என்று சரிபார்த்து, பின்னர் database-ஐ வினவி, அந்த நபர் பார்க்க வேண்டியதை மட்டும் திருப்பி அனுப்புகிறது.
அந்த நடுப் படி முக்கியமானது. உலாவி database-ஐ முழு அணுகலுடன் நேரடியாக வினவ முடிந்தால், யார் வேண்டுமானாலும் developer tools-ஐத் திறந்து எல்லாவற்றையும் படிக்கலாம்.
பொதுவான தவறுகளும் தவறான கருத்துகளும்
- தரவை browser-இல் மட்டும் வைப்பது. Browser சேமிப்பகம் (localStorage போன்றவை) ஒரே சாதனத்தில், ஒரே browser-இல் இருக்கும். நினைவில் வைக்கப்படும் வடிகட்டிக்கு அது சரி; ஆர்டர்களுக்குப் பொருந்தாது.
- எல்லாவற்றையும் ஒரே table-இல் திணிப்பது. ஒவ்வொரு வரியிலும் வாடிக்கையாளரின் பெயர், தொலைபேசி, சேவை விலையை நகலெடுக்கும் ஒரே "bookings" table விரைவில் ஒத்திசைவை இழக்கும்.
- கடவுச்சொற்களை எளிய உரையாகச் சேமிப்பது. கடவுச்சொற்கள் hash செய்யப்பட வேண்டும், படிக்கக்கூடிய வடிவில் ஒருபோதும் சேமிக்கப்படக்கூடாது. authentication என்றால் என்ன பார்க்கவும்.
- தரவுக்கு விதிகள் இல்லாதது. தேவையான புலங்களும் தனித்தன்மை விதிகளும் இல்லையென்றால், தேதி இல்லாத முன்பதிவுகளும் நகல் வாடிக்கையாளர்களும் வரும்.
- நீக்குவதைப் பற்றி மறப்பது. ஒரு வாடிக்கையாளரை நீக்கினால் அவரது முன்பதிவுகளும் நீக்கப்பட வேண்டுமா, வைக்கப்பட வேண்டுமா, அல்லது தடுக்கப்பட வேண்டுமா என்று முடிவு செய்யுங்கள்.
- பரிசோதனைக்கு நேரடித் தரவைப் பயன்படுத்துவது. ஆபத்தான மாற்றங்களை முதலில் பாதுகாப்பான இடத்தில் சோதியுங்கள்; காப்பு பிரதிகளை வைத்திருங்கள்.
- விரிதாளை எப்போதும் database ஆகக் கருதுவது. தொடக்கத்துக்கு விரிதாள்கள் சிறந்தவை, ஆனால் பலர் ஒரே நேரத்தில் பயன்படுத்தும்போதும் அனுமதிகளிலும் சிரமப்படும். விரிதாளை செயலியாக மாற்றுவது எப்படி பார்க்கவும்.
AI கருவியிடம் என்ன கேட்க வேண்டும்
- "இதை browser-இல் அல்ல, database-இல் சேமியுங்கள். எந்த tables உருவாக்குவீர்கள் என்று சொல்லுங்கள்."
- "Schema-வை ஒரு எளிய அட்டவணையாகக் காட்டுங்கள்: ஒவ்வொரு table, அதன் நெடுவரிசைகள், அவை எப்படி இணைகின்றன."
- "ஒரு வாடிக்கையாளருக்கு பல முன்பதிவுகள் இருக்கலாம்; ஒவ்வொரு முன்பதிவுக்கும் சரியாக ஒரு சேவையும் ஒரு ஊழியரும் இருப்பார்கள்."
- "வாடிக்கையாளர்களுக்கு மின்னஞ்சல் கட்டாயமானதும் தனித்ததுமாக இருக்கட்டும்."
- "ஒரே ஊழியருக்கான இரண்டு முன்பதிவுகள் ஒன்றோடொன்று மேலெழுவதைத் தடுங்கள்."
- "உள்நுழைந்த உரிமையாளர் மட்டுமே எல்லா முன்பதிவுகளையும் படிக்கலாம்; வாடிக்கையாளர்கள் தங்களுடையதை மட்டும் பார்க்கலாம். இதை சர்வரில் அமல்படுத்துங்கள்."
- "ஒரு சேவையை நீக்கும்போது கடந்த முன்பதிவுகளை நீக்காதீர்கள் — அதற்குப் பதிலாக சேவையை செயலற்றதாகக் குறியுங்கள்."
Mythex-இல் Databases
செயலிக்கு தரவைச் சேமிக்க வேண்டியிருக்கும்போது, Mythex திட்டத்தில் ஒரு பிரத்யேக Postgres database-ஐச் சேர்க்கிறது — chat-இல் கேட்கலாம் ("காத்திருப்பு பட்டியல் பதிவுகளை database-இல் சேமியுங்கள்") அல்லது /database கட்டளையைப் பயன்படுத்தலாம். இணைப்பு விவரங்கள் தானாக செயலிக்கு வழங்கப்படும், tables-ஐ முகவர் உருவாக்கும். ஐந்து நிமிடம் செயலற்று இருந்தால் database தூங்கும், அடுத்த கோரிக்கையில் விழித்தெழும்; வெளியிட்ட பயன்பாட்டுக்கு, அது விழித்திருந்த நேரத்துக்கு கட்டணம் வசூலிக்கப்படும், கட்டமைப்பதற்கான அதே credit இருப்பிலிருந்து. இது Free மற்றும் Pro திட்டங்களில் கிடைக்கிறது. விவரங்களுக்கு database ஆவணங்கள் பார்க்கவும்; தரவு சார்ந்த தொடக்கப் புள்ளிகளுக்கு செயலி வார்ப்புருக்கள் உதவும்.
கேள்விகள்
எளிய சொற்களில் database என்றால் என்ன?
Database என்பது பயனர்கள், ஆர்டர்கள், முன்பதிவுகள் போன்ற தகவல்களை ஒழுங்கமைத்து வைத்திருக்கும் களஞ்சியம்; செயலி அதில் சேமிக்கவும் படிக்கவும் முடியும். உலாவித் தாவலில் மட்டும் வைக்கப்படும் தரவைப் போலல்லாமல், அது புதுப்பித்த பிறகோ, மறுதொடக்கத்துக்குப் பிறகோ, வேறு சாதனத்திலிருந்து செயலியைத் திறக்கும்போதோ இருக்கும்.
விரிதாள் (spreadsheet) ஒரு database-ஆ?
விரிதாளிலும் அதே வகைத் தரவை வைக்கலாம், ஆனால் அது செயலிகளுக்காக கட்டப்படவில்லை. உண்மையான database ஒவ்வொரு நெடுவரிசையிலும் என்ன இருக்கலாம் என்ற விதிகளை அமல்படுத்துகிறது, அட்டவணைகளை நம்பகமாக இணைக்கிறது, ஒரே நேரத்தில் பலர் எழுதுவதைக் கையாளுகிறது, யார் எதைப் படிக்கலாம் என்பதையும் கட்டுப்படுத்துகிறது.
SQL மற்றும் NoSQL databases இடையே என்ன வேறுபாடு?
Postgres, MySQL போன்ற SQL (relational) databases தரவை வரையறுக்கப்பட்ட நெடுவரிசைகளுடன் கூடிய tables-ஆகவும், அவற்றுக்கிடையேயான உறவுகளுடனும் சேமிக்கின்றன. MongoDB போன்ற NoSQL databases மேலும் நெகிழ்வான ஆவணங்களைச் சேமிக்கின்றன. பெரும்பாலான வணிக செயலிகள் — முன்பதிவுகள், CRM, கடைகள் — relational மாதிரிக்கு நன்கு பொருந்துகின்றன.
என் செயலிக்கு database தேவையா?
பயனர்கள் உள்ளிடும் எதையாவது — பதிவுகள், ஆர்டர்கள், செய்திகள், அமைப்புகள் — நினைவில் வைத்து பின்னர் காட்டவோ வேறொருவருக்குக் காட்டவோ வேண்டுமென்றால், ஆம். தரவைச் சேமிக்கும் படிவங்கள் இல்லாத, தகவல் மட்டும் தரும் இணையதளத்துக்கு பொதுவாக தேவையில்லை.