هيلو، دوستو. مئي جي موڪلن جي ٻئي حصي لاءِ وڃڻ کان اڳ، اسان توهان سان شيئر ڪريون ٿا مواد جيڪو اسان ترجمو ڪيو آهي ڪورس تي هڪ نئين وهڪرو جي شروعات جي توقع ۾
ايپليڪيشن ڊولپر ڪيترن ئي آپريشنل ڊيٽابيسس جي مقابلي ۾ گهڻو وقت گذاريندا آهن انهي کي چونڊڻ لاءِ جيڪو مطلوب ڪم لوڊ لاءِ مناسب آهي. ضرورتن ۾ شامل ٿي سگھي ٿي آسان ڊيٽا ماڊلنگ، ٽرانزيڪشنل گارنٽي، پڙھڻ/لکڻ جي ڪارڪردگي، افقي اسڪيلنگ، ۽ غلطي رواداري. روايتي طور تي، انتخاب ڊيٽابيس جي درجي، SQL يا NoSQL سان شروع ٿئي ٿو، ڇاڪاڻ ته هر قسم جي واپار جو واضح سيٽ پيش ڪري ٿو. گھٽ ويڪرائي جي لحاظ کان اعلي ڪارڪردگي ۽ اعلي throughput کي عام طور تي ڏٺو ويندو آهي غير واپار جي ضرورت جي طور تي ۽ انهي ڪري ضروري آهي ڪنهن به نموني ڊيٽابيس لاء.
هن آرٽيڪل جو مقصد ايپليڪيشن ڊولپرز جي مدد ڪرڻ آهي SQL ۽ NoSQL جي وچ ۾ ايپليڪيشن ڊيٽا ماڊلنگ جي حوالي سان صحيح چونڊ ڪرڻ. اسان هڪ SQL ڊيٽابيس تي نظر وجهنداسين، يعني PostgreSQL، ۽ ٻه NoSQL ڊيٽابيس، Cassandra ۽ MongoDB، ڊيٽابيس ڊيزائن جي بنيادي ڳالهين کي ڍڪڻ لاءِ، جيئن ٽيبل ٺاهڻ، انهن کي آباد ڪرڻ، ٽيبل مان ڊيٽا پڙهڻ، ۽ ان کي حذف ڪرڻ. ايندڙ آرٽيڪل ۾، اسان انڊيڪس، ٽرانزيڪشن، JOINs، TTL هدايتون، ۽ JSON-based ڊيٽابيس ڊيزائن کي ڏسڻ جي پڪ ڪنداسين.
SQL ۽ NoSQL جي وچ ۾ ڇا فرق آهي؟
SQL ڊيٽابيس ACID ٽرانزيڪشنل گارنٽي ذريعي ايپليڪيشن لچڪ وڌائين ٿا، ۽ گڏوگڏ موجوده نارمل ٿيل لاڳاپي واري ڊيٽابيس ماڊلز جي مٿان غير متوقع طريقن سان JOINs استعمال ڪندي ڊيٽا کي سوال ڪرڻ جي صلاحيت.
انهن جي monolithic/single-node architecture ۽ redundancy لاءِ ماسٽر-غلام ريپليڪشن ماڊل جي استعمال کي ڏنو ويو، روايتي SQL ڊيٽابيس ۾ ٻه اهم خصوصيتون نه آهن - لڪير لکندڙ اسڪاليبلٽي (يعني ڪيترن ئي نوڊس ۾ خودڪار ورهاڱي) ۽ خودڪار / صفر ڊيٽا نقصان. هن جو مطلب آهي ته حاصل ڪيل ڊيٽا جي مقدار هڪ واحد نوڊ جي وڌ ۾ وڌ لکڻ جي ذريعي کان وڌيڪ نه ٿي سگهي. اضافي طور تي، ڪجهه عارضي ڊيٽا جي نقصان کي حساب ۾ ورتو وڃي غلطي رواداري (هڪ شيئر-ڪجهه به فن تعمير ۾). هتي توهان کي ذهن ۾ رکڻ جي ضرورت آهي ته تازو ڪمن اڃا تائين غلام ڪاپي ۾ ظاهر نه ڪيو ويو آهي. SQL ڊيٽابيس ۾ حاصل ڪرڻ لاءِ نان-ڊائون ٽائم اپڊيٽ پڻ مشڪل آھن.
NoSQL ڊيٽابيس عام طور تي فطرت طرفان ورهايل آهن، يعني. انهن ۾، ڊيٽا حصن ۾ ورهايل آهي ۽ ڪيترن ئي نوڊس ۾ ورهايل آهي. انهن کي غير معمولي ڪرڻ جي ضرورت آهي. ان جو مطلب اهو آهي ته داخل ڪيل ڊيٽا کي پڻ نقل ڪيو وڃي ڪيترائي ڀيرا توهان جي موڪليل مخصوص درخواستن جو جواب ڏيڻ لاءِ. مجموعي مقصد پڙهڻ دوران موجود شارڊز جي تعداد کي گهٽائڻ سان اعلي ڪارڪردگي حاصل ڪرڻ آهي. انهي جو مطلب اهو آهي ته NoSQL توهان کي توهان جي سوالن کي ماڊل ڪرڻ جي ضرورت آهي، جڏهن ته SQL توهان کي توهان جي ڊيٽا کي ماڊل ڪرڻ جي ضرورت آهي.
NoSQL هڪ ورهايل ڪلسٽر ۾ اعليٰ ڪارڪردگي حاصل ڪرڻ تي ڌيان ڏئي ٿو ۽ اهو ڪيترن ئي ڊيٽابيس ڊيزائن ٽريڊ آف لاءِ بنيادي دليل آهي جنهن ۾ ACID ٽرانزيڪشن نقصان، JOINs، ۽ مسلسل عالمي ثانوي انڊيڪس شامل آهن.
اتي هڪ دليل آهي ته جڏهن NoSQL ڊيٽابيس مهيا ڪن ٿا لڪير لکڻ جي اسڪاليبلٽي ۽ اعلي غلطي رواداري، ٽرانزيڪشن جي ضمانت جي نقصان انهن کي مشن-نازڪ ڊيٽا لاء غير مناسب بڻائي ٿو.
هيٺ ڏنل جدول ڏيکاري ٿو ته ڪيئن NoSQL ۾ ڊيٽا ماڊلنگ SQL کان مختلف آهي.
SQL ۽ NoSQL: ٻنهي جي ضرورت ڇو آهي؟
حقيقي دنيا جون ايپليڪيشنون وڏي تعداد ۾ استعمال ڪندڙن سان گڏ، جهڙوڪ Amazon.com، Netflix، Uber، ۽ Airbnb، کي پيچيده، گھڻ طرفي ڪمن کي انجام ڏيڻ جي ذميواري ڏني وئي آهي. مثال طور، هڪ اي ڪامرس ايپليڪيشن جهڙوڪ Amazon.com کي ٿلهي وزن، اعليٰ نازڪ ڊيٽا کي ذخيرو ڪرڻ جي ضرورت آهي جهڙوڪ صارف جي معلومات، پراڊڪٽس، آرڊر، انوائسز، ان سان گڏ ڳري، گهٽ حساس ڊيٽا جهڙوڪ پراڊڪٽ جا جائزو، سپورٽ پيغام، صارف جي سرگرمي، استعمال ڪندڙ تبصرا ۽ سفارشون. قدرتي طور تي، اهي ايپليڪيشنون گهٽ ۾ گهٽ هڪ SQL ڊيٽابيس سان گڏ گهٽ ۾ گهٽ هڪ NoSQL ڊيٽابيس تي ڀاڙين ٿيون. علائقائي ۽ عالمي نظامن ۾، هڪ NoSQL ڊيٽابيس هڪ خاص علائقي ۾ هلندڙ هڪ قابل اعتماد ماخذ SQL ڊيٽابيس ۾ محفوظ ڪيل ڊيٽا لاءِ جيو ورهايل ڪيش طور ڪم ڪري ٿو.
يوگا بائيٽ ڊي بي SQL ۽ NoSQL کي ڪيئن گڏ ڪري ٿو؟
لاگ-اورينٽيڊ مخلوط اسٽوريج انجڻ تي ٺهيل، آٽو-شارڊنگ، شارڊ ٿيل ورهايل اتفاق راءِ ۽ ACID ورهايل ٽرانزيڪشن (گوگل اسپنر کان متاثر ٿيل)، YugaByte DB دنيا جو پهريون اوپن سورس ڊيٽابيس آهي جيڪو هڪ ئي وقت NoSQL (Cassandra & Redis) سان مطابقت رکي ٿو. SQL (PostgreSQL). جيئن هيٺ ڏنل جدول ۾ ڏيکاريل آهي، YCQL، YugaByte DB API Cassandra سان مطابقت رکي ٿو، NoSQL API ۾ سنگل ۽ ملٽي-ڪي ACID ٽرانزيڪشنز ۽ عالمي ثانوي انڊيڪسز جي تصورن کي شامل ڪري ٿو، ان ڪري ٽرانزيڪشنل NoSQL ڊيٽابيس جي دور کي شروع ڪري ٿو. اضافي طور تي، YCQL، PostgreSQL سان مطابقت رکندڙ YugaByte DB API، SQL API ۾ لڪير لکڻ جي اسڪيلنگ ۽ خودڪار غلطي رواداري جا تصور شامل ڪري ٿو، دنيا ۾ ورهايل SQL ڊيٽابيس آڻيندي. ڇاڪاڻ ته YugaByte DB فطرت ۾ ٽرانزيڪشنل آهي، NoSQL API هاڻي استعمال ڪري سگهجي ٿو مشن-نازڪ ڊيٽا جي حوالي سان.
جيئن اڳ ۾ مضمون ۾ چيو ويو آهي
- جيڪڏهن توهان جو بنيادي ڪم لوڊ آهي ملٽي ڪيئي جوائن آپريشنز، پوءِ جڏهن YSQL چونڊيو، سمجھو ته توهان جون ڪنجيون ڪيترن ئي نوڊس ۾ ورهائي سگهجن ٿيون، جنهن جي نتيجي ۾ NoSQL کان وڌيڪ ويڪرائي ۽/يا گهٽ ٿرو پُٽ.
- ٻي صورت ۾، ٻن NoSQL APIs مان ڪنهن هڪ کي چونڊيو، ذهن ۾ رکو ته توهان هڪ وقت ۾ هڪ نوڊ مان پيش ڪيل سوالن جي نتيجي ۾ بهتر ڪارڪردگي حاصل ڪندا. YugaByte DB حقيقي دنيا لاءِ هڪ واحد آپريشنل ڊيٽابيس جي طور تي ڪم ڪري سگهي ٿو، پيچيده ايپليڪيشنون جيڪي هڪ ئي وقت ڪيترن ئي ڪم لوڊ کي منظم ڪرڻ جي ضرورت آهي.
ايندڙ حصي ۾ ڊيٽا ماڊلنگ ليب PostgreSQL ۽ Cassandra API مطابقت رکندڙ YugaByte DB ڊيٽابيس تي ٻڌل آهي، جيئن ته اصلي ڊيٽابيس جي مخالفت. اهو طريقو ساڳيو ڊيٽابيس ڪلستر جي ٻن مختلف APIs (ٻن مختلف بندرگاهن تي) سان رابطو ڪرڻ جي آسانيءَ تي زور ڏئي ٿو، جيئن ته ٻن مختلف ڊيٽابيسن جي مڪمل طور تي آزاد ڪلسٽر استعمال ڪرڻ جي مخالفت ڪئي وڃي.
هيٺ ڏنل حصن ۾، اسان ڊيٽا ماڊلنگ ليب تي نظر وجهنداسين فرقن کي بيان ڪرڻ لاءِ ۽ شامل ڪيل ڊيٽابيس جي ڪجهه مشترڪات کي.
ڊيٽا ماڊلنگ ليبارٽري
ڊيٽابيس جي انسٽاليشن
ڊيٽا ماڊل ڊيزائن تي زور ڏنو ويو (بلڪه پيچيده ڊيپلائيمينٽ آرڪيٽيڪچرز)، اسان مقامي مشين تي ڊاکر ڪنٽينرز ۾ ڊيٽابيس انسٽال ڪنداسين ۽ پوءِ انهن سان لاڳاپيل ڪمانڊ لائن شيل استعمال ڪندي انهن سان لهه وچڙ ۾ آڻينداسين.
PostgreSQL ۽ Cassandra مطابقت رکندڙ YugaByte DB ڊيٽابيس
mkdir ~/yugabyte && cd ~/yugabyte
wget https://downloads.yugabyte.com/yb-docker-ctl && chmod +x yb-docker-ctl
docker pull yugabytedb/yugabyte
./yb-docker-ctl create --enable_postgres
منڊو ڊي
docker run --name my-mongo -d mongo:latest
ڪمانڊ لائن رسائي
اچو ته لاڳاپيل APIs لاءِ ڪمانڊ لائن شيل استعمال ڪندي ڊيٽابيس سان ڳنڍيون.
PostgreSQL
docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres
Cassandra
cqlsh
فهرست ۾ bin
.
نوٽ ڪريو ته CQL SQL کان متاثر ٿيو ۽ ان ۾ جدولن، قطارن، ڪالمن ۽ انڊيڪس جا ساڳيا تصور آھن. جڏهن ته، هڪ NoSQL ٻولي جي طور تي، اها حدن جو هڪ خاص سيٽ شامل ڪري ٿي، جن مان اڪثر اسان ٻين مضمونن ۾ پڻ شامل ڪنداسين.
docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh
منڊو ڊي
docker exec -it my-mongo bash
cd bin
mongo
ٽيبل ٺاهيو
هاڻي اسان ڪمانڊ لائن استعمال ڪندي مختلف عملن کي انجام ڏيڻ لاءِ ڊيٽابيس سان رابطو ڪري سگهون ٿا. اچو ته هڪ ٽيبل ٺاهي شروع ڪريون جيڪا مختلف فنڪارن پاران لکيل گيتن بابت معلومات محفوظ ڪري. اهي گيت شايد البم جو حصو هجن. هڪ گيت لاء اختياري خاصيتون آهن ڇڏڻ جو سال، قيمت، صنف ۽ درجه بندي. اسان کي اضافي خاصيتن جو حساب ڏيڻو پوندو جيڪو مستقبل ۾ "ٽيگ" فيلڊ ذريعي گهربل هجي. اهو نيم ٺهيل ڊيٽا کي اهم-قدر جوڑوں جي صورت ۾ محفوظ ڪري سگهي ٿو.
PostgreSQL
CREATE TABLE Music (
Artist VARCHAR(20) NOT NULL,
SongTitle VARCHAR(30) NOT NULL,
AlbumTitle VARCHAR(25),
Year INT,
Price FLOAT,
Genre VARCHAR(10),
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);
Cassandra
Cassandra ۾ ٽيبل ٺاهڻ تمام گهڻو آهي PostgreSQL. مکيه اختلافن مان هڪ آهي سالميت جي رڪاوٽن جو فقدان (مثال طور NUT NULL)، پر اها ذميواري آهي ايپليڪيشن جي، نه NoSQL ڊيٽابيس جي. پرائمري ڪيئي هڪ ورهاڱي جي ڪنجي تي مشتمل آهي (هيٺ ڏنل مثال ۾ آرٽسٽ ڪالم) ۽ ڪلسٽرنگ ڪالمن جو هڪ سيٽ (هيٺ ڏنل مثال ۾ گيت ٽائيٽل ڪالم). ورهاڱي جي ڪنجي اهو طئي ڪري ٿي ته ڪهڙي ورهاڱي/شارڊ کي قطار ۾ رکڻ گهرجي، ۽ ڪلسٽرنگ ڪالمن ظاهر ڪن ٿا ته ڊيٽا کي موجوده شارڊ ۾ ڪيئن منظم ڪيو وڃي.
CREATE KEYSPACE myapp;
USE myapp;
CREATE TABLE Music (
Artist TEXT,
SongTitle TEXT,
AlbumTitle TEXT,
Year INT,
Price FLOAT,
Genre TEXT,
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);
منڊو ڊي
MongoDB ڊيٽا کي ڊيٽابيس ۾ منظم ڪري ٿو (ڊيٽابيس) (جيئن ڪي اسپيس ۾ ڪئاسندرا)، جتي اتي مجموعا آهن (ٽيبلز سان ملندڙ جلندڙ) جيڪي دستاويزن تي مشتمل آهن (ٽيبل ۾ قطار وانگر). MongoDB ۾، بنيادي طور تي ابتدائي اسڪيما جي وضاحت ڪرڻ جي ڪا ضرورت ناهي. ٽيم "ڊيٽابيس استعمال ڪريو"هيٺ ڏيکاريل آهي، پهرين ڪال تي ڊيٽابيس کي فوري ڪري ٿو ۽ نئين ٺاهيل ڊيٽابيس جي حوالي سان تبديل ڪري ٿو. جيتوڻيڪ مجموعا واضح طور تي ٺاھڻ جي ضرورت نه آھي؛ اھي خودڪار طور تي ٺاھيا ويندا آھن، بس جڏھن توھان ھڪڙي نئين مجموعي ۾ پھريون دستاويز شامل ڪريو. نوٽ ڪريو ته MongoDB ٽيسٽ ڊيٽابيس کي ڊفالٽ طور استعمال ڪري ٿو، تنهنڪري ڪو به ڪليڪشن-سطح وارو آپريشن بغير مخصوص ڊيٽابيس جي وضاحت ڪرڻ کان سواءِ ان تي ڊفالٽ طور هلندو.
use myNewDatabase;
ٽيبل بابت ڄاڻ حاصل ڪرڻ
PostgreSQL
d Music
Table "public.music"
Column | Type | Collation | Nullable | Default
--------------+-----------------------+-----------+----------+--------
artist | character varying(20) | | not null |
songtitle | character varying(30) | | not null |
albumtitle | character varying(25) | | |
year | integer | | |
price | double precision | | |
genre | character varying(10) | | |
criticrating | double precision | | |
tags | text | | |
Indexes:
"music_pkey" PRIMARY KEY, btree (artist, songtitle)
Cassandra
DESCRIBE TABLE MUSIC;
CREATE TABLE myapp.music (
artist text,
songtitle text,
albumtitle text,
year int,
price float,
genre text,
tags text,
PRIMARY KEY (artist, songtitle)
) WITH CLUSTERING ORDER BY (songtitle ASC)
AND default_time_to_live = 0
AND transactions = {'enabled': 'false'};
منڊو ڊي
use myNewDatabase;
show collections;
ٽيبل ۾ ڊيٽا داخل ڪرڻ
PostgreSQL
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Year, Price, Genre, CriticRating,
Tags)
VALUES(
'No One You Know', 'Call Me Today', 'Somewhat Famous',
2015, 2.14, 'Country', 7.8,
'{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre, CriticRating)
VALUES(
'No One You Know', 'My Dog Spot', 'Hey Now',
1.98, 'Country', 8.4
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre)
VALUES(
'The Acme Band', 'Look Out, World', 'The Buck Starts Here',
0.99, 'Rock'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre,
Tags)
VALUES(
'The Acme Band', 'Still In Love', 'The Buck Starts Here',
2.47, 'Rock',
'{"radioStationsPlaying": ["KHCR", "KBQX", "WTNR", "WJJH"], "tourDates": { "Seattle": "20150625", "Cleveland": "20150630"}, "rotation": Heavy}'
);
Cassandra
مجموعي اظهار INSERT
Cassandra ۾ تمام گهڻو ساڳيو ڏسڻ ۾ اچي ٿو پوسٽ گري ايس ايس ايل ۾. بهرحال، اتي هڪ وڏو فرق آهي semantics ۾. Cassandra ۾ INSERT
اصل ۾ هڪ آپريشن آهي UPSERT
، جتي آخري قدر شامل ڪيا ويندا قطار ۾ جيڪڏھن قطار اڳ ۾ ئي موجود آھي.
ڊيٽا داخلا PostgreSQL سان ملندڙ جلندڙ آهي
INSERT
اعلي
.
منڊو ڊي
جيتوڻيڪ MongoDB Cassandra وانگر هڪ NoSQL ڊيٽابيس آهي، ان جي داخل ٿيڻ واري آپريشن ۾ ڪاسندرا جي لفظي رويي سان ڪا به شيءِ عام ناهي. MongoDB ۾ UPSERT
، جيڪو ان کي PostgreSQL سان ملندڙ جلندڙ بڻائي ٿو. بغير ڊفالٽ ڊيٽا شامل ڪرڻ _idspecified
هڪ نئين دستاويز کي گڏ ڪرڻ جو سبب بڻائيندو.
db.music.insert( {
artist: "No One You Know",
songTitle: "Call Me Today",
albumTitle: "Somewhat Famous",
year: 2015,
price: 2.14,
genre: "Country",
tags: {
Composers: ["Smith", "Jones", "Davis"],
LengthInSeconds: 214
}
}
);
db.music.insert( {
artist: "No One You Know",
songTitle: "My Dog Spot",
albumTitle: "Hey Now",
price: 1.98,
genre: "Country",
criticRating: 8.4
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Look Out, World",
albumTitle:"The Buck Starts Here",
price: 0.99,
genre: "Rock"
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Still In Love",
albumTitle:"The Buck Starts Here",
price: 2.47,
genre: "Rock",
tags: {
radioStationsPlaying:["KHCR", "KBQX", "WTNR", "WJJH"],
tourDates: {
Seattle: "20150625",
Cleveland: "20150630"
},
rotation: "Heavy"
}
}
);
ٽيبل سوال
شايد SQL ۽ NoSQL جي وچ ۾ سڀ کان اهم فرق سوال جي تعمير جي لحاظ کان استعمال ٿيل ٻولي آھي FROM
и WHERE
. SQL اظهار کان پوء اجازت ڏئي ٿو FROM
ڪيترن ئي جدولن کي چونڊيو، ۽ اظهار سان WHERE
ڪنهن به پيچيدگي جي ٿي سگهي ٿي (بشمول آپريشن JOIN
ٽيبل جي وچ ۾). بهرحال، NoSQL تي سخت پابندي لاڳو ڪرڻ جي ڪوشش ڪئي وئي آهي FROM
، ۽ صرف هڪ مخصوص ٽيبل سان ڪم ڪريو، ۽ اندر WHERE
, پرائمري چيڪ هميشه بيان ڪيو وڃي. هي تعلق NoSQL ڪارڪردگي پش سان آهي جنهن بابت اسان اڳ ۾ ڳالهايو آهي. اها خواهش ڪنهن به ڪراس-ٽيبلر ۽ ڪراس-ڪي رابطي ۾ هر ممڪن گهٽتائي جي ڪري ٿي. اهو بين-نوڊ رابطي ۾ وڏي دير متعارف ڪرائي سگهي ٿو جڏهن هڪ درخواست جو جواب ڏنو وڃي ۽ ان ڪري عام طور تي بهترين کان بچي وڃي. مثال طور، Cassandra جي ضرورت آهي سوالن کي مخصوص آپريٽرن تائين محدود ڪيو وڃي (صرف =, IN, <, >, =>, <=
) ورهاڱي جي ڪنجين تي، سواءِ جڏهن ثانوي انڊيڪس جي درخواست ڪئي وڃي (صرف = آپريٽر هتي اجازت ڏنل آهي).
PostgreSQL
هيٺ ڏنل سوالن جا ٽي مثال آهن جيڪي آساني سان هڪ SQL ڊيٽابيس ذريعي سرانجام ڏئي سگھجن ٿيون.
- هڪ فنڪار طرفان سڀ گيت ڏيکاريو؛
- فنڪار جا سڀئي گيت ڏيکاريو جيڪي عنوان جي پهرين حصي سان ملن ٿا؛
- ھڪڙي فنڪار جا سڀئي گيت ڏيکاريو جن جي عنوان ۾ ھڪڙو خاص لفظ آھي ۽ قيمت 1.00 کان گھٽ آھي.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%'
AND Price > 1.00;
Cassandra
مٿي ڏنل پوسٽ گري ايس ايس ايل جي سوالن مان، صرف پهريون ئي ڪم ڪندو ڪاسندرا ۾ بغير ڪنهن تبديلي جي، جيئن آپريٽر LIKE
ڪلسترنگ ڪالمن تي لاڳو نٿو ڪري سگھجي جهڙوڪ SongTitle
. هن معاملي ۾، صرف آپريٽرز جي اجازت آهي =
и IN
.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle IN ('Call Me Today', 'My Dog Spot')
AND Price > 1.00;
منڊو ڊي
جيئن پوئين مثالن ۾ ڏيکاريل آهي، مونگو ڊي بي ۾ سوالن ٺاهڻ جو بنيادي طريقو آهي music
هيٺ ڏنل مثال ۾)، تنهنڪري ڪيترن ئي مجموعن جي پڇا ڳاڇا ڪرڻ منع آهي.
db.music.find( {
artist: "No One You Know"
}
);
db.music.find( {
artist: "No One You Know",
songTitle: /Call/
}
);
ٽيبل جي سڀني قطارن کي پڙهڻ
سڀني قطارن کي پڙهڻ صرف سوال جي نموني جو هڪ خاص ڪيس آهي جيڪو اسان اڳ ۾ ڏٺو.
PostgreSQL
SELECT *
FROM Music;
Cassandra
مٿي ڏنل PostgreSQL مثال وانگر.
منڊو ڊي
db.music.find( {} );
ٽيبل ۾ ڊيٽا کي تبديل ڪرڻ
PostgreSQL
PostgreSQL هدايتون مهيا ڪري ٿي UPDATE
ڊيٽا کي تبديل ڪرڻ لاء. هن وٽ ڪو به موقعو ناهي UPSERT
، تنهنڪري هي بيان ناڪام ٿيندو جيڪڏهن قطار هاڻي ڊيٽابيس ۾ نه آهي.
UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';
Cassandra
Cassandra آهي UPDATE
PostgreSQL وانگر. UPDATE
ساڳي معنيٰ رکي ٿي UPSERT
، ساڳيو INSERT
.
مٿي ڏنل PostgreSQL مثال وانگر.
منڊو ڊي
آپريشن UPSERT
. ڪيترن ئي دستاويزن ۽ ساڳي رويي کي اپڊيٽ ڪرڻ UPSERT
آپريشن لاء اضافي جھنڊو قائم ڪندي لاڳو ڪري سگھجي ٿو. مثال طور، هيٺ ڏنل مثال ۾، هڪ مخصوص فنڪار جي صنف کي اپڊيٽ ڪيو ويو آهي سندس گيت جي بنياد تي.
db.music.update(
{"artist": "The Acme Band"},
{
$set: {
"genre": "Disco"
}
},
{"multi": true, "upsert": true}
);
ٽيبل مان ڊيٽا کي هٽائڻ
PostgreSQL
DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';
Cassandra
مٿي ڏنل PostgreSQL مثال وانگر.
منڊو ڊي
MongoDB دستاويزن کي ختم ڪرڻ لاء ٻن قسمن جا عمل آهن -
db.music.deleteMany( {
artist: "The Acme Band"
}
);
ٽيبل کي ختم ڪريو
PostgreSQL
DROP TABLE Music;
Cassandra
مٿي ڏنل PostgreSQL مثال وانگر.
منڊو ڊي
db.music.drop();
ٿڪل
SQL ۽ NoSQL جي وچ ۾ چونڊڻ بابت بحث 10 سالن کان وڌيڪ عرصي کان جاري آهي. هن بحث جا ٻه مکيه پهلو آهن: ڊيٽابيس انجڻ آرڪيٽيڪچر (مونوليٿڪ، ٽرانزيڪشنل SQL بمقابله ورهايل، غير ٽرانزيڪشنل NoSQL) ۽ ڊيٽابيس ڊيزائن جو طريقو (SQL ۾ توهان جي ڊيٽا کي ماڊل ڪرڻ ۽ NoSQL ۾ توهان جي سوالن کي ماڊل ڪرڻ).
يوگا بائيٽ ڊي بي وانگر ورهايل ٽرانزيڪشنل ڊيٽابيس سان، ڊيٽابيس آرڪيٽيڪچر بابت بحث کي آساني سان آرام ڪري سگهجي ٿو. جيئن ته ڊيٽا جو مقدار ان کان وڏو ٿي وڃي ٿو جيڪو هڪ واحد نوڊ تي لکيو وڃي ٿو، هڪ مڪمل طور تي ورهايل فن تعمير جيڪو خودڪار شارڊنگ / ريبلانسنگ سان لڪير لکڻ جي اسڪيبلٽي کي سپورٽ ڪري ٿو.
ان کان سواء، جيئن آرٽيڪل مان هڪ ۾ بيان ڪيو ويو آهي
ڊيٽابيس ڊيزائن جي بحث ڏانهن واپس اچي رهيو آهي، اهو چوڻ مناسب آهي ته ٻنهي ڊيزائن جي طريقن (SQL ۽ NoSQL) ڪنهن به پيچيده حقيقي دنيا جي ايپليڪيشن لاء ضروري آهن. SQL ”ڊيٽا ماڊلنگ“ جو طريقو ڊولپرز کي وڌيڪ آسانيءَ سان بدلجندڙ ڪاروباري ضرورتن کي پورو ڪرڻ جي اجازت ڏئي ٿو، جڏهن ته NoSQL ”ڪوري ماڊلنگ“ جو طريقو ساڳيو ڊولپرز کي اجازت ڏئي ٿو ته ڊيٽا جي وڏي مقدار تي ڪم ڪري سگھي گهٽ دير سان ۽ اعليٰ ذريعي. اهو ئي سبب آهي ته YugaByte DB هڪ عام ڪور ۾ SQL ۽ NoSQL APIs مهيا ڪري ٿي، بجاءِ ڪنهن هڪ طريقي کي فروغ ڏيڻ جي. اضافي طور تي، PostgreSQL ۽ Cassandra سميت مشهور ڊيٽابيس ٻولين سان مطابقت مهيا ڪندي، YugaByte DB يقيني بڻائي ٿو ته ڊولپرز کي ورهايل، انتهائي مسلسل ڊيٽابيس انجڻ سان ڪم ڪرڻ لاءِ ٻي ٻولي سکڻ جي ضرورت ناهي.
هن آرٽيڪل ۾، اسان ڏٺو ته ڪيئن ڊيٽابيس ڊيزائن بنياديات ۾ فرق آهي PostgreSQL، Cassandra، ۽ MongoDB. مستقبل جي مضمونن ۾، اسان ترقي يافته ڊيزائن جي تصورن جهڙوڪ انڊيڪسس، ٽرانزيڪشن، JOINs، TTL هدايتون، ۽ JSON دستاويزن ۾ شامل ڪنداسين.
اسان توهان کي هفتي جي آخر ۾ هڪ عظيم آرام جي خواهشمند آهيون ۽ توهان کي دعوت ڏيو ٿا
جو ذريعو: www.habr.com