গ্রাফকিউএল এর কোনও অসুবিধা আছে কি? [বন্ধ]


102

গ্রাফকিউএল সম্পর্কিত সমস্ত নিবন্ধগুলি আপনাকে বলবে যে এটি কত দুর্দান্ত? তবে এর কোনও অসুবিধা বা ঘাটতি রয়েছে কি? ধন্যবাদ.

উত্তর:


98

অসুবিধাগুলি:

  • আপনি শিখতে হবে কিভাবে GraphQL সেট আপ করার জন্য। বাস্তুতন্ত্র এখনও দ্রুত বিকশিত হচ্ছে তাই আপনাকে চালিয়ে যেতে হবে।
  • আপনাকে ক্লায়েন্টের কাছ থেকে প্রশ্নগুলি প্রেরণ করতে হবে, আপনি কেবল স্ট্রিং পাঠাতে পারেন তবে আপনি যদি আরও স্বাচ্ছন্দ্য এবং ক্যাচিং চান তবে আপনি ক্লায়েন্টের গ্রন্থাগার -> আপনার ক্লায়েন্টের অতিরিক্ত কোড ব্যবহার করবেন
  • ফলাফল পাওয়ার আগে আপনার অতিরিক্ত স্কিম => অতিরিক্ত কাজ সংজ্ঞায়িত করতে হবে
  • আপনার সার্ভারে একটি গ্রাফিক্যেল শেষ পয়েন্ট থাকা দরকার => নতুন লাইব্রেরি যা আপনি এখনও জানেন না
  • গ্রাফিক্যেল ক্যোয়ারীগুলি কেবলমাত্র একটি আরএসটি শেষ পয়েন্টে যাওয়ার চেয়ে বেশি বাইট
  • ক্যোয়ারীটি বিশ্লেষণ এবং পরামিতিগুলি যাচাই করতে সার্ভারকে আরও প্রসেসিং করা দরকার

তবে এগুলি এর চেয়ে বেশি পাল্টে গেছে:

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

4
"ফলাফল পাওয়ার আগে আপনার অতিরিক্ত স্কিমার আগে => অতিরিক্ত কাজটি সংজ্ঞায়িত করা দরকার" গ্রাফকিউএল ছাড়া এটি কীভাবে প্রয়োজন তা আমি দেখতে পাচ্ছি না? অবশ্যই কয়েকটি ভাষায় কিছু ফ্রেমওয়ার্কের সাথে এটি প্রয়োজন হয় না তবে জাভা API এর উদাহরণস্বরূপ আপনাকে এখনও আপনার মডেলগুলিতে "স্কিমা" বর্ণনা করতে হবে।
এন্টোইনবি

4
@ এন্টাইনাইনবি আপনি সঠিক, নোডজেএস-এ তবে আপনি সামগ্রিক স্কিমা সম্পর্কে কখনও চিন্তা না করে সহজেই একটি REST এপিআই তৈরি করতে পারেন; শুধু জিনিস ফেরত।
w00t

4
@ w00t এবং যত তাড়াতাড়ি আপনার আরইএসএসটি দিয়ে কিছু প্যারামিটারের প্রয়োজন হবে, আপনি ইউআরএল পার্স করার চেষ্টা করবেন যা পরমের ধরণটি সঠিক কিনা তা পরীক্ষা না করে 400 না ছুঁড়ে ফেলে। প্রতিটি রুটের হ্যান্ডলারে যদি ম্যানুয়ালি এই কাজটি করতে না হয় তবে কিছু ছিল: ডি
কপাজ

স্প্রিং বুটের সাহায্যে আপনি কিছু শৈল্পিক টানতে graphql-spring-boot-starterএবং graphql-java-toolsশুরু করতে পারেন। আপনার অনুগ্রহ। একটি কাজের পরীক্ষার উদাহরণ পেতে এবং চালাতে প্রায় 10 মিনিট সময় নেয়।
বেবিবার্গার

4
আমি সমস্ত অসুবিধাগুলির সাথে একমত নই, প্রকৃতপক্ষে এটি আপনাকে অনেক সময় বাঁচায় এই পোস্টটি পরীক্ষা করে দেখুন xalitech.com/ographicql-how-to-convince-your-boss
শাফকাত আলী

59

গ্রাফকিউএল ব্যবহারের জন্য বিবেচনা করা যে কোনও ব্যক্তির জন্য আমি কিছু গুরুত্বপূর্ণ উদ্বেগ পেয়েছি এবং এখন পর্যন্ত মূল বিষয়গুলি হ'ল :

অনির্দিষ্ট গভীরতায় ক্যোয়ারী: গ্রাফকিউএল অনির্দিষ্ট গভীরতার সাথে জিজ্ঞাসা করতে পারে না, সুতরাং আপনার যদি গাছ থাকে এবং গভীরতা না জেনে কোনও শাখা ফেরত পেতে চান, আপনাকে কিছু পৃষ্ঠা তৈরি করতে হবে।

নির্দিষ্ট প্রতিক্রিয়া কাঠামো : গ্রাফকিউএলে প্রতিক্রিয়াটি ক্যোয়ারির আকারের সাথে মেলে, সুতরাং যদি আপনাকে খুব নির্দিষ্ট কাঠামোর প্রতিক্রিয়া জানাতে হয়, আপনাকে প্রতিক্রিয়াটি পুনরায় আকার দেওয়ার জন্য একটি রূপান্তর স্তর যুক্ত করতে হবে।

নেটওয়ার্ক স্তরে ক্যাশে : সাধারণভাবে গ্রাফকিউএল এইচটিটিপি (একক শেষ পয়েন্টে একটি পোস্ট) এর মাধ্যমে ব্যবহৃত হয় বলে নেটওয়ার্ক স্তরে ক্যাশে শক্ত হয়ে যায়। এটির সমাধানের উপায় হ'ল পার্সিস্টেড ক্যোয়ারী ব্যবহার করা।

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

অনির্দেশ্য সম্পাদন : গ্রাফকিউএল এর প্রকৃতি হ'ল আপনি যা যা ক্ষেত্র চান তা একত্রিত করে জিজ্ঞাসা করতে পারেন তবে এই নমনীয়তাটি নিখরচায় নয়। কিছু উদ্বেগ রয়েছে যা পারফরম্যান্স এবং এন + 1 ক্যোরিগুলির মতো জেনে রাখা ভাল।

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


4
অনির্দিষ্ট গভীরতার জন্য, আমি জসনটাইপ প্রতিক্রিয়া অবলম্বন করি। এটি দৃ strongly়ভাবে টাইপ করা হয়নি, সুতরাং আপনাকে ইনপুটগুলি পরীক্ষা করতে হবে তবে এটি খুব কার্যকর হতে পারে।
w00t

4
REST এর সর্বদা N + 1 প্রশ্নের সমস্যা ছিল। পার্থক্যটি হ'ল REST ডিজাইন অনুসারে সমস্যাটি সমাধান করার চেষ্টা করার জন্য ব্যাকএন্ডের অনুমতি দেয় না। পরিবর্তে এটি সম্মুখভাগে সমস্যাটি ঠেলে দেয়।
কপাজ

40

গ্রাফকিউএল-এর সাথে দেখা এই সবচেয়ে বড় সমস্যাটি যদি আপনি রিলেশনাল ডাটাবেসের সাথে ব্যবহার করেন তবে তা যোগ দেয়

  1. আপনি কয়েকটি ক্ষেত্রকে অনুমতি / বঞ্চিত করতে পারবেন এমন ঘটনাটি অ-তুচ্ছ (সহজ নয়) যোগ দেয়। যা অতিরিক্ত প্রশ্নের সন্ধান করে।

  2. এছাড়াও গ্রাফিক্যালে নেস্টেড কোয়েরিগুলি বিজ্ঞপ্তি কোয়েরিতে নিয়ে যায় এবং সার্ভারটি ক্র্যাশ করতে পারে । অতিরিক্ত যত্ন নিতে হবে।

  3. কলের হারের সীমাবদ্ধতা এখন কোজে পরিণত হয়েছে এখন ব্যবহারকারী এক কলে একাধিক প্রশ্ন ফায়ার করতে পারে।

টিআইপি : জাভাস্ক্রিপ্ট / নোডের ক্ষেত্রে প্রশ্নের সংখ্যা কমাতে ফেসবুকের ড্যাটালোডার ব্যবহার করুন


1. নির্বাচিত ক্ষেত্রগুলি অপারেশনে যোগদানের জন্য কীভাবে প্রাসঙ্গিক? ২. আপনি যদি কোনও ডেটা লোডার ব্যবহার করেন না। ৩. আপনি পার্স করতে পারেন এবং costঅনুরোধটি বরাদ্দ করতে পারেন । এছাড়াও আপনি পূর্বনির্ধারিত ক্যোয়ারী ব্যবহার করছেন, যেখানে ক্লায়েন্ট কেবল আইডি প্রেরণ করে এটি কোনও উদ্বেগের বিষয় নয়।
zoran404

4
3 এর সাথে একমত হয়েছেন 3 এর অতিরিক্ত কিছু বিট কাজ এবং আরও গুরুত্বপূর্ণভাবে পিপিএলকে সচেতন হওয়া দরকার।
aWebDeveloper

4
২. এটি আর সত্য নয় কারণ আপনি আপনার সার্ভারকে সুরক্ষিত করতে প্রচুর সরঞ্জাম ব্যবহার করতে পারেন। উদাহরণস্বরূপ একটি লিঙ্ক: howtographicql.com/advanced/4- সুরক্ষা সময়সীমা, জটিলতা এবং গভীরতার সীমা। সুতরাং এটির মতোই আপনি বলবেন যে আপনি রেট সীমাবদ্ধ ব্যবহার না করলে আপনার বিশ্রামটি ডিডোএসের পক্ষে সম্ভব। জিনিসগুলি পরিবর্তিত হয়েছে
ইয়েভেনিই হেরাসিমচুক

আপডেট পয়েন্ট 2
aWebDeveloper

14

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

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

তবে আরও কয়েকটি মামলা রয়েছে যা অসুবিধা হিসাবে গণ্য করা যেতে পারে:

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

মোট কথা, গ্রাফকিউএল একটি নির্দিষ্ট লক্ষ্যের জন্য কেবল একটি সরঞ্জাম এবং নিশ্চিতভাবেই এটি সমস্ত সমস্যার সিলভার বুলেট নয় এবং অবশ্যই বিশ্রামের জন্য কোনও প্রতিস্থাপন নয়।


4

একক শেষ পয়েন্ট থাকা এবং সমস্ত ডেটা প্রকাশ করা সত্যিই দুর্দান্ত। গ্রাফকিউএল বিবেচনা করার জন্য নীচের বিষয়গুলি আমি পেয়েছি:

  1. ফাইল ডাউনলোড / আপলোডের প্রয়োগ কার্যকর হয় (স্ট্রিংয়ে রূপান্তর করা বড় ফাইলগুলির জন্য সেরা বিকল্প নাও হতে পারে)
  2. উভয় ফ্রন্টএন্ড এবং ব্যাকএন্ডে প্রচুর বয়লারপ্লেট এবং স্কিমা কোড।
  3. গ্রাফকিউএল স্পেসিফিকেশনে প্রদত্ত পৃষ্ঠাগুলি অনুসরণ এবং সমর্থন করুন।
  4. ক্ষেত্রগুলি অর্ডার করার জন্য কাস্টম অর্ডার এবং অগ্রাধিকার যুক্তিকে মঞ্জুরি দিন। উদাহরণস্বরূপ যদি আমরা ব্যবহারকারীদের ডেটা এবং সম্পর্কিত গ্রুপ এবং ভূমিকাগুলি আনি। ব্যবহারকারীর নাম, গোষ্ঠীর নাম বা ভূমিকা নামের উপর ভিত্তি করে কোনও ব্যবহারকারী ডেটা একাধিক বাছাই করতে পারে।
  5. প্রমাণীকরণ এবং অনুমোদন ব্যাকএন্ড কাঠামোর উপর নির্ভর করবে।
  6. প্রতিটি গ্রাফিক্যাল কমান্ডের জন্য একক ক্যোয়ারী ফায়ার করতে ব্যাকএন্ড অপ্টিমাইজেশন এবং ডেটাবেস সমর্থনটি নিশ্চিত করুন যে এটি জটিল হয়ে উঠতে পারে।

এছাড়াও, এর প্রয়োগের পরে পেশাদারদের বিবেচনা করা উচিত:

  1. নতুন আইটেম সমর্থন এবং বিদ্যমান আচরণ আপডেট করার জন্য খুব নমনীয়।
  2. একবার প্রয়োগ হয়ে গেলে আর্গুমেন্ট এবং কাস্টম অর্ডার ব্যবহার করে শর্ত যুক্ত করা সহজ

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

  4. সমস্ত গ্রাফিক্যুয়াল ক্যোয়ারী এবং মিউটেশন যুক্ত ফাইল তৈরি করে এআইপি টেস্টিংয়ের সহজ।
  5. মিউটেশনগুলি ধারণাটি বোঝার পরে সহজ এবং বাস্তবায়িত করা সহজ।
  6. একাধিক গভীরতার ডেটা আনার শক্তিশালী উপায়।
  7. ভয়েজার এবং গ্রাফিকিউএল ইউআই বা প্লেগ্রাউন্ডের সমর্থন এটিকে দেখতে ও ব্যবহার করা সহজ করে।
  8. বৈধ বিবরণ পদ্ধতি সহ স্কিমা সংজ্ঞায়িত করার সময় নথিপত্রের সহজতা।

3

আমি মনে করি এই মুহুর্তের জন্য গ্রাফিক্যএল অবশ্যই ব্যাকএন্ড আর্কিটেকচারের অংশ হতে হবে, ফাইল আপলোডের জন্য আপনি এখনও একটি নিয়মিত এপিআই হিট করেন

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