Cypher Query Language (CQL) হলো Neo4j-এর জন্য বিশেষভাবে তৈরি একটি ডেটা প্রশ্ন করার ভাষা। এটি SQL-এর মতোই সহজ এবং ব্যবহারকারী-বান্ধব, তবে এটি বিশেষভাবে Graph Database-এর জন্য ডিজাইন করা হয়েছে। CQL-এর মাধ্যমে Nodes (নোড), Relationships (সম্পর্ক), এবং তাদের Properties বিশ্লেষণ, ম্যানিপুলেশন এবং পরিচালনা করা যায়।
Cypher Query Language (CQL) কী?
CQL হলো Neo4j-এর জন্য ডেটা ম্যানিপুলেশনের একটি ডিক্লারেটিভ ভাষা। এটি ডেটার মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহার করা হয় এবং গ্রাফ ডেটাবেজে ডেটা তৈরি, আপডেট এবং রিট্রিভ করার জন্য ব্যবহার করা হয়।
Cypher প্রধানত ব্যবহার করা হয়:
- Nodes (নোড) তৈরি করতে
- Relationships (সম্পর্ক) সংযোগ করতে
- Properties (বৈশিষ্ট্য) ম্যানেজ করতে
- Traversal (সংযোগ অনুসন্ধান) পরিচালনা করতে
CQL-এর মূল উপাদান
- Nodes: গ্রাফের মূল অবজেক্ট বা ডেটা পয়েন্ট।
- Relationships: দুটি নোডের মধ্যে সংযোগ।
- Labels: নোডকে শ্রেণীবদ্ধ করতে লেবেল ব্যবহার করা হয়।
- Properties: নোড ও সম্পর্কের বৈশিষ্ট্য সংরক্ষণ করা হয়।
CQL-এর গুরুত্বপূর্ণ কমান্ডসমূহ
১. ডেটা তৈরি (Create)
একটি নোড তৈরি করা:
CREATE (person:Person {name: 'Alice', age: 30})
RETURN person
- এখানে Person হলো লেবেল, এবং name এবং age হলো প্রোপার্টি।
দুটি নোড এবং সম্পর্ক তৈরি করা:
CREATE (person1:Person {name: 'Alice'})-[:FRIENDS_WITH]->(person2:Person {name: 'Bob'})
RETURN person1, person2
- এখানে FRIENDS_WITH হলো সম্পর্কের টাইপ।
২. ডেটা রিট্রিভ করা (MATCH)
নোড খোঁজা:
MATCH (person:Person)
RETURN person
- এটি Person লেবেলের সব নোড রিটার্ন করবে।
নির্দিষ্ট নোড খোঁজা:
MATCH (person:Person {name: 'Alice'})
RETURN person
- এখানে name='Alice' প্রোপার্টি অনুসারে নোড খোঁজা হচ্ছে।
নোডের সম্পর্ক সহ খোঁজা:
MATCH (person1:Person)-[:FRIENDS_WITH]->(person2:Person)
RETURN person1, person2
- এটি সম্পর্ক সহ দুটি নোড রিটার্ন করবে।
৩. ডেটা আপডেট করা (SET)
প্রোপার্টি আপডেট করা:
MATCH (person:Person {name: 'Alice'})
SET person.age = 31
RETURN person
- এখানে Alice-এর বয়স 31 এ আপডেট করা হয়েছে।
৪. ডেটা মুছে ফেলা (DELETE)
নোড মুছে ফেলা:
MATCH (person:Person {name: 'Alice'})
DELETE person
সম্পর্ক মুছে ফেলা:
MATCH (person1:Person)-[r:FRIENDS_WITH]->(person2:Person)
DELETE r
৫. ডেটার মধ্যে পাথ অনুসন্ধান (PATH Traversal)
নোডের মধ্যে পাথ অনুসন্ধান করা:
MATCH path = (person1:Person)-[*1..3]->(person2:Person)
RETURN path
- এটি 1 থেকে 3 স্তরের মধ্যে সম্পর্ক বিশ্লেষণ করবে।
CQL ব্যবহার করে অ্যাগ্রিগেশন
নোড গণনা:
MATCH (person:Person)
RETURN COUNT(person) AS totalPersons
গড় বের করা:
MATCH (person:Person)
RETURN AVG(person.age) AS averageAge
CQL-এর সুবিধা
- সহজ এবং পাঠযোগ্য: CQL এর সিনট্যাক্স সহজ এবং SQL-এর মতোই ডিক্লারেটিভ।
- জটিল সম্পর্ক বিশ্লেষণ: Neo4j-এর CQL জটিল গ্রাফ সম্পর্ক সহজে বিশ্লেষণ করতে পারে।
- দ্রুত ডেটা অনুসন্ধান: ট্র্যাডিশনাল ডেটাবেজের তুলনায় দ্রুত পাথ অনুসন্ধান করা যায়।
- ফ্লেক্সিবিলিটি: নোড, সম্পর্ক এবং প্রোপার্টির মধ্যে গভীর সংযোগ তৈরি করা সম্ভব।
সারসংক্ষেপ
Cypher Query Language (CQL) হলো Neo4j-এর একটি কার্যকরী এবং ব্যবহারকারী-বান্ধব কুয়েরি ভাষা, যা গ্রাফ ডেটার তৈরি, বিশ্লেষণ এবং পরিচালনার জন্য আদর্শ। এটি ডেটার মধ্যে সম্পর্ক অনুসন্ধান এবং দ্রুত Traversal পরিচালনা করতে পারে, যা ব্যবসায়িক বিশ্লেষণ এবং ডেটা মডেলিংয়ের জন্য অপরিহার্য।
Cypher হলো Neo4J গ্রাফ ডেটাবেজের জন্য একটি বিশেষভাবে তৈরি কিউরি ভাষা (Query Language)। এটি SQL এর অনুরূপ হলেও গ্রাফ ডেটাবেজে নোড এবং রিলেশনশিপের মাধ্যমে তথ্য অনুসন্ধান ও বিশ্লেষণ করতে ব্যবহার করা হয়। Cypher ব্যবহারকারীদের জন্য সহজবোধ্য, ডিক্লারেটিভ (Declarative) এবং গ্রাফ ডেটার সাথে কার্যকরভাবে কাজ করার সুযোগ দেয়।
Cypher কী?
Cypher হলো একটি Graph Query Language যা Neo4J ডেটাবেজে নোড (Nodes), রিলেশনশিপ (Relationships) এবং প্রোপার্টি (Properties) এর সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। এটি এমনভাবে তৈরি করা হয়েছে, যাতে ব্যবহারকারীরা ডেটার সম্পর্ককে ভিজ্যুয়ালভাবে বোঝার মতো স্ট্রাকচার ব্যবহার করতে পারেন।
Cypher এর প্রধান বৈশিষ্ট্য
- সহজবোধ্য সিনট্যাক্স: Cypher ভাষা সহজ, এবং এটি পড়তে অনেকটাই প্রাকৃতিক ভাষার মতো।
- ডিক্লারেটিভ ভাষা: কী করতে হবে সেটাই উল্লেখ করতে হয়, কীভাবে তা করা হবে সেটি Neo4J নিজেই পরিচালনা করে।
- গ্রাফ-ভিত্তিক অপারেশন: নোড, রিলেশনশিপ, এবং প্রোপার্টি ব্যবহার করে গ্রাফ বিশ্লেষণ সহজতর করে।
- প্যাটার্ন ম্যাচিং: নির্দিষ্ট প্যাটার্ন ব্যবহার করে ডেটা খোঁজা যায়।
কেন Cypher ব্যবহার করা হয়?
Cypher ব্যবহার করার প্রধান কারণগুলো হলো:
১. গ্রাফ ডেটা সহজে বিশ্লেষণ করা
Cypher ভাষা দিয়ে নোড এবং রিলেশনশিপের জটিল প্যাটার্ন অনুসন্ধান সহজ হয়।
২. সহজ এবং দ্রুত শিখনযোগ্য
Cypher এর সিনট্যাক্স খুবই সহজবোধ্য। এটি অনেকটা SQL এর মতো দেখতে কিন্তু গ্রাফের জন্য বিশেষভাবে তৈরি।
৩. প্যাটার্ন-ভিত্তিক অনুসন্ধান (Pattern-Based Search)
Cypher গ্রাফ ডেটার নির্দিষ্ট প্যাটার্ন অনুসারে ডেটা অনুসন্ধান করতে পারে।
৪. ডেটার সম্পর্ক বিশ্লেষণ
Neo4J এবং Cypher ব্যবহার করে ডেটার মধ্যে জটিল সম্পর্ক সহজেই বিশ্লেষণ করা যায়।
৫. রিয়েল-টাইম অপারেশন
Cypher দ্রুত এবং রিয়েল-টাইমে কোয়েরি চালাতে সক্ষম।
Cypher এর মূল উপাদান
১. নোড (Node)
গ্রাফের বিভিন্ন এন্টিটি বা বস্তু, যেমন ব্যক্তি, স্থান, পণ্য।
২. রিলেশনশিপ (Relationship)
নোডগুলোর মধ্যে সংযোগ বা সম্পর্ক।
৩. প্রোপার্টি (Properties)
নোড এবং রিলেশনশিপের বৈশিষ্ট্য, যেমন নাম, বয়স ইত্যাদি।
Cypher এর কিছু উদাহরণ
১. নোড তৈরি করা
CREATE (p:Person {name: 'Alice', age: 30})
ব্যাখ্যা: এখানে একটি Person লেবেলের নোড তৈরি করা হয়েছে যার নাম Alice এবং বয়স 30।
২. দুই নোডের মধ্যে সম্পর্ক তৈরি করা
CREATE (a:Person {name: 'Alice'})-[:FRIENDS_WITH]->(b:Person {name: 'Bob'})
ব্যাখ্যা: Alice এবং Bob এর মধ্যে FRIENDS_WITH সম্পর্ক তৈরি করা হয়েছে।
৩. ডেটা অনুসন্ধান (Match Query)
MATCH (p:Person)-[:FRIENDS_WITH]->(friend)
WHERE p.name = 'Alice'
RETURN friend.name
ব্যাখ্যা: Alice এর বন্ধুদের নাম অনুসন্ধান করে ফিরিয়ে আনবে।
৪. সম্পর্ক আপডেট করা
MATCH (p:Person {name: 'Alice'})
SET p.age = 31
ব্যাখ্যা: Alice এর বয়স আপডেট করে 31 সেট করা হয়েছে।
৫. নোড ডিলিট করা
MATCH (p:Person {name: 'Alice'})
DELETE p
ব্যাখ্যা: Alice নামের নোডটি ডিলিট করা হয়েছে।
Cypher এবং SQL এর তুলনা
| বৈশিষ্ট্য | Cypher | SQL |
|---|---|---|
| ডেটা মডেল | গ্রাফ ডেটা মডেল (Node-Relationship) | ট্যাবুলার ডেটা মডেল (Table) |
| কোয়েরি ল্যাঙ্গুয়েজ | ডিক্লারেটিভ গ্রাফ কিউরি ল্যাঙ্গুয়েজ | ডিক্লারেটিভ ট্যাবুলার ল্যাঙ্গুয়েজ |
| ফোকাস | সম্পর্ক এবং নোড | রো এবং কলাম |
| প্যাটার্ন ম্যাচিং | সহজ এবং ন্যাচারাল প্যাটার্ন | তুলনামূলক জটিল |
সারাংশ
Cypher হলো Neo4J এর জন্য বিশেষভাবে তৈরি একটি Graph Query Language, যা ব্যবহারকারীদের জন্য ডেটার নোড এবং সম্পর্ক বিশ্লেষণ সহজতর করে। এটি ডিক্লারেটিভ, সহজবোধ্য এবং দ্রুতগতির একটি কিউরি ভাষা, যা SQL এর তুলনায় আরও বেশি দক্ষভাবে জটিল গ্রাফ ডেটার সম্পর্ক বিশ্লেষণ করতে পারে। ব্যবসায়িক বিশ্লেষণ, সোশ্যাল নেটওয়ার্ক, ফ্রড ডিটেকশন এবং রেকমেন্ডেশন সিস্টেম তৈরিতে Cypher অত্যন্ত কার্যকর ভূমিকা পালন করে।
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 এর মতো কমান্ডের মাধ্যমে সহজে ডেটা তৈরি, সংশোধন এবং অনুসন্ধান করা যায়।
Neo4j-তে Cypher Query Language (CQL) ব্যবহার করে নোড এবং রিলেশনশিপ তৈরি, আপডেট, মুছে ফেলা এবং অনুসন্ধান করা হয়। এটি Neo4j-এর Graph Database এর জন্য বিশেষভাবে ডিজাইন করা একটি ভাষা।
Nodes তৈরি করার জন্য Query
1. একটি Node তৈরি করা
নিচের উদাহরণে একটি Person লেবেলসহ নোড তৈরি করা হচ্ছে:
CREATE (a:Person {name: "John", age: 30})
- Person: নোডের লেবেল।
- name এবং age: নোডের প্রপার্টি।
2. একাধিক Node তৈরি করা
CREATE (a:Person {name: "Alice"}), (b:Person {name: "Bob"})
এটি একই সাথে Alice এবং Bob নামের দুটি নোড তৈরি করবে।
Relationships তৈরি করার জন্য Query
1. দুই নোডের মধ্যে Relationship তৈরি
CREATE (a:Person {name: "Alice"})-[:FRIEND]->(b:Person {name: "Bob"})
- Alice এবং Bob দুটি নোড।
[:FRIEND]: তাদের মধ্যে FRIEND সম্পর্ক তৈরি করেছে।
2. বিদ্যমান নোডের মধ্যে Relationship তৈরি
MATCH (a:Person {name: "Alice"}), (b:Person {name: "Bob"})
CREATE (a)-[:FRIEND]->(b)
- MATCH দ্বারা বিদ্যমান নোডগুলো খুঁজে বের করা হয়।
- তারপর CREATE দ্বারা সম্পর্ক তৈরি করা হয়।
3. Relationship-এর সাথে প্রপার্টি যোগ করা
MATCH (a:Person {name: "Alice"}), (b:Person {name: "Bob"})
CREATE (a)-[:FRIEND {since: 2023}]->(b)
এখানে since: 2023 হলো Relationship-এর একটি প্রপার্টি।
Nodes এবং Relationships অনুসন্ধান করার জন্য Query
1. সমস্ত Node অনুসন্ধান করা
MATCH (n)
RETURN n
এটি সমস্ত নোডকে ফিরিয়ে দেবে।
2. নির্দিষ্ট লেবেলের Node অনুসন্ধান
MATCH (n:Person)
RETURN n
এটি শুধুমাত্র Person লেবেলের নোডগুলোকে রিটার্ন করবে।
3. নির্দিষ্ট প্রপার্টির ভিত্তিতে Node অনুসন্ধান
MATCH (n:Person {name: "Alice"})
RETURN n
এটি নাম "Alice" এর সাথে মিলে যাওয়া নোডকে দেখাবে।
4. নোড এবং তাদের Relationship প্রদর্শন
MATCH (a:Person)-[r:FRIEND]->(b:Person)
RETURN a, r, b
- এটি Person নোড এবং তাদের মধ্যে FRIEND সম্পর্ক দেখাবে।
Nodes এবং Relationships আপডেট করার জন্য Query
1. Node-এর প্রপার্টি আপডেট করা
MATCH (n:Person {name: "Alice"})
SET n.age = 25
RETURN n
এটি Alice নোডের age প্রপার্টি আপডেট করবে।
2. Relationship-এর প্রপার্টি আপডেট করা
MATCH (a:Person {name: "Alice"})-[r:FRIEND]->(b:Person {name: "Bob"})
SET r.since = 2022
RETURN r
এটি FRIEND Relationship-এর since প্রপার্টি আপডেট করবে।
Nodes এবং Relationships মুছে ফেলার জন্য Query
1. একটি Node মুছে ফেলা
MATCH (n:Person {name: "Alice"})
DELETE n
Note: নোডের সাথে সংযুক্ত কোনো Relationship থাকলে এটি কাজ করবে না।
2. নোড এবং তার Relationship মুছে ফেলা
MATCH (n:Person {name: "Alice"})
DETACH DELETE n
DETACH DELETE নোড এবং তার সমস্ত Relationship একসাথে মুছে ফেলে।
3. Relationship মুছে ফেলা
MATCH (a:Person)-[r:FRIEND]->(b:Person)
DELETE r
এটি FRIEND Relationship মুছে ফেলবে।
সম্পূর্ণ উদাহরণ
নিচে একটি সম্পূর্ণ উদাহরণ দেওয়া হলো:
// Node তৈরি করা
CREATE (a:Person {name: "Alice"}), (b:Person {name: "Bob"})
// Relationship তৈরি করা
CREATE (a)-[:FRIEND {since: 2023}]->(b)
// নোড এবং Relationship অনুসন্ধান
MATCH (a:Person)-[r:FRIEND]->(b:Person)
RETURN a, r, b
// Relationship-এর প্রপার্টি আপডেট করা
MATCH (a:Person {name: "Alice"})-[r:FRIEND]->(b:Person {name: "Bob"})
SET r.since = 2024
RETURN r
// নোড মুছে ফেলা
MATCH (n:Person {name: "Bob"})
DETACH DELETE n
সারাংশ
Neo4j-এ Cypher Query Language (CQL) ব্যবহার করে নোড এবং রিলেশনশিপ তৈরি, আপডেট, অনুসন্ধান এবং মুছে ফেলা যায়। CQL অত্যন্ত ব্যবহার-বান্ধব এবং গ্রাফ ডেটাবেসের সাথে কাজ করার জন্য শক্তিশালী একটি টুল। নোডের মাধ্যমে এনটিটি সংরক্ষণ এবং এজের মাধ্যমে তাদের সম্পর্ক সংজ্ঞায়িত করা হয়, যা জটিল ডেটা বিশ্লেষণকে সহজ ও কার্যকর করে তোলে।
Data Filtering কি?
Data Filtering হলো এমন একটি প্রক্রিয়া, যেখানে ডেটাসেট থেকে নির্দিষ্ট শর্ত অনুযায়ী প্রয়োজনীয় তথ্য বের করে আনা হয়। Neo4J-তে Cypher Query Language ব্যবহার করে সহজেই ডেটা ফিল্টার করা যায়।
Pattern Matching কি?
Pattern Matching হলো Neo4J-এর একটি শক্তিশালী ফিচার, যা গ্রাফের মধ্যে থাকা নোড (Nodes) এবং রিলেশনশিপ (Relationships)-এর নির্দিষ্ট প্যাটার্ন (Pattern) খুঁজে বের করে।
Cypher Query Language-এ MATCH কীওয়ার্ড ব্যবহার করে গ্রাফের নির্দিষ্ট প্যাটার্ন খুঁজে বের করা হয়।
Data Filtering এর মূল কনসেপ্ট
WHERE ক্লজ ব্যবহার করে ফিল্টারিং
Neo4J-তে WHERE Clause ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করা যায়।
উদাহরণ: নোড ফিল্টারিং
নিচের কুইরিতে Person নামে একটি লেবেলের মধ্যে থেকে name ফিল্ডের মান "Alice" এমন নোড খোঁজা হচ্ছে।
MATCH (p:Person)
WHERE p.name = "Alice"
RETURN p;
উদাহরণ: সংখ্যার উপর ভিত্তি করে ফিল্টারিং
30 বছরের বেশি বয়সের ব্যক্তিদের তথ্য খোঁজার কুইরি:
MATCH (p:Person)
WHERE p.age > 30
RETURN p.name, p.age;
AND ও OR অপারেটর ব্যবহার
AND এবং OR অপারেটর দিয়ে একাধিক শর্ত যুক্ত করা যায়:
MATCH (p:Person)
WHERE p.age > 30 AND p.city = "Dhaka"
RETURN p.name, p.age;
Text Filtering: CONTAINS, STARTS WITH, ENDS WITH
CONTAINS, STARTS WITH, এবং ENDS WITH ব্যবহার করে টেক্সট ভিত্তিক ফিল্টারিং করা হয়।
MATCH (p:Person)
WHERE p.name STARTS WITH "A"
RETURN p.name;
Pattern Matching এর কনসেপ্ট
MATCH ক্লজ ব্যবহার করে প্যাটার্ন অনুসন্ধান
Neo4J-এর MATCH ক্লজ ব্যবহার করে নোড ও রিলেশনশিপের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে পাওয়া যায়।
নোড এবং রিলেশনশিপ খোঁজা
নিচের কুইরিতে দুটি নোডের মধ্যে FRIENDS_WITH রিলেশনশিপ খোঁজা হচ্ছে।
MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person)
RETURN a.name, b.name;
দ্বিমুখী সম্পর্ক অনুসন্ধান
দ্বিমুখী রিলেশনশিপ খুঁজতে <> চিহ্ন ব্যবহার করা হয়।
MATCH (a:Person)-[:FRIENDS_WITH]-(b:Person)
RETURN a.name, b.name;
WHERE সহ Pattern Matching
Pattern Matching-এ WHERE ক্লজ যুক্ত করে আরও নির্দিষ্ট ফলাফল পাওয়া যায়।
উদাহরণ: বন্ধুর বয়স ফিল্টার করা
Alice-এর বন্ধুর মধ্যে যাদের বয়স ২৫ বছরের বেশি, তাদের তথ্য খোঁজা:
MATCH (a:Person {name: "Alice"})-[:FRIENDS_WITH]->(friend:Person)
WHERE friend.age > 25
RETURN friend.name, friend.age;
প্যাটার্নে গভীরতা (Variable Length Relationships)
Variable Length Relationship দিয়ে Graph Traversal এর গভীরতা নির্ধারণ করা যায়।
উদাহরণ: ১ থেকে ৩ স্তরের বন্ধুর সম্পর্ক খোঁজা
MATCH (a:Person {name: "Alice"})-[:FRIENDS_WITH*1..3]->(friend:Person)
RETURN friend.name;
Filter দ্বারা Property Existence চেক
Neo4J-তে কোনো নোডে নির্দিষ্ট প্রপার্টি আছে কি না তা চেক করা যায়।
উদাহরণ: যাদের email আছে এমন নোড খোঁজা
MATCH (p:Person)
WHERE EXISTS (p.email)
RETURN p.name, p.email;
Pattern Matching এবং Filtering-এর সংমিশ্রণ
Pattern Matching-এর মাধ্যমে গ্রাফের নির্দিষ্ট প্যাটার্ন অনুসন্ধান করা যায় এবং WHERE ক্লজ ব্যবহার করে আরও সুনির্দিষ্ট তথ্য ফিল্টার করা যায়।
উদাহরণ: নির্দিষ্ট শহরের বন্ধুরা
MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person)
WHERE a.city = "Dhaka" AND b.city = "Dhaka"
RETURN a.name, b.name;
সংক্ষেপে
- Data Filtering:
WHEREক্লজ এবং অপারেটর ব্যবহার করে নির্দিষ্ট ডেটা ফিল্টার করা হয়। - Pattern Matching:
MATCHক্লজের মাধ্যমে গ্রাফে নোড ও রিলেশনশিপের নির্দিষ্ট প্যাটার্ন অনুসন্ধান করা যায়। - উভয়ের সংমিশ্রণ: Filtering এবং Pattern Matching একত্রে ব্যবহার করে আরও জটিল এবং কার্যকরী কুইরি লেখা যায়।
Neo4J-এর Cypher Query Language এর শক্তিশালী Data Filtering এবং Pattern Matching ফিচার গ্রাফ ডেটা বিশ্লেষণের ক্ষেত্রে কার্যকর সমাধান প্রদান করে।
Read more