নিও 4 জ - সাইফার বনাম গ্রিমলিন কোয়ের ভাষা


103

আমি REST এপিআই ব্যবহার করে নিও 4 জ দিয়ে বিকাশ শুরু করছি। আমি দেখেছি জটিল প্রশ্নগুলি সম্পাদনের জন্য দুটি বিকল্প রয়েছে - সাইফার (নিও 4 জের ক্যোয়ারী ল্যাঙ্গুয়েজ) এবং গ্রিমলিন (সাধারণ উদ্দেশ্য গ্রাফ কোয়েরি / ট্র্যাভারসাল ল্যাঙ্গুয়েজ)।

আমি যা জানতে চাই তা এখানে - এমন কোনও প্রশ্ন বা অপারেশন রয়েছে যা গ্রিমলিন ব্যবহার করে করা যায় এবং সাইফার দিয়ে করা যায় না? ্য মচক্সফন্দক্স?

সাইফার আমার কাছে গ্রিমলিনের চেয়ে অনেক বেশি স্পষ্ট মনে হয়েছে এবং সাধারণভাবে মনে হয় যে নিও 4 জে ছেলেরা সাইফারের সাথে যাচ্ছেন। তবে - গ্রিমলিনের তুলনায় সাইফার যদি সীমাবদ্ধ থাকে - আমি সত্যিই এটি আগে থেকেই জানতে চাই।


4
সাইফার একটি অ-টিউরিং সম্পূর্ণ ঘোষণামূলক ভাষা। গ্রিমলিন Neo4j জাভা এপিআই এর উপর অভিনব র‍্যাপার এবং এটি আবশ্যক। স্পষ্টতই, গ্রিমলিনে এমন কিছু কাজ করা সম্ভব যা আপনি সাইফারে করতে পারবেন না।
প্রখর অগ্রওয়াল

4
অ্যাপাচি স্পার্ক 3-এ সাইফার অন্তর্ভুক্ত থাকবে যা এতে তাদের দৃষ্টিভঙ্গি সম্পর্কে অনেক কিছু বলে।
ওয়াকার রোয়ে

উত্তর:


80

সাধারণ অনুসন্ধানের জন্য সাইফার যথেষ্ট এবং সম্ভবত এটি দ্রুত। সাইফারের ওপরে গ্রিমলিনের সুবিধা হ'ল আপনি যখন উচ্চ স্তরের ট্র্যাভার্সিংয়ের মধ্যে পড়েন। গ্রিমলিনে, আপনি সঠিক ট্র্যাভারসাল প্যাটার্নটি (বা আপনার নিজস্ব অ্যালগোরিদম) আরও ভালভাবে সংজ্ঞায়িত করতে পারেন যেখানে সাইফারে ইঞ্জিন নিজেই সেরা ট্র্যাভার্সিং সমাধান সন্ধান করার চেষ্টা করে।

আমি সাইফারটিকে তার সরলতার কারণে ব্যক্তিগতভাবে ব্যবহার করি এবং আজ অবধি আমার কোনও পরিস্থিতি হয়নি যেখানে আমাকে গ্রিমলিন ব্যবহার করতে হয়েছিল (গ্রিমলিন গ্রাফএমএল আমদানি / রফতানির কাজগুলি বাদ দিয়ে)। আমি আশা করি, যদিও আমাকে গ্রিমলিন ব্যবহার করা প্রয়োজন হলেও, আমি নেটটিতে খুঁজে পেতে পারি এবং নির্দিষ্টভাবে আর কখনও ফিরে আসি না এমন নির্দিষ্ট প্রশ্নের জন্য এটি করব query

আপনি সর্বদা সাইফারটি সত্যই দ্রুত (দিনগুলিতে) শিখতে পারেন এবং তারপরে (দীর্ঘ-চালিত) জেনারেল গ্রিমলিনের সাথে চালিয়ে যেতে পারেন।


4
আপনাকে আরও এগিয়ে নেওয়ার জন্য এখানে একটি নতুন অনলাইন টিউটোরিয়াল শুরু হয়েছে neo4j.org/learn/cyumber এ ।
পিটার নিউবাউর

4
আমি বুঝতে পেরেছিলাম যে সাইফার আরও এসকিউএল এর মতো ছিলেন, আপনি যা চান তা এটিই বলে দেন এবং এটি কীভাবে করবেন তা কার্যকরভাবে কাজ করে। গ্রিমলিনের সাহায্যে আপনি এক্সট্রেসিভ ট্র্যাভার্সাল কমান্ড জারি করেন, এটি অবশ্যই মেনে চলবে।
স্টুয়ার্ট

4
আমার জন্য গ্রিমলিন বেশিরভাগ প্রশ্নের ক্ষেত্রে সাইফারের চেয়ে উল্লেখযোগ্যভাবে দ্রুতগতির হয়েছে।
জোয়ান

9
টিঙ্কারপপ ৩.x হিসাবে, গ্রিমলিনের অপরিহার্য এবং ঘোষণামূলক বৈশিষ্ট্য উভয়ই রয়েছে। এই উত্তরে বর্ণিত সঠিক ট্রভারসাল প্যাটার্ন সংজ্ঞায়িত করতে আপনি আপনার ট্র্যাভারসাল লিখতে পারেন বা আপনি যে প্যাটার্নটি সন্ধান করছেন তা কেবল সংজ্ঞায়িত করতে ম্যাচ স্টেপ ব্যবহার করতে পারেন এবং গ্রিমলিন সেটির সমাধান করবে solve
স্টিফেন ম্যালেট

42

আমাদের প্রশ্নগুলিতে আমাদের কয়েক হাজার নোড অতিক্রম করতে হবে। সাইফার ধীর ছিল। নিও 4 জজ টিম আমাদের জানিয়েছিল যে জাভা এপিআইয়ের বিরুদ্ধে সরাসরি আমাদের অ্যালগরিদম প্রয়োগ করা 100-200 গুণ বেশি দ্রুত হবে। আমরা এটি করেছি এবং এর মধ্যে সহজেই 60 টি ফ্যাক্টর পেয়েছি। আত্মবিশ্বাসের অভাবের কারণে আমাদের সিস্টেমে এখন পর্যন্ত কোনও সিফার কোয়েরি নেই। ইজি সাইফারের ক্যোয়ারীগুলি জাভাতে লেখা সহজ, জটিল প্রশ্নগুলি সম্পাদন করবে না। সমস্যাটি যখন তখন আপনার ক্যোয়ারিতে আপনার একাধিক শর্ত থাকে সাইবারে ট্র্যাভার্সালগুলি সম্পাদন করার জন্য কোনও উপায় নেই tell সুতরাং আপনার সাইফের ক্যোয়ারী প্রথমে একটি ভুল দিকের গ্রাফের কাছে বন্য হয়ে যেতে পারে। আমি গ্রিমলিনের সাথে খুব বেশি কিছু করিনি, তবে আমি কল্পনা করতে পারি যে আপনি গ্রিমলিনের সাথে আরও অনেকগুলি কার্যকরকরণ নিয়ন্ত্রণ পাবেন।


আপনি যখন "সরাসরি জাভা এপিআই এর বিপরীতে" বলছেন তখন কি আপনার অর্থ জাভাতে এম্বেড করা নিও 4j?
পাভেল

4
স্ট্যান্ডেলোন সার্ভার হিসাবে ইনস্টল করা neo4j এর মধ্যে সার্ভার এক্সটেনশনগুলি ব্যবহার করে।
হেইনরিচ

12
2018 থেকে আপডেট - নিও 4 জনের আধুনিক সংস্করণগুলিতে দেশীয় সূচক প্রকারের এক বিস্তৃত পরিসর দেওয়া, এই উত্তরটি যথেষ্ট পুরানো; নিও 4 জে পারফরম্যান্সের সংখ্যা প্রকাশ করেছেন
FrobberOfBits

4
"জাভা এপিআইয়ের বিরুদ্ধে সরাসরি আমাদের অ্যালগরিদম বাস্তবায়ন করা" আসলে কিছুটা বিভ্রান্তিকর। স্পষ্টতই, বিন্দু A থেকে পয়েন্ট বিতে যাওয়ার দ্রুততমতম পথটি হ'ল সংক্ষিপ্ততম পথটি নেওয়া। এর জন্য অতিরিক্ত, নির্দিষ্ট, তথ্য জানা দরকার। নিম্ন স্তরে যাওয়া সর্বদা একটি মেশিন পরিকল্পনাকে ছাড়িয়ে যাবে, কারণ আপনি জানেন যে আপনি মেশিনটি পারেন না এমন অনুমানগুলি তৈরি করতে পারেন। যাইহোক, সাইফার সহজেই একটি নির্লজ্জভাবে প্রয়োগ করা নিম্ন-স্তরের অ্যালগোরিদমকে সহজেই ছাপিয়ে যেতে পারে, ব্যবহার করার জন্য অনেক কম জ্ঞানের প্রয়োজন হয় এবং এটি বাস্তবায়নের জন্য আরও দ্রুত। বিশেষত যেহেতু সাইফার প্রতিটি নিও 4 জ রিলিজের সাথে আরও ভাল হয়। (স্মার্ট পরিকল্পনাকারী)
তেজরা

29

সাইফারে নিও 4 জে টিমের প্রচেষ্টা সত্যিই চিত্তাকর্ষক, এবং এটি অনেক দূর এগিয়ে গেছে। নিও দলটি সাধারণত মানুষকে তার দিকে ঠেলে দেয় এবং সাইফার পরিপক্ক হওয়ার সাথে সাথে গ্র্যামলিন সম্ভবত কম মনোযোগ পাবে। সাইফার একটি দীর্ঘমেয়াদী পছন্দ।

বলেছিল- গ্রিমলিন একজন গ্রোভী ডিএসএল। এর Neo4j REST এন্ডপয়েন্টের মাধ্যমে এটি ব্যবহার করা অন্তর্নিহিত Neo4j জাভা API এ পূর্ণ, নিখরচায় অ্যাক্সেসের অনুমতি দেয়। এটি (এবং একই বিভাগের অন্যান্য স্ক্রিপ্ট প্লাগইনগুলি) নিম্ন-স্তরের পাওয়ারের ক্ষেত্রে মেলা যায় না। এছাড়াও, আপনি গ্রিমলিন প্লাগইনের মধ্যে থেকে সাইফারটি চালাতে পারেন ।

যেভাবেই হোক না কেন, সেখানে একটি বুদ্ধিমান আপগ্রেডের পথ রয়েছে যেখানে আপনি উভয়ই শিখেন। আমি আপনাকে যেতে চাই এবং আপনি দ্রুত যান চলমান সঙ্গে। ইন আমার প্রকল্প , আমি সাধারণত অলস ব্যবহার এবং তারপর সাইফার (অলস মধ্যে থেকে বা না হোক) কল যখন আমি ট্যাবুলার ফলাফল বা ভাবপূর্ণ প্যাটার্ন প্রয়োজন matching- উভয় অলস ডিএসএল ব্যাথা হয়।


20

আমি প্রথমে গ্রিমলিন ব্যবহার শুরু করি। যাইহোক, সেই সময়ে, আরইএসটি ইন্টারফেসটি কিছুটা অস্থির ছিল, তাই আমি সাইফারের দিকে চলে গেলাম। Neo4j এর জন্য এটির আরও ভাল সমর্থন রয়েছে। যাইহোক, কিছু ধরণের প্রশ্ন রয়েছে যা সাইফারের সাথে কেবল সম্ভব নয়, বা সাইফার গ্রিমলিনের সাথে আপনি যেভাবে পারেন তা পুরোপুরি অনুকূল করতে পারেন না।

গ্রিমলিন গ্রোভির উপর নির্মিত, তাই আপনি আরওএসটি ইন্টারফেস থেকে এইচটিটিপি হিট না করেই 'জাভা' কোডটি কার্যকর করতে এবং সার্ভার থেকে বিভিন্ন কার্য সম্পাদন করার জন্য নিও 4 জনের জেনেরিক উপায় হিসাবে ব্যবহার করতে পারেন। অন্যদের মধ্যে, গ্র্যামলিন আপনাকে ডেটা পরিবর্তন করতে দেবে।

যাইহোক, যখন আমি চাই সমস্ত ডেটা অনুসন্ধান করা হয়, আমি সাইফারের সাথে যাই কারণ এটি আরও পাঠযোগ্য এবং বজায় রাখা সহজ। সীমাবদ্ধতা পৌঁছে গেলে গ্রিমলিনই ফ্যালব্যাক হয়।


4
সাইফারের Neo4j 1.7 হিসাবে প্রশ্নগুলি আপডেট করার জন্য সমর্থন রয়েছে, ডকসগুলি
পিটার নিউউবার

4
মনে রাখবেন যে টিআরসিআরপি ইন্টারফেসটি টিঙ্কারপপ ৩ এ চলে যাবে। ব্যবহারকারীরা গ্রিমলিনের স্ট্রিং গ্রিমলিন সার্ভারে প্রেরণ করবেন (যা মূলত রেক্সস্টার, নাম পরিবর্তন ও উন্নত হয়েছে) send
jbmusso

10

গ্র্যামলিন কোয়েরিগুলি প্রোগ্রামগতভাবে উত্পন্ন করা যায়। ( Http://docs.sqlalchemy.org/en/rel_0_7/core/tutorial.html#intro-to-generative- আমার অর্থ কী তা জানতে সন্ধান করুন)) সাইফারের সাথে এটি কিছুটা জটিল বলে মনে হচ্ছে।


@ ম্যাটলুঙ্গো: ১, আমি নিও ৪ ডিজেঙ্গো, ২ সম্পর্কে জানতাম না, এটি সমস্ত ক্ষেত্রে প্রযোজ্য নয় (উদাহরণস্বরূপ ভাষা পাইথন নয়) 3, আপনি যদি প্রোগ্রামিয়ালি নিজেই ক্যোয়ারী লেখেন বা আপনি তৈরি করতে একটি লাইব্রেরি ব্যবহার করেন তবে এটি একই হয় না আপনার জন্য প্রোগ্রামক্রমে ক্যোয়ারী। এই ক্ষেত্রে neo4django সাইফার এবং গ্রিমলিনের বিকল্প সমাধান হিসাবে বিবেচনা করা যেতে পারে।
টোহটম

4
ওহ, অবশ্যই আমি neo4django অবিলম্বে প্রযোজ্য হবে আশা করি না; এটি একটি উদাহরণ ছিল, যেমন এসকিউএল অ্যালকেমি আপনার উত্তরে ছিল। তবে এটি সত্য নয় যে সাইফার উত্পাদন করা আরও কঠিন। সাইফার এবং গ্রিমলিন ক্যোয়ারী ভাষা হিসাবে পৃথক পন্থা গ্রহণ করে তবে আমি দেখতে পাই না যে প্রোগ্রামারিকভাবে সাইবার কীভাবে উত্পন্ন করতে আরও কঠিন ...
ম্যাট লুঙ্গো

8

সাইফার কেবল সাধারণ প্রশ্নের জন্য কাজ করে। আপনি যখন আপনার গ্রাফ ট্র্যাভারসলে জটিল ব্যবসায়ের যুক্তি যুক্ত করতে শুরু করেন এটি নিষিদ্ধভাবে ধীর হয়ে যায় বা পুরোপুরি কাজ করা বন্ধ করে দেয়।

Neo4J পরিষ্কারভাবে জানে যে সাইফার এটা কাটা না হয়, কারণ তারাও APOC পদ্ধতি যা একটি বিকল্প পথ Expander (অন্তর্ভুক্ত প্রদান apoc.path.expand, apoc.path.subgraphAllইত্যাদি)।

গ্রিমলিন শেখা কঠিন তবে এটি সাইফার এবং এপোকের চেয়ে বেশি শক্তিশালী। গ্রিমলিনে আপনি ভাবতে পারেন এমন কোনও যুক্তি বাস্তবায়ন করতে পারেন।

আমি সত্যিই নিও 4 জে একটি টগলযোগ্য গ্রিমলিন সার্ভারের সাথে প্রেরণ করতে চাই (চারপাশে পড়া থেকে, এটি ক্ষেত্রে ব্যবহৃত হত)। আপনি গ্রিমলিনকে একটি লাইভ নিও 4 জে ইভেন্টের বিরুদ্ধে দৌড়াতে পারেন, তবে এতে প্রচুর হুপস জম্পেশ রয়েছে। আমার আশা এই যে নিও 4 জনের প্রতিযোগীরা গ্রিমলিনকে একটি বিকল্প হিসাবে অনুমতি দিচ্ছেন, তাই নিও 4 জনের মামলা অনুসরণ করবে suit


4
neo4j বিশ্বের সর্বাধিক জনপ্রিয় গ্রাফ ডিবি হচ্ছেন, আমি মনে করি তারা এখনও গ্রিমলিন গ্রহণ না করার কোনও কারণ থাকতে পারে।
লুক আরন

4
যেহেতু আপনি কারণগুলি কী হতে পারে তা আপনি ভাগ করে না
নিলে

4

সাইফার গ্রাফ ডাটাবেস অনুসন্ধানের জন্য একটি ঘোষণামূলক ক্যোয়ারী ভাষা। ঘোষণাপত্রটি শব্দটি গুরুত্বপূর্ণ কারণ প্রয়োজনীয় প্রোগ্রামিং প্যারাডিজমের চেয়ে প্রোগ্রামিংয়ের একটি ভিন্ন উপায়।

সাইফার এবং এসকিউএল এর মতো একটি ঘোষণামূলক ক্যোয়ারী ভাষায় আমরা অন্তর্নিহিত ইঞ্জিনকে বলি যে আমরা কী ডেটা আনতে চাই এবং আমরা কীভাবে ডেটা আনতে চাই তা নির্দিষ্ট করে দেই না।

সাইফারে কোনও ব্যবহারকারী ম্যাচের ধারাটিতে আগ্রহের একটি উপগ্রাফকে সংজ্ঞায়িত করে। তারপরে অন্তর্নিহিত ইঞ্জিন গ্রাফ ডাটাবেসে সাব গ্রাফের অনুরূপ উপস্থিতি সন্ধান করতে একটি প্যাটার্ন মেলানো অ্যালগরিদম চালায়।

গ্রিমলিন হ'ল ঘোষণামূলক এবং অপরিহার্য বৈশিষ্ট্য। এটি গ্রাফ ট্র্যাভার্সাল ভাষা যেখানে কোনও ব্যবহারকারীকে গ্রাফটি কীভাবে চলাচল করতে হবে সে সম্পর্কে সুস্পষ্ট নির্দেশনা দিতে হয়।

এই ক্ষেত্রে এই ভাষার মধ্যে পার্থক্য হ'ল সাইফারে আমরা একটি গ্রাফ ডাটাবেসে প্রদত্ত যে কোনও দুটি নোডের মধ্যে পাথ খুঁজে পেতে একটি ক্লিন স্টার অপারেটর ব্যবহার করতে পারি। গ্রিমলিনে তবে আমাদের এ জাতীয় সমস্ত পথ স্পষ্টভাবে সংজ্ঞায়িত করতে হবে। তবে আমরা গ্রাফলিনে একটি পুনরাবৃত্ত অপারেটর ব্যবহার করে গ্রাফ ডাটাবেসে এই জাতীয় স্পষ্ট পাথের একাধিক ঘটনা খুঁজে পেতে পারি। তবে সাইফারে সুস্পষ্ট কাঠামোর উপরে পুনরাবৃত্তি করা সম্ভব নয়।


3

আপনি যদি গ্রিমলিন ব্যবহার করেন তবে এটি আপনাকে বিভিন্ন গ্রাফ ডাটাবেসে স্থানান্তরিত করতে দেয়, যেহেতু বেশিরভাগ গ্রাফ ডাটাবেস গ্রিমলিন ট্র্যাভারসালকে সমর্থন করে, তাই গ্র্যামলিন বেছে নেওয়া ভাল ধারণা।


2

দীর্ঘ উত্তর সংক্ষিপ্ত: ক্যোয়ারির জন্য সাইফার এবং ট্র্যাভারসালের জন্য গ্রিমলিন ব্যবহার করুন। আপনি প্রতিক্রিয়া সময় নিজেই দেখতে পাবেন।


কিভাবে যে কি ?
অপ্টিমাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.