ORM ਕੀ ਹੈ? ਐਪਾਂ ਡੇਟਾਬੇਸ ਨਾਲ ਕਿਵੇਂ ਗੱਲ ਕਰਦੀਆਂ ਹਨ, ਸਰਲ ਭਾਸ਼ਾ ਵਿੱਚ
ORM (ਆਬਜੈਕਟ-ਰਿਲੇਸ਼ਨਲ ਮੈਪਰ) ਇੱਕ ਕੋਡ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਜੋ ਐਪ ਅਤੇ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਦੇ ਵਿਚਕਾਰ ਬੈਠਦੀ ਹੈ। SQL ਵਿੱਚ ਡੇਟਾਬੇਸ ਕਵੈਰੀਆਂ ਲਿਖਣ ਦੀ ਥਾਂ, ਡਿਵੈਲਪਰ ਡੇਟਾ ਨਾਲ ਆਪਣੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੇ ਆਮ ਆਬਜੈਕਟਾਂ ਵਜੋਂ ਕੰਮ ਕਰਦੇ ਹਨ, ਜਿਵੇਂ db.booking.create(...) ਜਾਂ Booking.find(...)। ORM ਇਹਨਾਂ ਨੂੰ SQL ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਨਤੀਜੇ ਵਾਪਸ ਆਬਜੈਕਟਾਂ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਮਸ਼ਹੂਰ ਉਦਾਹਰਣਾਂ ਹਨ TypeScript ਲਈ Prisma ਅਤੇ Drizzle, Python ਲਈ SQLAlchemy ਅਤੇ C# ਲਈ Entity Framework Core।
AI ਨਾਲ ਐਪ ਬਣਾਉਂਦੇ ਸਮੇਂ ORM ਕਿਉਂ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ
ਜਦੋਂ ਕੋਈ AI ਐਪ ਬਿਲਡਰ ਤੁਹਾਡੀ ਐਪ ਵਿੱਚ ਡੇਟਾਬੇਸ ਜੋੜਦਾ ਹੈ, ਤਾਂ ਆਮ ਤੌਰ 'ਤੇ ਉਸ ਨਾਲ ਗੱਲ ਕਰਨ ਲਈ ਇੱਕ ORM ਵੀ ਜੋੜਦਾ ਹੈ। ORM ਦਾ ਕੋਡ ਤੁਹਾਨੂੰ ਖੁਦ ਨਹੀਂ ਲਿਖਣਾ ਪਵੇਗਾ, ਪਰ ਇਹ ਜਾਣਨਾ ਮਦਦਗਾਰ ਹੈ ਕਿ ਉਹ ਉੱਥੇ ਹੈ:
- ਤੁਹਾਡਾ ਡੇਟਾ ਮਾਡਲ ਕੋਡ ਵਿੱਚ ਰਹਿੰਦਾ ਹੈ। ORM ਦੀ ਸਕੀਮਾ ਫ਼ਾਈਲ ਅਕਸਰ ਤੁਹਾਡੀ ਐਪ ਦੇ ਡੇਟਾ ਦਾ ਸਭ ਤੋਂ ਸਾਫ਼ ਵੇਰਵਾ ਹੁੰਦੀ ਹੈ: ਕਿਹੜੇ ਟੇਬਲ ਹਨ, ਹਰੇਕ ਵਿੱਚ ਕਿਹੜੇ ਖੇਤਰ ਹਨ ਅਤੇ ਉਹ ਆਪਸ ਵਿੱਚ ਕਿਵੇਂ ਜੁੜੇ ਹਨ। ਇਸਨੂੰ ਪੜ੍ਹਨਾ ਇਹ ਜਾਂਚਣ ਦਾ ਤੇਜ਼ ਤਰੀਕਾ ਹੈ ਕਿ AI ਨੇ ਤੁਹਾਡੀ ਐਪ ਨੂੰ ਸਹੀ ਸਮਝਿਆ ਹੈ ਜਾਂ ਨਹੀਂ।
- ਡੇਟਾਬੇਸ ਵਿੱਚ ਬਦਲਾਅ ਮਾਈਗ੍ਰੇਸ਼ਨਾਂ ਰਾਹੀਂ ਹੁੰਦੇ ਹਨ। ਜਦੋਂ ਤੁਸੀਂ "ਗਾਹਕਾਂ ਵਿੱਚ ਫ਼ੋਨ ਨੰਬਰ ਜੋੜੋ" ਵਰਗੀ ਬੇਨਤੀ ਕਰਦੇ ਹੋ, ਤਾਂ AI ਮਾਡਲ ਅਪਡੇਟ ਕਰਦਾ ਹੈ ਅਤੇ ਮਾਈਗ੍ਰੇਸ਼ਨ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਜਾਣਨਾ ਸਮਝਾਉਂਦਾ ਹੈ ਕਿ ਕੋਈ ਬਦਲਾਅ ਲਾਈਵ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਕਿਉਂ ਲਾਗੂ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ।
- ਡਿਫ਼ਾਲਟ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਆ। ORM ਕਵੈਰੀਆਂ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਉਹ SQL ਇੰਜੈਕਸ਼ਨ ਤੋਂ ਬਚਾਅ ਕਰਦੀਆਂ ਹਨ, ਜੋ ਹੱਥੀਂ ਕਵੈਰੀਆਂ ਜੋੜਨ ਵਾਲੀਆਂ ਐਪਾਂ ਵਿੱਚ ਸਭ ਤੋਂ ਆਮ ਸੁਰੱਖਿਆ ਛੇਕਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ।
- ਗਤੀ ਦੇ ਜਾਲ। ORM ਅਣਜਾਣੇ ਵਿੱਚ ਕਈ ਸੌ ਛੋਟੀਆਂ ਕਵੈਰੀਆਂ ਚਲਾਉਣਾ ਆਸਾਨ ਬਣਾ ਦਿੰਦੇ ਹਨ, ਜਿੱਥੇ ਇੱਕ ਕਾਫ਼ੀ ਹੁੰਦੀ। AI ਨਾਲ ਬਣੀਆਂ ਐਪਾਂ ਵਿੱਚ ਹੌਲੀ ਪੰਨਿਆਂ ਦਾ ਇਹ ਆਮ ਕਾਰਨ ਹੈ।
ਰੋਜ਼ਾਨਾ ਜੀਵਨ ਦੀ ਮਿਸਾਲ
ਕਲਪਨਾ ਕਰੋ ਕਿ ਇੱਕ ਬ੍ਰਿਟਿਸ਼ ਸੈਲਾਨੀ ਅਤੇ ਇੱਕ ਜਾਪਾਨੀ ਦੁਕਾਨਦਾਰ ਹਨ, ਜਿਨ੍ਹਾਂ ਦੀ ਕੋਈ ਸਾਂਝੀ ਭਾਸ਼ਾ ਨਹੀਂ, ਅਤੇ ਉਹ ਇੱਕ ਦੁਭਾਸ਼ੀਏ ਰਾਹੀਂ ਗੱਲ ਕਰਦੇ ਹਨ।
ਸੈਲਾਨੀ (ਤੁਹਾਡੀ ਐਪ) ਕਹਿੰਦਾ ਹੈ, "ਮੈਨੂੰ ਤੁਹਾਡੀਆਂ ਤਿੰਨ ਸਭ ਤੋਂ ਸਸਤੀਆਂ ਚਾਹਾਂ ਚਾਹੀਦੀਆਂ ਹਨ।" ਦੁਭਾਸ਼ੀਆ (ORM) ਇਸਨੂੰ ਸਹੀ ਜਪਾਨੀ (SQL) ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਦੁਕਾਨਦਾਰ (ਡੇਟਾਬੇਸ) ਤੱਕ ਪਹੁੰਚਾਉਂਦਾ ਹੈ ਅਤੇ ਜਵਾਬ ਵਾਪਸ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਦੱਸਦਾ ਹੈ।
ਸੈਲਾਨੀ ਨੂੰ ਜਪਾਨੀ ਸਿੱਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਪੈਂਦੀ, ਅਤੇ ਜ਼ਿਆਦਾਤਰ ਗੱਲਬਾਤਾਂ ਲਈ ਇਹ ਠੀਕ ਹੈ। ਪਰ ਕਿਸੇ ਗੁੰਝਲਦਾਰ ਗੱਲਬਾਤ ਲਈ ਸਿੱਧੀ ਗੱਲ ਕਰਨਾ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ, ਇਸੇ ਲਈ ਜ਼ਿਆਦਾਤਰ ORM ਲੋੜ ਪੈਣ 'ਤੇ ਕੱਚਾ SQL ਲਿਖਣ ਦਿੰਦੇ ਹਨ।
ORM ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ
Postgres ਵਰਗੇ ਡੇਟਾਬੇਸ ਡੇਟਾ ਨੂੰ ਕਤਾਰਾਂ ਅਤੇ ਕਾਲਮਾਂ ਵਾਲੇ ਟੇਬਲਾਂ ਵਿੱਚ ਰੱਖਦੇ ਹਨ ਅਤੇ SQL ਨਾਲ ਕਵੈਰੀ ਹੁੰਦੇ ਹਨ। ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਆਬਜੈਕਟਾਂ ਨਾਲ ਕੰਮ ਕਰਦੀਆਂ ਹਨ: ਇੱਕ ਬੁਕਿੰਗ ਜਿਸ ਵਿੱਚ date, customer ਅਤੇ status ਹੋਵੇ। ORM ਇਹਨਾਂ ਨੂੰ ਆਪਸ ਵਿੱਚ ਮਿਲਾਉਂਦਾ ਹੈ:
| ਡੇਟਾਬੇਸ ਪਾਸਾ | ORM / ਕੋਡ ਪਾਸਾ |
|---|---|
ਟੇਬਲ bookings | ਮਾਡਲ Booking |
| ਕਤਾਰ | ਇੱਕ ਬੁਕਿੰਗ ਆਬਜੈਕਟ |
ਕਾਲਮ starts_at | ਖੇਤਰ startsAt |
ਫ਼ੌਰਨ ਕੀ customer_id | ਰਿਲੇਸ਼ਨ booking.customer |
SELECT, INSERT, UPDATE, DELETE | find, create, update, delete ਤਰੀਕੇ |
ਇਹ ਚਾਰ ਕਾਰਵਾਈਆਂ ਉਹ CRUD ਕਾਰਵਾਈਆਂ ਹਨ ਜਿਨ੍ਹਾਂ 'ਤੇ ਲਗਭਗ ਹਰ ਐਪ ਬਣੀ ਹੁੰਦੀ ਹੈ।
ਇੱਕ ਕੰਮ ਕੀਤੀ ਮਿਸਾਲ: Prisma ਨਾਲ ਬੁਕਿੰਗਾਂ
ਇਹ ਇੱਕ ਸੈਲੂਨ ਬੁਕਿੰਗ ਐਪ ਲਈ ਸਰਲ Prisma ਸਕੀਮਾ ਹੈ। ਇਹ ਦੋ ਟੇਬਲ ਅਤੇ ਉਹਨਾਂ ਦੇ ਜੋੜ ਦਾ ਵੇਰਵਾ ਦਿੰਦੀ ਹੈ:
model Customer {
id Int @id @default(autoincrement())
name String
email String @unique
bookings Booking[]
}
model Booking {
id Int @id @default(autoincrement())
startsAt DateTime
service String
customer Customer @relation(fields: [customerId], references: [id])
customerId Int
}
ਸਾਦੇ ਸ਼ਬਦਾਂ ਵਿੱਚ: ਇੱਕ ਗਾਹਕ ਦਾ ਨਾਮ, ਇੱਕ ਵਿਲੱਖਣ ਈਮੇਲ ਅਤੇ ਕਈ ਬੁਕਿੰਗਾਂ ਹੁੰਦੀਆਂ ਹਨ; ਹਰ ਬੁਕਿੰਗ ਦਾ ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਸਮਾਂ ਅਤੇ ਸੇਵਾ ਹੁੰਦੀ ਹੈ ਅਤੇ ਉਹ ਇੱਕ ਗਾਹਕ ਨਾਲ ਸਬੰਧਤ ਹੁੰਦੀ ਹੈ।
ਹੁਣ ਐਪ ਨੂੰ ਚਾਹੀਦਾ ਹੈ "ਲੀਨਾ ਦੀਆਂ ਆਉਣ ਵਾਲੀਆਂ ਬੁਕਿੰਗਾਂ, ਸਭ ਤੋਂ ਨੇੜਲੀ ਪਹਿਲਾਂ":
const bookings = await db.booking.findMany({
where: {
customer: { email: "lena@example.com" },
startsAt: { gte: new Date() },
},
orderBy: { startsAt: "asc" },
});
ORM ਇਸਨੂੰ ਲਗਭਗ ਇਸ ਤਰ੍ਹਾਂ ਦੇ SQL ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਇਸਨੂੰ ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਬੁਕਿੰਗ ਆਬਜੈਕਟਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਦਾ ਹੈ:
SELECT b.* FROM "Booking" b
JOIN "Customer" c ON c.id = b."customerId"
WHERE c.email = $1 AND b."startsAt" >= $2
ORDER BY b."startsAt" ASC;
$1 ਅਤੇ $2 ਥਾਂ ਰੱਖਣ ਵਾਲੇ ਹਨ: ਈਮੇਲ ਅਤੇ ਤਾਰੀਖ਼ ਕਵੈਰੀ ਦੇ ਲਿਖਤ ਤੋਂ ਵੱਖਰੇ ਭੇਜੇ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਇਹੀ SQL ਇੰਜੈਕਸ਼ਨ ਨੂੰ ਰੋਕਦਾ ਹੈ।
ਮਾਈਗ੍ਰੇਸ਼ਨਾਂ
ਜੇ ਫਿਰ ਤੁਸੀਂ "ਗਾਹਕਾਂ ਨੂੰ ਫ਼ੋਨ ਨੰਬਰ ਜੋੜਨ ਦਿਓ" ਮੰਗਦੇ ਹੋ, ਤਾਂ AI Customer ਮਾਡਲ ਵਿੱਚ phone String? ਜੋੜਦਾ ਹੈ (? ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਵਿਕਲਪਿਕ ਹੈ) ਅਤੇ ਇੱਕ ਮਾਈਗ੍ਰੇਸ਼ਨ ਬਣਾਉਂਦਾ ਹੈ, ਜੋ ਇੱਕ ਛੋਟੀ SQL ਸਕ੍ਰਿਪਟ ਹੁੰਦੀ ਹੈ ਜਿਵੇਂ ALTER TABLE "Customer" ADD COLUMN "phone" TEXT;। ਮਾਈਗ੍ਰੇਸ਼ਨਾਂ ਕ੍ਰਮ ਵਿੱਚ ਸੰਭਾਲੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਤਾਂ ਜੋ ਡੇਟਾਬੇਸ ਦੀ ਹਰ ਕਾਪੀ ਇੱਕੋ ਢਾਂਚੇ 'ਤੇ ਲਿਆਂਦੀ ਜਾ ਸਕੇ ਅਤੇ ਬਦਲਾਵਾਂ ਦਾ ਇਤਿਹਾਸ ਰਹੇ।
ਭਾਸ਼ਾ ਅਨੁਸਾਰ ਆਮ ORM
| ਭਾਸ਼ਾ | ਆਮ ORM |
|---|---|
| TypeScript / JavaScript | Prisma, Drizzle, TypeORM, Sequelize |
| Python | SQLAlchemy, Django ORM, SQLModel |
| C# | Entity Framework Core |
| Java | Hibernate (ਅਕਸਰ Spring Data JPA ਰਾਹੀਂ) |
| Ruby | Active Record |
ORM ਇਸ ਗੱਲ ਵਿੱਚ ਵੱਖ ਹੁੰਦੇ ਹਨ ਕਿ ਉਹ SQL ਨੂੰ ਕਿੰਨਾ ਲੁਕਾਉਂਦੇ ਹਨ। Prisma ਆਪਣੀ ਸਕੀਮਾ ਭਾਸ਼ਾ ਅਤੇ ਕਵੈਰੀ ਸ਼ੈਲੀ ਵਰਤਦਾ ਹੈ; Drizzle ਜਾਣਬੁੱਝ ਕੇ SQL ਦੇ ਢਾਂਚੇ ਦੇ ਨੇੜੇ ਰਹਿੰਦਾ ਹੈ ਅਤੇ ਹਰ ਚੀਜ਼ ਨੂੰ ਟਾਈਪ ਕੀਤਾ ਰੱਖਦਾ ਹੈ। ਕਵੈਰੀ ਬਿਲਡਰ ਕਹਾਉਂਦੇ ਹਲਕੇ ਟੂਲ, ਜਿਵੇਂ TypeScript ਲਈ Knex ਜਾਂ Kysely, ਪੂਰੀ ਆਬਜੈਕਟ ਮੈਪਿੰਗ ਤੋਂ ਬਿਨਾਂ ਕੋਡ ਵਿੱਚ SQL ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ।
ਮੁੱਖ ਸ਼ਬਦ
| ਸ਼ਬਦ | ਅਰਥ |
|---|---|
| ਮਾਡਲ | ਕਿਸੇ ਟੇਬਲ ਅਤੇ ਉਸਦੇ ਖੇਤਰਾਂ ਦੀ ਕੋਡ ਪਰਿਭਾਸ਼ਾ। |
| ਸਕੀਮਾ | ਸਾਰੇ ਟੇਬਲਾਂ, ਖੇਤਰਾਂ ਅਤੇ ਰਿਸ਼ਤਿਆਂ ਦਾ ਪੂਰਾ ਵੇਰਵਾ। |
| ਰਿਲੇਸ਼ਨ | ਮਾਡਲਾਂ ਵਿਚਕਾਰ ਜੋੜ, ਜਿਵੇਂ ਇੱਕ ਗਾਹਕ ਨਾਲ ਸਬੰਧਤ ਬੁਕਿੰਗ। |
| ਮਾਈਗ੍ਰੇਸ਼ਨ | ਡੇਟਾਬੇਸ ਢਾਂਚਾ ਬਦਲਣ ਵਾਲੀ ਵਰਜਨ ਵਾਲੀ ਸਕ੍ਰਿਪਟ। |
| ਕਵੈਰੀ ਬਿਲਡਰ | ਪੂਰੀ ਆਬਜੈਕਟ ਮੈਪਿੰਗ ਤੋਂ ਬਿਨਾਂ, ਕੋਡ ਵਿੱਚ SQL ਬਣਾਉਣ ਦਾ ਹਲਕਾ ਟੂਲ। |
| N+1 ਸਮੱਸਿਆ | ਇੱਕ ਸੂਚੀ ਲਈ ਇੱਕ ਕਵੈਰੀ, ਫਿਰ ਹਰ ਆਈਟਮ ਲਈ ਇੱਕ ਹੋਰ ਕਵੈਰੀ, ਜੋ ਵੱਡੇ ਪੈਮਾਨੇ 'ਤੇ ਹੌਲੀ ਹੁੰਦੀ ਹੈ। |
| ਕੱਚਾ SQL | ਹੱਥੀਂ ਲਿਖਿਆ SQL, ਜੋ ਉਦੋਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ORM ਰਾਹ ਵਿੱਚ ਆਵੇ। |
ਆਮ ਗ਼ਲਤਫ਼ਹਿਮੀਆਂ
- "ORM ਇੱਕ ਡੇਟਾਬੇਸ ਹੈ।" ਨਹੀਂ। ਇਹ ਇੱਕ ਅਨੁਵਾਦਕ ਹੈ। ਤੁਹਾਨੂੰ ਫਿਰ ਵੀ Postgres ਵਰਗੇ ਡੇਟਾਬੇਸ ਦੀ ਲੋੜ ਹੈ।
- "ORM ਨਾਲ ਤੁਹਾਨੂੰ ਆਪਣੇ ਡੇਟਾ ਨੂੰ ਸਮਝਣ ਦੀ ਲੋੜ ਨਹੀਂ।" ਮਾੜੇ ਢੰਗ ਨਾਲ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਟੇਬਲ ORM ਰਾਹੀਂ ਵੀ ਉਨੇ ਹੀ ਦੁੱਖਦਾਈ ਹੁੰਦੇ ਹਨ। ਚੰਗਾ ਡੇਟਾ ਮਾਡਲ ਔਜ਼ਾਰ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਅਹਿਮ ਹੈ।
- "ORM ਹਮੇਸ਼ਾ ਹੌਲੇ ਹੁੰਦੇ ਹਨ।" ਰੋਜ਼ਾਨਾ ਦੀਆਂ ਕਵੈਰੀਆਂ ਠੀਕ ਹੁੰਦੀਆਂ ਹਨ। ਹੌਲੀ ਹੋਣਾ ਆਮ ਤੌਰ 'ਤੇ N+1 ਕਵੈਰੀਆਂ ਜਾਂ ਗੁੰਮ ਇੰਡੈਕਸਾਂ ਵਰਗੇ ਢੰਗਾਂ ਤੋਂ ਆਉਂਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਠੀਕ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
- "ORM ਦਾ ਮਤਲਬ ਹੈ ਕਿ SQL ਇੰਜੈਕਸ਼ਨ ਦਾ ਖ਼ਤਰਾ ਕਦੇ ਨਹੀਂ।" ਮਿਆਰੀ ORM ਤਰੀਕੇ ਸੁਰੱਖਿਅਤ ਹਨ, ਪਰ ਉਪਭੋਗਤਾ ਦੇ ਇਨਪੁੱਟ ਨੂੰ ਸਿੱਧਾ ਜੋੜ ਕੇ ਲਿਖਿਆ ਕੱਚਾ SQL ਅਜੇ ਵੀ ਖ਼ਤਰਨਾਕ ਹੈ।
- "ਸਕੀਮਾ ਫ਼ਾਈਲ ਬਦਲਣ ਨਾਲ ਲਾਈਵ ਡੇਟਾਬੇਸ ਬਦਲ ਜਾਂਦਾ ਹੈ।" ਸਿਰਫ਼ ਉਦੋਂ, ਜਦੋਂ ਮਾਈਗ੍ਰੇਸ਼ਨ ਬਣਾ ਕੇ ਉਸ ਡੇਟਾਬੇਸ 'ਤੇ ਲਾਗੂ ਕੀਤੀ ਜਾਵੇ।
ਆਪਣੇ AI ਬਿਲਡਰ ਤੋਂ ਕੀ ਪੁੱਛੋ
- "ਡੇਟਾਬੇਸ ਸਕੀਮਾ ਦਿਖਾਓ ਅਤੇ ਹਰ ਟੇਬਲ ਅਤੇ ਰਿਸ਼ਤੇ ਨੂੰ ਸਰਲ ਪੰਜਾਬੀ ਵਿੱਚ ਸਮਝਾਓ।"
- "ਇਸ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਕਿਹੜਾ ORM ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ, ਅਤੇ ਮਾਈਗ੍ਰੇਸ਼ਨਾਂ ਕਿੱਥੇ ਹਨ?"
- "ਕਿਸੇ ਵੀ ਟੇਬਲ ਨੂੰ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਦੱਸੋ ਕਿ ਮੌਜੂਦਾ ਡੇਟਾ 'ਤੇ ਅਸਰ ਪਵੇਗਾ ਜਾਂ ਨਹੀਂ, ਅਤੇ ਜਿਸ ਕਾਲਮ ਵਿੱਚ ਡੇਟਾ ਹੈ ਉਸਨੂੰ ਬਿਨਾਂ ਪੁੱਛੇ ਕਦੇ ਨਾ ਹਟਾਓ।"
- "ਸਭ ਤੋਂ ਹੌਲੇ ਪੰਨਿਆਂ ਵਿੱਚ N+1 ਕਵੈਰੀਆਂ ਲੱਭੋ ਅਤੇ ਜਿੱਥੇ ਸੂਚੀਆਂ ਫ਼ਿਲਟਰ ਜਾਂ ਕ੍ਰਮਬੱਧ ਹੁੰਦੀਆਂ ਹਨ ਉੱਥੇ ਇੰਡੈਕਸ ਜੋੜੋ।"
- "ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਉਪਭੋਗਤਾ ਇਨਪੁੱਟ ਵਾਲੀ ਹਰ ਕਵੈਰੀ ORM ਰਾਹੀਂ ਜਾਂ ਪੈਰਾਮੀਟਰਾਂ ਨਾਲ ਜਾਵੇ, ਕੋਈ ਵੀ ਸਟਰਿੰਗ-ਜੋੜ ਵਾਲਾ SQL ਨਾ ਹੋਵੇ।"
Mythex ਵਿੱਚ ORM
ਜਦੋਂ ਤੁਹਾਡੀ ਐਪ ਨੂੰ ਡੇਟਾ ਸੰਭਾਲਣਾ ਹੋਵੇ, ਤਾਂ Mythex ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਇੱਕ ਸਮਰਪਿਤ Postgres ਡੇਟਾਬੇਸ ਜੋੜਦਾ ਹੈ। ਇਹ ਚੈਟ ਵਿੱਚ ਪੁੱਛ ਕੇ ਜਾਂ /database ਕਮਾਂਡ ਵਰਤ ਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਇਸਦੇ ਕਨੈਕਸ਼ਨ ਵੇਰਵੇ ਵਰਕਸਪੇਸ ਅਤੇ ਪ੍ਰਕਾਸ਼ਿਤ ਐਪ ਵਿੱਚ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ (Database)। ਫਿਰ ਏਜੰਟ ਉਹ ਕੋਡ ਲਿਖਦਾ ਹੈ ਜੋ ਤੁਹਾਡਾ ਡੇਟਾ ਪੜ੍ਹਦਾ ਅਤੇ ਸੰਭਾਲਦਾ ਹੈ। ਜੇ ਤੁਹਾਡੀ ਕੋਈ ਪਸੰਦ ਹੈ, ਜਿਵੇਂ "Prisma ਵਰਤੋ", "SQLAlchemy ਵਰਤੋ" ਜਾਂ "ਸਿਰਫ਼ ਸਾਦਾ SQL, ORM ਨਹੀਂ", ਤਾਂ ਚੈਟ ਵਿੱਚ ਦੱਸੋ। ਜਦੋਂ ਵੀ ਚਾਹੋ ਸਕੀਮਾ ਦੀ ਬਣਤਰ ਸਮਝਣ ਲਈ ਪੁੱਛ ਸਕਦੇ ਹੋ; ਫ਼ਾਈਲਾਂ ਕੋਡ ਐਡੀਟਰ ਵਿੱਚ ਪੜ੍ਹੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਵੱਡੀ ਤਸਵੀਰ ਲਈ, ਵੇਖੋ ਡੇਟਾਬੇਸ ਕੀ ਹੈ ਅਤੇ SQL ਬਨਾਮ NoSQL।
ਸਵਾਲ
ਸਰਲ ਸ਼ਬਦਾਂ ਵਿੱਚ ORM ਕੀ ਹੈ?
ORM (ਆਬਜੈਕਟ-ਰਿਲੇਸ਼ਨਲ ਮੈਪਰ) ਇੱਕ ਕੋਡ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਜੋ ਤੁਹਾਡੀ ਐਪ ਅਤੇ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਦੇ ਵਿਚਕਾਰ ਬੈਠਦੀ ਹੈ। ਇਹ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਆਪਣੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿੱਚ ਆਮ ਆਬਜੈਕਟਾਂ ਵਜੋਂ ਡੇਟਾ ਪੜ੍ਹਨ ਅਤੇ ਸੰਭਾਲਣ ਦਿੰਦੀ ਹੈ, ਅਤੇ ਪਰਦੇ ਪਿੱਛੇ SQL ਕਵੈਰੀਆਂ ਆਪ ਲਿਖਦੀ ਹੈ।
ORM ਦੀਆਂ ਕੁਝ ਉਦਾਹਰਣਾਂ ਕੀ ਹਨ?
ਆਮ ORM ਵਿੱਚ TypeScript ਅਤੇ JavaScript ਲਈ Prisma ਅਤੇ Drizzle, Python ਲਈ SQLAlchemy ਅਤੇ Django ORM, C# ਲਈ Entity Framework Core, Java ਲਈ Hibernate, ਅਤੇ Ruby on Rails ਵਿੱਚ Active Record ਸ਼ਾਮਲ ਹਨ।
ਕੀ ORM ਹੱਥੀਂ SQL ਲਿਖਣ ਨਾਲੋਂ ਬਿਹਤਰ ਹੈ?
ਇਹ ਕੰਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ORM ਰੋਜ਼ਾਨਾ ਦੀਆਂ ਰੀਡ ਅਤੇ ਰਾਈਟ ਨੂੰ ਲਿਖਣ ਵਿੱਚ ਤੇਜ਼, ਸੁਰੱਖਿਅਤ ਅਤੇ ਬਦਲਣ ਵਿੱਚ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ, ਜਦਕਿ ਹੱਥੀਂ ਲਿਖਿਆ SQL ਗੁੰਝਲਦਾਰ ਰਿਪੋਰਟਾਂ ਜਾਂ ਕਾਰਗੁਜ਼ਾਰੀ ਲਈ ਅਹਿਮ ਕਵੈਰੀਆਂ ਲਈ ਪੂਰਾ ਕੰਟਰੋਲ ਦਿੰਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ORM ਲੋੜ ਪੈਣ 'ਤੇ ਕੱਚੇ SQL ਤੱਕ ਜਾਣ ਦਿੰਦੇ ਹਨ।
ਮਾਈਗ੍ਰੇਸ਼ਨ ਕੀ ਹੁੰਦੀ ਹੈ?
ਮਾਈਗ੍ਰੇਸ਼ਨ ਇੱਕ ਛੋਟੀ, ਵਰਜਨ ਵਾਲੀ ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ਡੇਟਾਬੇਸ ਦੇ ਢਾਂਚੇ ਨੂੰ ਬਦਲਦੀ ਹੈ, ਜਿਵੇਂ ਕੋਈ ਟੇਬਲ ਜਾਂ ਕਾਲਮ ਜੋੜਨਾ। ORM ਤੁਹਾਡੇ ਡੇਟਾ ਮਾਡਲ ਤੋਂ ਮਾਈਗ੍ਰੇਸ਼ਨ ਬਣਾ ਸਕਦੇ ਹਨ, ਤਾਂ ਜੋ ਡੇਟਾਬੇਸ ਦੀ ਹਰ ਕਾਪੀ, ਲੈਪਟਾਪ ਤੋਂ ਲੈ ਕੇ ਟੈਸਟਿੰਗ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ ਤੱਕ, ਇੱਕੋ ਢਾਂਚੇ 'ਤੇ ਪਹੁੰਚੇ।