Cypher হলো Neo4j-এর জন্য একটি বিশেষ Declarative Query Language, যা গ্রাফ ডেটাবেসের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। এটি ব্যবহার করে নোড তৈরি, সম্পর্ক তৈরি এবং ডেটা অনুসন্ধানসহ বিভিন্ন কাজ করা যায়।
Cypher এর মূল উপাদান
Cypher ল্যাঙ্গুয়েজের কিছু মূল উপাদান রয়েছে, যেমন:
- নোড (Node)
- রিলেশনশিপ (Relationship)
- প্রপার্টি (Property)
- লেবেল (Label)
Cypher এর বেসিক Syntax
১. নোড তৈরি (Create Node)
নোড তৈরি করতে CREATE কীওয়ার্ড ব্যবহার করা হয়।
CREATE (n:Person {name: "Rahim", age: 30})
n: নোডের জন্য একটি এলিয়াস।Person: নোডের লেবেল।{name: "Rahim", age: 30}: নোডের প্রপার্টি।
২. রিলেশনশিপ তৈরি (Create Relationship)
দুইটি নোডের মধ্যে সম্পর্ক তৈরি করতে CREATE এবং --> ব্যবহার করা হয়।
CREATE (a:Person {name: "Rahim"})-[:FRIEND_OF]->(b:Person {name: "Karim"})
[:FRIEND_OF]: সম্পর্কের নাম।aএবংb: নোডের এলিয়াস।
৩. ডেটা অনুসন্ধান (Query Nodes)
ডেটা খুঁজতে MATCH কীওয়ার্ড ব্যবহার করা হয়।
MATCH (n:Person)
RETURN n
- MATCH: নোড খুঁজে বের করার জন্য।
- RETURN: রেজাল্ট দেখানোর জন্য।
নির্দিষ্ট প্রপার্টি দিয়ে অনুসন্ধান করা:
MATCH (n:Person {name: "Rahim"})
RETURN n
৪. রিলেশনশিপ অনুসন্ধান (Query Relationships)
নোডের মধ্যে সম্পর্ক খুঁজতে --> বা <-- ব্যবহার করা হয়।
MATCH (a:Person)-[:FRIEND_OF]->(b:Person)
RETURN a, b
- এখানে
FRIEND_OFসম্পর্ক সহ নোডগুলো খোঁজা হয়েছে।
৫. প্রপার্টি আপডেট করা (Update Properties)
নোড বা রিলেশনশিপের প্রপার্টি আপডেট করতে SET ব্যবহার করা হয়।
MATCH (n:Person {name: "Rahim"})
SET n.age = 31
RETURN n
৬. নোড মুছে ফেলা (Delete Node)
নোড বা রিলেশনশিপ মুছে ফেলতে DELETE ব্যবহার করা হয়।
MATCH (n:Person {name: "Rahim"})
DELETE n
নোট: নোডের সাথে সম্পর্ক থাকলে সরাসরি ডিলিট করা যাবে না। সম্পর্কগুলোও ডিলিট করতে হবে।
সম্পর্কসহ নোড ডিলিট করার জন্য:
MATCH (n:Person {name: "Rahim"})
DETACH DELETE n
৭. WHERE দিয়ে ফিল্টার করা
ডেটা ফিল্টার করতে WHERE ব্যবহার করা হয়।
MATCH (n:Person)
WHERE n.age > 25
RETURN n
৮. Count এবং Aggregate ফাংশন
ডেটার উপর গণনা বা সংক্ষেপ করতে COUNT ব্যবহার করা হয়।
MATCH (n:Person)
RETURN COUNT(n) AS totalPersons
৯. ORDER BY দিয়ে সাজানো
ডেটা সাজানোর জন্য ORDER BY ব্যবহার করা হয়।
MATCH (n:Person)
RETURN n.name, n.age
ORDER BY n.age DESC
DESC: ডেটা অবতরণক্রমে সাজায়।ASC: ডেটা আরোহীক্রমে সাজায় (ডিফল্ট)।
১০. LIMIT দিয়ে সীমাবদ্ধ করা
ফলাফলের সংখ্যা সীমাবদ্ধ করতে LIMIT ব্যবহার করা হয়।
MATCH (n:Person)
RETURN n
LIMIT 5
সম্পূর্ণ উদাহরণ
নোড তৈরি, সম্পর্ক তৈরি, এবং অনুসন্ধান:
CREATE (a:Person {name: "Rahim", age: 30})
CREATE (b:Person {name: "Karim", age: 28})
CREATE (a)-[:FRIEND_OF]->(b)
MATCH (p:Person)-[:FRIEND_OF]->(f:Person)
RETURN p.name, f.name
সারাংশ
Cypher Query Language হলো Neo4j-এর একটি শক্তিশালী টুল, যা নোড এবং সম্পর্কের ডেটা পরিচালনা করতে ব্যবহৃত হয়। বেসিক CREATE, MATCH, WHERE, এবং DELETE এর মতো কমান্ডের মাধ্যমে সহজে ডেটা তৈরি, সংশোধন এবং অনুসন্ধান করা যায়।
Read more