Modern Applications වලට PostgreSQL තෝරගන්නේ ඇයි?
PostgreSQL කියන්නේ modern applications වල බහුලව භාවිතා කරන powerful relational Database එකක්
Database ලෝකයේ MySQL, MongoDB, Microsoft SQL Server වගේ options ගොඩක් තියෙනවා.
ඒ අතරින් modern applications හදන Developers ලා අතර ගොඩක් popular වෙලා තියෙන Database එකක් තමයි PostgreSQL.
Next.js, Node.js, Django, Supabase වගේ technologies එක්ක PostgreSQL කියන නම ඔයාට නිතරම හම්බවෙන්න පුළුවන්.
ඉතින් PostgreSQL කියන්නේ මොකක්ද?
ඇයි Developers ලා මේක තෝරන්නේ?
PostgreSQL කියන්නේ මොකක්ද?
PostgreSQL කියන්නේ open-source relational Database management system එකක්.
මේක Definition එක ටිකක් technical වගේ පේන නිසා කොටස්වලට බෙදාගෙන බලමු.
Relational Database
Relational Database එකක data store කරන්නේ tables ඇතුළේ.
Table එකක:
Columns තියෙනවා
Rows තියෙනවා
උදාහරණයක් විදිහට students table එකක් ගත්තොත්:
id | name | age | |
|---|---|---|---|
1 | Kasun | 21 | |
2 | Nimal | 22 | |
3 | Amaya | 20 |
මෙතන එක row එකකින් student කෙනෙක් represent වෙනවා.
තව table එකක් courses කියලා හිතමු.
Students
│
├── Courses
│
├── Enrolments
│
└── Paymentsමේ tables අතර relationships හදන්න පුළුවන්.
ඒක තමයි relational Database එකක මූලික අදහස.
PostgreSQL සහ SQL
PostgreSQL එක්ක data access කරන්න සහ manage කරන්න SQL (Structured Query Language) භාවිතා කරනවා.
උදාහරණයක්:
SELECT *
FROM students
WHERE age > 20;මේ Query එකෙන් PostgreSQL ට කියන්නේ:
වයස 20ට වඩා වැඩි students ලා හොයන්න.
ඒකෙන් අපිට PostgreSQL එක්ක data query කරන්න පුළුවන් කියන එක පැහැදිලි වෙනවා.
PostgreSQL කියන නම ආවේ කොහෙන්ද?
මේකත් interesting story එකක්.
PostgreSQL වල මුල් project එක හැඳින්වුණේ POSTGRES කියලා.
ඒ project එක University of California, Berkeley වලින් ආරම්භ වුණා.
පසුව SQL support එක එකතු වුණා.
ඒ නිසා project එකේ නම:
PostgreSQL
බවට වෙනස් වුණා.
Developers ලා සාමාන්යයෙන් PostgreSQL කියලා හෝ කෙටියෙන් Postgres කියලා කියනවා.
PostgreSQL කියන්නේ Tables විතරක් තියෙන Database එකක් නෙවෙයි
PostgreSQL වල තියෙන interesting දෙයක් තමයි මේක simple rows සහ columns වලට විතරක් සීමා නොවීම.
PostgreSQL එකෙන් විවිධ types වල data handle කරන්න පුළුවන්.
උදාහරණ විදිහට:
JSON / JSONB
Arrays
UUIDs
Date and time
Custom data types
Full-text search
Views
Functions
Triggers
Extensions
ඒ නිසා application එක ටිකක් complex වෙනකොටත් PostgreSQL එකෙන් ගොඩක් වැඩ කරගන්න පුළුවන්.
PostgreSQL වැඩ කරන්නේ කොහොමද?
අපි Online Shopping Application එකක් හදනවා කියලා හිතමු.
සාමාන්යයෙන් application එක මෙහෙම structure එකක් ගන්න පුළුවන්:
User
↓
Frontend
↓
Backend
↓
PostgreSQL
↓
StorageUser කෙනෙක් account එකක් create කරනකොට Backend එක PostgreSQL වෙත Query එකක් යවනවා.
උදාහරණයක්:
INSERT INTO users (name, email)
VALUES ('Kasun', 'kasun@example.com');PostgreSQL ඒ data එක store කරනවා.
පස්සේ user login වෙනකොට Backend එකට user ගේ details හොයාගන්න ඕනේ.
එතකොට:
SELECT *
FROM users
WHERE email = 'kasun@example.com';වගේ Query එකක් PostgreSQL වෙත යවන්න පුළුවන්.
PostgreSQL, matching record එක හොයාගෙන result එක Backend එකට ලබා දෙනවා.
ඒ නිසා සාමාන්යයෙන් PostgreSQL එක User එක්ක directly communicate කරන්නේ නැහැ.
ඒක application එකේ data manage කරන Backend එකට පිටුපසින් වැඩ කරනවා.
PostgreSQL සහ SQL එකම දෙයක් නෙවෙයි
කෙනෙක්ට මෙතන පොඩි confusion එකක් ඇති වෙන්න පුළුවන්.
SQL කියන්නේ language එකක්.
PostgreSQL කියන්නේ SQL භාවිතා කරන Database system එකක්.
මේක මෙහෙම මතක තියාගන්න:
SQL ↓ Database එකක් එක්ක communicate කරන්න භාවිතා කරන language එක
PostgreSQL ↓ SQL තේරුම් ගන්න Database system එක
MySQL, Microsoft SQL Server, Oracle Database වගේ systems වලත් SQL භාවිතා කරනවා.
හැබැයි ඒ හැම Database system එකකටම තමන්ගේම features සහ extensions තියෙනවා.
PostgreSQL ජනප්රිය වෙන්නේ ඇයි?
PostgreSQL ජනප්රිය වෙන්න හේතු ගොඩක් තියෙනවා.
1. Open Source
PostgreSQL open-source.
ඒ කියන්නේ source code එක publicly available සහ සාමාන්යයෙන් licensing cost එකක් නැතුව භාවිතා කරන්න පුළුවන්.
ඒ නිසා:
Students ලාට
Developers ලාට
Startups වලට
Companies වලට
Large organizations වලට
PostgreSQL use කරන්න පුළුවන්.
2. Data Integrity එක හොඳින් Maintain කරන්න පුළුවන්
Online payment system එකක් හිතන්න.
Payment එක complete වුණා කියලා Database එකේ තියෙනවා.
හැබැයි Order එක තවම unpaid කියලා තිබුණොත්?
Payment = Completed
Order = Not Paid
මේ වගේ inconsistent data ඇතිවීම application එකකට ලොකු ගැටලුවක්.
PostgreSQL වල constraints සහ transactions වගේ features නිසා data එකේ correctness සහ consistency maintain කරන්න උදව් වෙනවා.
උදාහරණයක්:
email VARCHAR(255) UNIQUEමේකෙන් එකම email address එක users දෙන්නෙක්ට use කිරීම වළක්වන්න පුළුවන්.
තව:
Primary Keys
Foreign Keys
UNIQUE constraints
NOT NULL constraints
CHECK constraints
වගේ rules දාන්න පුළුවන්.
ඒ නිසා වැරදි data Database එකට ඇතුල් වීම අඩු කරන්න පුළුවන්.
3. Transactions
Transactions කියන්නේ Database එකේ ඉතා වැදගත් concept එකක්.
උදාහරණයක් විදිහට Bank Account එකකින් තවත් account එකකට Rs. 10,000ක් transfer කරනවා කියලා හිතමු.
Account A
↓
- Rs. 10,000
Account B
↓
Rs. 10,000
පළවෙනි operation එක successful වෙලා දෙවැනි එක fail වුණොත්?
මුදල් අඩු වෙලා, අනෙක් account එකට මුදල් එකතු නොවෙන්න පුළුවන්.
ඒ නිසා operations දෙකම එක transaction එකක් විදිහට handle කරන්න අවශ්යයි.
BEGIN;UPDATE accounts SET balance = balance - 10000 WHERE id = 1;
UPDATE accounts SET balance = balance + 10000 WHERE id = 2;
COMMIT;
වැඩේ සාර්ථක නම් COMMIT කරලා changes save කරනවා.
Problem එකක් වුණොත් transaction එක rollback කරන්න පුළුවන්.
ඒ නිසා Database එක half-updated state එකකට යන එක වළක්වාගන්න පුළුවන්.
4. Powerful Queries
PostgreSQL එකෙන් simple Queries විතරක් නෙවෙයි, complex Queries පවා handle කරන්න පුළුවන්.
උදාහරණයක්:
SELECT *
FROM students;මේක simple Query එකක්.
හැබැයි tables කිහිපයක් අතර data combine කරන්න JOIN භාවිතා කරන්න පුළුවන්.
SELECT students.name, courses.name
FROM students
JOIN enrolments
ON students.id = enrolments.student_id
JOIN courses
ON courses.id = enrolments.course_id;මේකෙන් student කෙනෙක් enroll වෙලා තියෙන course එක හොයාගන්න පුළුවන්.
Result එක මේ වගේ:
Student | Course |
|---|---|
Kasun | Database Systems |
Nimal | Software Engineering |
Amaya | Web Development |
මේ වගේ complex data relationships handle කිරීම relational Database එකක වැදගත් advantage එකක්.
5. Indexes නිසා Searching වේගවත් කරන්න පුළුවන්
අපි හිතමු users table එකේ usersලා මිලියන 10ක් ඉන්නවා කියලා.
Application එකේ නිතරම email එකෙන් user කෙනෙක් search කරනවා:
SELECT *
FROM users
WHERE email = 'kasun@example.com';හරියට index එකක් නැත්නම් Database එකට විශාල data ප්රමාණයක් check කරන්න සිද්ධ වෙන්න පුළුවන්.
ඒකට index එකක් හදන්න පුළුවන්:
CREATE INDEX idx_users_email
ON users(email);Index එකක් කියන්නේ සරලවම Database එකට data ඉක්මනින් හොයාගන්න උදව් කරන additional data structure එකක්.
මේක පොතක index එකකට සමානයි.
Index එකක් නැත්නම්:
පිටු එකින් එක බලන්න වෙනවා.
Index එකක් තියෙනවා නම්:
අවශ්ය තැනට ඉක්මනින් යන්න පුළුවන්.
හැබැයි indexes වලටත් storage අවශ්ය වෙනවා සහ data write කරනකොට additional overhead එකක් ඇති වෙන්න පුළුවන්.
ඒ නිසා indexes අවශ්ය තැන්වලට විතරක් use කරන්න ඕනේ.
6. PostgreSQL JSON වලටත් Support කරනවා
Modern applications වල හැම data එකක්ම traditional columns වලට හරියටම fit වෙන්නේ නැහැ.
උදාහරණයක් විදිහට User Preferences:
{
"theme": "dark",
"notifications": true,
"language": "en"
}මේ වගේ data PostgreSQL වල JSON හෝ JSONB විදිහට store කරන්න පුළුවන්.
උදාහරණයක්:
SELECT *
FROM users
WHERE preferences->>'theme' = 'dark';ඒකෙන් JSON data එක ඇතුළෙන් values search කරන්නත් පුළුවන්.
හැබැයි මෙතනින් අදහස් වෙන්නේ application එකේ හැම data එකම JSON එකක් විදිහට store කරනවා කියන එක නෙවෙයි.
Data එකේ relationships වැදගත් නම් traditional relational structure එක ගොඩක් useful.
PostgreSQL vs MySQL
PostgreSQL ඉගෙනගන්නකොට MySQL එක්ක comparison එකක් අනිවාර්යයෙන්ම හම්බවෙයි.
දෙකම හොඳ relational Databases.
Feature | PostgreSQL | MySQL |
|---|---|---|
Type | Relational Database | Relational Database |
Open Source | Yes | Yes |
SQL Support | Strong | Strong |
JSON Support | Yes | Yes |
Complex Queries | Excellent | Excellent |
Extensibility | Very Strong | Strong |
Ecosystem | Very Large | Very Large |
Beginner Friendly | Good | Very Good |
Web Development | Very Common | Very Common |
එහෙනම් “හොඳම එක මොකක්ද?”
ඒකට හරියටම answer එකක් නැහැ.
Project එක අනුව answer එක වෙනස් වෙනවා.
PostgreSQL තෝරගන්න හොඳ අවස්ථා
Complex Relationships තියෙනවා නම්
උදාහරණයක්:
Users
↓
Orders
↓
Products
↓
PaymentsTables අතර relationships ගොඩක් තියෙන application එකකට PostgreSQL හොඳ option එකක්.
Complex Queries අවශ්ය නම්
JOINs, aggregations, reporting වගේ SQL operations ගොඩක් use කරන application එකකට PostgreSQL හොඳ choice එකක්.
Data Consistency වැදගත් නම්
Financial systems, booking systems, management systems වගේ applications වල data correctness වැදගත්.
ඒ වගේ systems වලට PostgreSQL වල transaction සහ constraint features useful වෙනවා.
Relational + Flexible Data දෙකම අවශ්ය නම්
Structured relational data එක්ක JSONB වගේ flexible dataත් handle කරන්න ඕනේ නම් PostgreSQL useful.
MySQL තෝරගන්න හොඳ අවස්ථා
MySQL කියන්නෙත් ගොඩක් හොද Database එකක්.
ඒකට:
ලොකු ecosystem එකක් තියෙනවා
Documentation ගොඩක් තියෙනවා
Hosting support වැඩියි
හොද performance තියෙනවා
Developers ලා ගොඩක් already MySQL දන්නවා
Web Framework support හොඳයි
ඒ නිසා Team එකට දැනටමත් MySQL ගැන හොඳ knowledge එකක් තියෙනවා නම් සහ application එකේ requirements MySQL වලින් හොඳට satisfy වෙනවා නම් PostgreSQL වලට මාරු වෙන්න අවශ්ය නැහැ.
Popular කියලා Database එකක් තෝරන්න එපා.
ඔයා build කරන application එකට ගැලපෙන Database එක තෝරගන්න.
Modern Web Development වල PostgreSQL
අද modern Web Applications වල PostgreSQL ගොඩක් දකින්න පුළුවන්.
Next.js
TypeScript
PostgreSQL
PrismaApplication එකේ structure එක roughly:
User
↓
Next.js
↓
API / Backend
↓
PostgreSQLමෙතන PostgreSQL persistent data store කරනවා.
Backend එක application logic handle කරනවා.
Frontend එක user interface එක handle කරනවා.
Supabase වගේ platforms PostgreSQL මත build වෙලා තියෙන නිසා Developers ලාට Database infrastructure එකේ හැම දෙයක්ම manually manage නොකර PostgreSQL-based applications හදන්නත් පහසු වෙනවා.
PostgreSQL ඉගෙනගන්නවා නම්
PostgreSQL ඉගෙනගන්නවා කියන්නේ:
SELECT * FROM users;ඉගෙනගෙන නවතින එක නෙවෙයි.
හොඳ learning path එකක් අවශ්යයි.
Step 1 — SQL Basics
මුලින්:
SELECTINSERTUPDATEDELETEWHEREORDER BYGROUP BY
වගේ basics ඉගෙනගන්න.
Step 2 — Relationships
ඊළඟට:
Primary Keys
Foreign Keys
One-to-One
One-to-Many
Many-to-Many
JOINs
ඉගෙනගන්න.
Step 3 — Database Design
ඊළඟට:
Normalization
Constraints
Data Types
Relationships
Schema Design
වගේ concepts තේරුම්ගන්න.
Step 4 — Performance
ඊළඟට:
Indexes
Query Plans
EXPLAINTransactions
Connection Pooling
වගේ concepts බලන්න.
Step 5 — PostgreSQL Features
ඊට පස්සේ:
JSONB
Full-text Search
Views
Functions
Triggers
Extensions
Advanced Indexing
වගේ PostgreSQL-specific features explore කරන්න.
මේ විදිහට ඉගෙනගත්තොත් Framework එකකට PostgreSQL connect කරන එකට වඩා ගොඩක් deeper understanding එකක් ලැබෙනවා.
Did you find this article helpful?
Related Articles
Azure වලින් මොනවද කරන්න පුළුවන්?
Microsoft Azure කියන්නේ විවිධ විදිහෙ දේවල් ගොඩක් කරන්න පුලුවන් cloud platform එකක්.
මොනවද මේ Linux Shell වර්ග?
Linux වල තියෙන Bash, Zsh, Fish, Dash වගේ Shells අතර වෙනස්කම්
Flutter සහ React Native
Mobile App Development එකට හොද මොකක්ද?
