Neo4j-এ CRUD বলতে বোঝায় Create (তৈরি করা), Read (পড়া), Update (আপডেট করা) এবং Delete (মুছে ফেলা)। এটি ডেটাবেসে ডেটা সংরক্ষণ, রিড, পরিবর্তন এবং মুছে ফেলার জন্য ব্যবহৃত হয়। Neo4j-এর Cypher Query Language ব্যবহার করে খুব সহজেই CRUD অপারেশনগুলো সম্পাদন করা যায়।
Create Operation
Create Operation ব্যবহার করে Neo4j-এ নতুন Node এবং Relationship তৈরি করা হয়।
নোড তৈরি করা:
নিচের কোয়েরি দিয়ে একটি নতুন নোড তৈরি করা হয়।
CREATE (n:Person {name: 'Alice', age: 25, city: 'Dhaka'});
ব্যাখ্যা:
- n: নোডের জন্য একটি Alias।
- Person: নোডের Label।
{}: নোডের Properties।
একাধিক নোড তৈরি করা:
CREATE (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'});
রিলেশনশিপ তৈরি করা:
নোডের মধ্যে সম্পর্ক তৈরি করতে নিচের কোয়েরি ব্যবহার করা হয়।
CREATE (a:Person {name: 'Alice'})-[:FRIENDS_WITH]->(b:Person {name: 'Bob'});
Read Operation
Read Operation দিয়ে ডেটাবেস থেকে ডেটা রিড করা হয়।
সব নোড রিড করা:
MATCH (n) RETURN n;
ব্যাখ্যা:
- MATCH: Neo4j-এ ডেটা রিড করতে ব্যবহৃত হয়।
- RETURN: কোয়েরির ফলাফল রিটার্ন করে।
নির্দিষ্ট লেবেল সহ নোড খোঁজা:
MATCH (n:Person) RETURN n;
নির্দিষ্ট প্রপার্টি সহ নোড খোঁজা:
MATCH (n:Person {name: 'Alice'}) RETURN n;
নোডের সাথে রিলেশনশিপ খোঁজা:
MATCH (a:Person)-[r:FRIENDS_WITH]->(b:Person)
RETURN a.name, b.name;
Update Operation
Update Operation দিয়ে বিদ্যমান নোড বা রিলেশনশিপের Properties পরিবর্তন করা হয়।
নোড আপডেট করা:
MATCH (n:Person {name: 'Alice'})
SET n.age = 26, n.city = 'Chattogram'
RETURN n;
ব্যাখ্যা:
- MATCH: নোড খুঁজে বের করে।
- SET: প্রপার্টি আপডেট করে।
নতুন প্রপার্টি যোগ করা:
MATCH (n:Person {name: 'Alice'})
SET n.occupation = 'Engineer'
RETURN n;
রিলেশনশিপ আপডেট করা:
MATCH (a:Person {name: 'Alice'})-[r:FRIENDS_WITH]->(b:Person {name: 'Bob'})
SET r.since = 2024
RETURN r;
Delete Operation
Delete Operation দিয়ে নোড বা রিলেশনশিপ ডিলিট করা হয়।
নোড মুছে ফেলা:
MATCH (n:Person {name: 'Alice'})
DELETE n;
নোড ও তার রিলেশনশিপ ডিলিট করা:
MATCH (n:Person {name: 'Alice'})
DETACH DELETE n;
ব্যাখ্যা:
- DETACH DELETE: নোড এবং তার সকল সম্পর্ক একসাথে মুছে ফেলে।
রিলেশনশিপ মুছে ফেলা:
MATCH (a:Person {name: 'Alice'})-[r:FRIENDS_WITH]->(b:Person {name: 'Bob'})
DELETE r;
উদাহরণ: সম্পূর্ণ CRUD অপারেশন
1. নোড তৈরি (Create):
CREATE (n:Person {name: 'Alice', age: 25});
2. নোড রিড (Read):
MATCH (n:Person {name: 'Alice'}) RETURN n;
3. নোড আপডেট (Update):
MATCH (n:Person {name: 'Alice'})
SET n.age = 26
RETURN n;
4. নোড মুছে ফেলা (Delete):
MATCH (n:Person {name: 'Alice'})
DETACH DELETE n;
সংক্ষেপ
Neo4j-এ CRUD Operations এর মাধ্যমে ডেটাবেসে ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলা খুব সহজেই করা যায়। Cypher Query Language ব্যবহার করে নোড ও রিলেশনশিপ নিয়ে জটিল কাজগুলোও দ্রুত এবং কার্যকরভাবে সম্পাদন করা যায়। এটি ডেটার মধ্যে থাকা সম্পর্ককে বিশ্লেষণ এবং ম্যানেজ করার জন্য বিশেষভাবে কার্যকর।
Neo4j-এ Nodes তৈরি করার সময়, আপনি সেই নোডের সাথে Properties যুক্ত করতে পারেন যা সেই নোডের বৈশিষ্ট্য বা ডেটা ধারণ করবে। Cypher Query Language ব্যবহার করে সহজেই এই অপারেশনটি করা যায়।
Nodes তৈরি করা
নোড তৈরি করার সাধারণ সিনট্যাক্স
CREATE (n:Label {property1: value1, property2: value2, ...});
এখানে:
nহল নোডের এলিয়াস (Alias)।Labelহল নোডের লেবেল (যেমন:Person,City,Productইত্যাদি)।{property1: value1, property2: value2, ...}নোডের প্রপার্টি এবং তাদের মান।
উদাহরণ ১: একজন ব্যক্তির নোড তৈরি করা
CREATE (n:Person {name: 'Alice', age: 30, city: 'Dhaka'});
এখানে:
nহল নোডের এলিয়াস।Personহল নোডের লেবেল।{name: 'Alice', age: 30, city: 'Dhaka'}হল নোডের প্রপার্টি যা Alice নামক ব্যক্তির নাম, বয়স এবং শহর ধারণ করছে।
উদাহরণ ২: একাধিক নোড তৈরি করা
CREATE (a:Person {name: 'Alice', age: 30}), (b:Person {name: 'Bob', age: 25});
এখানে:
- দুটি
Personনোড তৈরি করা হয়েছে, একটির নামAliceএবং অন্যটির নামBob।
Properties যোগ করা
একটি নোড তৈরি করার সময় আপনি Properties যুক্ত করতে পারেন, যা নোডের বিশেষ বৈশিষ্ট্য হিসেবে কাজ করবে। নোডের প্রপার্টি একটি Key-Value Pair আকারে থাকে, যেখানে Key হল প্রপার্টির নাম এবং Value হল সেই প্রপার্টির মান।
উদাহরণ ৩: ব্যক্তির নাম এবং বয়স সহ নোড তৈরি করা
CREATE (n:Person {name: 'Alice', age: 30});
এখানে:
nameএবংageহল প্রপার্টি, যেখানেAliceহল নাম এবং30হল বয়স।
উদাহরণ ৪: একাধিক প্রপার্টি সহ নোড তৈরি করা
CREATE (p:Person {name: 'John', age: 28, city: 'New York', occupation: 'Engineer'});
এখানে:
name,age,city, এবংoccupationহল নোডের প্রপার্টি, যার মাধ্যমে John এর নাম, বয়স, শহর এবং পেশা সংরক্ষিত হচ্ছে।
একই নোডে একাধিক প্রপার্টি যোগ করা
আপনি একটি নোড তৈরি করার পর নতুন প্রপার্টি যোগ করতে পারেন।
নোড আপডেট করা এবং নতুন প্রপার্টি যোগ করা
MATCH (n:Person {name: 'Alice'})
SET n.email = 'alice@example.com'
RETURN n;
এখানে:
MATCHব্যবহার করে Alice নামকPersonনোডটি খুঁজে বের করা হয়েছে।SETদিয়ে নতুন প্রপার্টিemailযোগ করা হয়েছে, যার মানalice@example.com।
Properties যোগ করার অন্যান্য উদাহরণ
উদাহরণ ৫: সিটি এবং পিন কোড সহ শহরের নোড তৈরি করা
CREATE (c:City {name: 'Dhaka', country: 'Bangladesh', zipcode: '1212'});
এখানে:
Cityনোডেname,country, এবংzipcodeপ্রপার্টি যোগ করা হয়েছে।
উদাহরণ ৬: পণ্যের নোড তৈরি করা
CREATE (p:Product {name: 'Laptop', brand: 'Dell', price: 60000, stock: 100});
এখানে:
Productনোডেname,brand,price, এবংstockপ্রপার্টি যোগ করা হয়েছে।
সংক্ষেপ
Neo4j-এ Nodes তৈরি করা এবং Properties যোগ করা অত্যন্ত সহজ। CREATE কমান্ড ব্যবহার করে আপনি নোড তৈরি করতে পারেন এবং একাধিক প্রপার্টি যোগ করতে পারেন, যা ডেটার বৈশিষ্ট্য ধারণ করে। Cypher Query Language ব্যবহার করে আপনি সহজেই নোড তৈরি করতে এবং তাদের প্রপার্টি আপডেট করতে পারেন।
নিওফোরজে (Neo4J) এ ডেটা রিট্রিভ (Retrieve) করতে সাধারণত Cypher কুয়েরি ভাষা ব্যবহার করা হয়। MATCH স্টেটমেন্টটি ডেটা অনুসন্ধানের জন্য ব্যবহৃত হয়। এটি গ্রাফের মধ্যে নোড এবং তাদের সম্পর্কগুলি খুঁজে বের করতে সাহায্য করে।
MATCH কুয়েরি ব্যবহার
MATCH কুয়েরি দিয়ে নির্দিষ্ট নোড বা সম্পর্ক (relationship) খুঁজে বের করা হয়। এটি একটি মৌলিক কুয়েরি ভাষা যা গ্রাফ ডেটাবেসে ডেটা রিট্রিভালকে সহজ ও কার্যকর করে তোলে।
সাধারণ সিনট্যাক্স:
MATCH (node_label)
RETURN node_label;
এখানে:
- (node_label): গ্রাফে থাকা নোডের নাম বা ট্যাগ, যা আপনি খুঁজে পেতে চান।
- RETURN: এটি অনুসন্ধান করা ডেটা ফিরিয়ে দেয়।
উদাহরণ ১: একটি নোড খুঁজে বের করা
ধরা যাক, আপনি একটি "Person" নামে নোড খুঁজে বের করতে চান।
MATCH (p:Person)
RETURN p;
এই কুয়েরি দ্বারা "Person" লেবেলযুক্ত (label) সমস্ত নোড রিটার্ন হবে।
উদাহরণ ২: নির্দিষ্ট প্রোপার্টি সহ নোড খুঁজে বের করা
যদি আপনি নির্দিষ্ট প্রোপার্টি অনুযায়ী নোড খুঁজতে চান, যেমন "name" প্রোপার্টি দিয়ে একটি ব্যক্তি খুঁজে বের করা, তাহলে:
MATCH (p:Person)
WHERE p.name = 'John'
RETURN p;
এখানে, WHERE ক্লজটি ব্যবহার করে আপনি নির্দিষ্ট শর্ত অনুযায়ী নোডটি খুঁজে পাবেন।
উদাহরণ ৩: সম্পর্কের মাধ্যমে ডেটা অনুসন্ধান
গ্রাফ ডেটাবেসে, নোডের মধ্যে সম্পর্ক থাকতে পারে। আপনি সম্পর্কের মধ্যে ডেটা অনুসন্ধান করতে MATCH কুয়েরি ব্যবহার করতে পারেন।
MATCH (p:Person)-[:FRIEND_WITH]->(f:Person)
RETURN p.name, f.name;
এই কুয়েরিটি সমস্ত "Person" নোডের মধ্যে "FRIEND_WITH" সম্পর্ক খুঁজে বের করে এবং সংশ্লিষ্ট বন্ধুদের নাম রিটার্ন করবে।
উদাহরণ ৪: একাধিক সম্পর্ক অনুসন্ধান
এছাড়া, একাধিক সম্পর্ক বা নোডও খুঁজে বের করা যায়। যেমন, যদি আপনি "Person" নোড এবং তার সম্পর্কিত শহর "City" নোড খুঁজে পেতে চান:
MATCH (p:Person)-[:LIVES_IN]->(c:City)
RETURN p.name, c.name;
এখানে, LIVES_IN সম্পর্কের মাধ্যমে ব্যক্তি এবং তার শহরের নাম রিটার্ন হবে।
MATCH কুয়েরি সংক্ষেপে
- MATCH ব্যবহার করে গ্রাফ ডেটাবেসে নোড এবং সম্পর্ক খুঁজে পাওয়া যায়।
- WHERE ব্যবহার করে আপনি আরও নির্দিষ্ট শর্ত দিতে পারেন।
- RETURN ব্যবহার করে অনুসন্ধান করা ডেটা ফেরত পাওয়া যায়।
- -[:RELATIONSHIP]-> ব্যবহার করে আপনি নোডের মধ্যে সম্পর্ক চিহ্নিত করতে পারেন।
নিওফোরজে (Neo4J) এ MATCH কুয়েরি ব্যবহার করে গ্রাফ ডেটাবেস থেকে ডেটা রিট্রিভ করা সহজ এবং কার্যকর। এটি সম্পর্ক ভিত্তিক বিশ্লেষণে খুবই সহায়ক।
নিওফোরজে (Neo4J) গ্রাফ ডাটাবেসে নোড (Node) এবং এজ (Edge)-এর মধ্যে সম্পর্কিত ডেটা পরিচালনা করতে এবং প্রপার্টি আপডেট বা পরিবর্তন করতে সিএসএল (Cypher Query Language) ব্যবহার করা হয়। এখানে আমরা নোড আপডেট এবং প্রপার্টি পরিবর্তনের জন্য দুটি প্রধান কমান্ডের বিষয়ে আলোচনা করব, যা হল SET এবং REMOVE।
নোড আপডেট (Node Update) - SET
নিওফোরজে-তে নোডের প্রপার্টি পরিবর্তন বা নতুন প্রপার্টি যোগ করতে SET কমান্ড ব্যবহার করা হয়। এটি একটি বা একাধিক প্রপার্টি যোগ বা আপডেট করতে পারে।
SET কমান্ড ব্যবহার
MATCH (n:Person {name: 'John'})
SET n.age = 30
এখানে, একটি Person লেবেলযুক্ত নোডের name প্রপার্টি 'John' হলে, তার age প্রপার্টি 30 এ আপডেট করা হবে।
একাধিক প্রপার্টি আপডেট
MATCH (n:Person {name: 'John'})
SET n.age = 30, n.city = 'Dhaka'
এখানে, age এবং city প্রপার্টি একসাথে আপডেট করা হয়েছে।
নতুন প্রপার্টি যোগ করা
MATCH (n:Person {name: 'John'})
SET n.email = 'john@example.com'
এই কমান্ডটি John নামের নোডের সাথে একটি নতুন email প্রপার্টি যোগ করবে।
প্রপার্টি অপসারণ (Property Removal) - REMOVE
নিওফোরজে-তে কোনো নোড বা সম্পর্কের প্রপার্টি অপসারণ করতে REMOVE কমান্ড ব্যবহার করা হয়। এটি নির্দিষ্ট প্রপার্টি বা লেবেল অপসারণের জন্য ব্যবহার করা হয়।
REMOVE কমান্ড ব্যবহার
MATCH (n:Person {name: 'John'})
REMOVE n.age
এখানে, John নামের নোডের age প্রপার্টি অপসারণ করা হবে।
একাধিক প্রপার্টি অপসারণ
MATCH (n:Person {name: 'John'})
REMOVE n.age, n.city
এই কমান্ডটি John নামের নোডের age এবং city প্রপার্টি অপসারণ করবে।
সারাংশ
নিওফোরজে (Neo4J) এ নোড আপডেট এবং প্রপার্টি পরিবর্তন করার জন্য SET এবং REMOVE কমান্ড ব্যবহার করা হয়। SET কমান্ডের মাধ্যমে একটি বা একাধিক প্রপার্টি যোগ বা আপডেট করা যায়, এবং REMOVE কমান্ড ব্যবহার করে কোনো প্রপার্টি বা লেবেল অপসারণ করা যায়। এই দুটি কমান্ড গ্রাফ ডাটাবেসে ডেটা ম্যানিপুলেশনকে সহজ ও কার্যকরী করে তোলে।
নিওফোরজে (Neo4J) একটি গ্রাফ ডেটাবেস, যেখানে ডেটা নোড (Node), এজ (Edge), এবং প্রপার্টি (Property) হিসেবে সংরক্ষিত থাকে। কখনও কখনও ডেটা মুছে ফেলা প্রয়োজন হতে পারে, যেমন- সম্পর্ক বা তথ্যের কোনো নির্দিষ্ট অংশ বাদ দেওয়া। নিওফোরজে গ্রাফ ডেটাবেসে ডেটা মুছে ফেলার জন্য দুটি প্রধান কিউএল কমান্ড রয়েছে: DELETE এবং DETACH DELETE।
DELETE কমান্ড
DELETE কমান্ড ব্যবহার করে একটি নোড বা এজ মুছে ফেলা যায়। তবে, DELETE কমান্ডের একটি গুরুত্বপূর্ণ সীমাবদ্ধতা রয়েছে: এটি শুধুমাত্র সেই নোড বা এজ মুছে ফেলে, যা কোনো সম্পর্কিত এজ বা নোড দ্বারা সংযুক্ত নয়। অর্থাৎ, যদি কোনো নোড অন্য নোড বা এজের সাথে সংযুক্ত থাকে, তাহলে DELETE কমান্ড তা মুছে ফেলতে পারবে না।
উদাহরণ:
MATCH (n:Person {name: 'John'})
DELETE n
এখানে, John নামক একটি ব্যক্তি নোড মুছে ফেলা হবে, তবে যদি এই নোডটি অন্য কোনো নোডের সাথে সম্পর্কযুক্ত থাকে, তাহলে এটি মুছে ফেলা সম্ভব হবে না।
DETACH DELETE কমান্ড
DETACH DELETE কমান্ড ব্যবহার করে, আপনি একটি নোড এবং তার সাথে সম্পর্কিত সমস্ত এজ (Edges) মুছে ফেলতে পারেন। এটি DELETE কমান্ডের মতো কাজ করে, তবে DETACH DELETE সম্পর্কিত এজগুলোকেও মুছে ফেলে। অর্থাৎ, এটি নোডকে ডিলিট করার সাথে সাথে তার সাথে সংযুক্ত সমস্ত সম্পর্ককেও মুছে দেয়।
উদাহরণ:
MATCH (n:Person {name: 'John'})
DETACH DELETE n
এখানে, John নামক ব্যক্তি নোডটি তার সাথে সম্পর্কিত সমস্ত এজসহ মুছে ফেলা হবে। এর ফলে, সম্পর্কিত ডেটার কোনো ক্ষতি না হয়ে পুরো নোডটি পরিষ্কার হয়ে যাবে।
DELETE এবং DETACH DELETE এর মধ্যে পার্থক্য
- DELETE: এটি শুধু নোড বা এজ মুছে ফেলে, তবে যদি তারা অন্য নোড বা এজের সাথে সম্পর্কিত থাকে, তবে তা মুছে ফেলতে পারে না।
- DETACH DELETE: এটি নোড বা এজ মুছে ফেলতে সক্ষম এবং সম্পর্কিত সব এজও মুছে ফেলে, ফলে সম্পর্কিত ডেটা আরও সহজে পরিষ্কার হয়ে যায়।
সারাংশ
নিওফোরজে (Neo4J) ডেটা মুছে ফেলার জন্য DELETE এবং DETACH DELETE দুটি কমান্ড প্রদান করে। DELETE শুধুমাত্র সম্পর্কহীন নোড বা এজ মুছে ফেলে, আর DETACH DELETE নোড এবং তার সম্পর্কিত সব এজ মুছে ফেলে। উপযুক্ত কমান্ড ব্যবহারের মাধ্যমে আপনি আপনার গ্রাফ ডেটাবেসের ডেটা পরিষ্কার ও সাজাতে পারবেন।
Read more