এই ডকুমেন্টে দেখানো হয়েছে কিভাবে আপনার ক্লায়েন্টের সংযোগের সংখ্যা কমাতে API কলগুলিকে একসাথে ব্যাচ করবেন। নেটওয়ার্ক রাউন্ড ট্রিপ কমিয়ে এবং থ্রুপুট বৃদ্ধি করে ব্যাচিং একটি অ্যাপ্লিকেশনের দক্ষতা উন্নত করতে পারে।
সংক্ষিপ্ত বিবরণ
আপনার ক্লায়েন্টের প্রতিটি সংযোগের ফলে একটি নির্দিষ্ট পরিমাণ ওভারহেড তৈরি হয়। Google Docs API ব্যাচিং সমর্থন করে যাতে আপনার ক্লায়েন্ট একাধিক অনুরোধ বস্তু স্থাপন করতে পারে, প্রতিটিতে এক ধরণের অনুরোধ নির্দিষ্ট করে, যা একটি একক ব্যাচ অনুরোধে সম্পাদন করা হবে। একটি ব্যাচ অনুরোধ সার্ভারে একটি একক কলে একাধিক সাবরিকোয়েস্ট একত্রিত করে কর্মক্ষমতা বৃদ্ধি করতে পারে, একটি একক প্রতিক্রিয়া ফিরে পেতে পারে।
আমরা ব্যবহারকারীদের সবসময় একাধিক অনুরোধ একসাথে ব্যাচ করার জন্য উৎসাহিত করি। এখানে কিছু উদাহরণ দেওয়া হল যেখানে আপনি ব্যাচিং ব্যবহার করতে পারেন:
- তুমি সবেমাত্র API ব্যবহার শুরু করেছো এবং তোমার কাছে অনেক ডেটা আপলোড করার আছে।
- আপনাকে একাধিক বস্তুর মেটাডেটা বা বৈশিষ্ট্য, যেমন ফর্ম্যাটিং, আপডেট করতে হবে।
- তোমাকে অনেক বস্তু মুছে ফেলতে হবে।
সীমা, অনুমোদন এবং নির্ভরতা বিবেচনা
ব্যাচ আপডেটিং ব্যবহার করার সময় বিবেচনা করার জন্য অন্যান্য বিষয়গুলির একটি তালিকা এখানে দেওয়া হল:
- আপনার ব্যবহারের সীমার দিকে, সমস্ত সাবরিকোয়েস্ট সহ প্রতিটি ব্যাচ অনুরোধকে একটি API অনুরোধ হিসেবে গণনা করা হবে।
- একটি ব্যাচ অনুরোধ একবার প্রমাণীকরণ করা হয়। এই একক প্রমাণীকরণ অনুরোধের সমস্ত ব্যাচ আপডেট বস্তুর ক্ষেত্রে প্রযোজ্য।
- সার্ভার সাবরিকোয়েস্টগুলিকে ব্যাচ রিকোয়েস্টে প্রদর্শিত একই ক্রমে প্রক্রিয়া করে। পরবর্তী সাবরিকোয়েস্টগুলি পূর্ববর্তী সাবরিকোয়েস্টগুলির সময় গৃহীত পদক্ষেপের উপর নির্ভর করতে পারে। উদাহরণস্বরূপ, একই ব্যাচ রিকোয়েস্টে, ব্যবহারকারীরা একটি বিদ্যমান ডকুমেন্টে টেক্সট সন্নিবেশ করতে পারেন এবং তারপরে এটি স্টাইল করতে পারেন।
ব্যাচের বিবরণ
একটি ব্যাচ অনুরোধে একটি batchUpdate পদ্ধতি কল থাকে যার মধ্যে একাধিক সাবরিকোয়েস্ট থাকে, উদাহরণস্বরূপ, একটি ডকুমেন্ট যোগ এবং তারপর ফর্ম্যাট করার জন্য।
প্রতিটি অনুরোধ প্রয়োগ করার আগে যাচাই করা হয়। ব্যাচ আপডেটের সমস্ত সাবরিকোয়েস্ট পরমাণুভাবে প্রয়োগ করা হয়। অর্থাৎ, যদি কোনও অনুরোধ বৈধ না হয় তবে সম্পূর্ণ আপডেটটি ব্যর্থ হয় এবং (সম্ভাব্যভাবে নির্ভরশীল) কোনও পরিবর্তন প্রয়োগ করা হয় না।
কিছু অনুরোধ প্রয়োগকৃত অনুরোধ সম্পর্কে তথ্য সহ প্রতিক্রিয়া প্রদান করে। উদাহরণস্বরূপ, অবজেক্ট যোগ করার জন্য সমস্ত ব্যাচ আপডেট অনুরোধ প্রতিক্রিয়া ফেরত দেয় যাতে আপনি নতুন যোগ করা বস্তুর মেটাডেটা, যেমন আইডি বা শিরোনাম অ্যাক্সেস করতে পারেন।
এই পদ্ধতির সাহায্যে, আপনি একাধিক সাবরিকোয়েস্ট সহ একটি API ব্যাচ আপডেট অনুরোধ ব্যবহার করে একটি সম্পূর্ণ Google ডকুমেন্ট তৈরি করতে পারেন।
একটি ব্যাচ অনুরোধের ফর্ম্যাট
একটি অনুরোধ হল একটি একক JSON অনুরোধ যাতে একাধিক, নেস্টেড সাবরিকোয়েস্ট থাকে যার একটি প্রয়োজনীয় বৈশিষ্ট্য রয়েছে: requests । অনুরোধগুলি পৃথক অনুরোধের একটি অ্যারেতে তৈরি করা হয়। প্রতিটি অনুরোধ অনুরোধ বস্তুর প্রতিনিধিত্ব করতে এবং এর বৈশিষ্ট্য ধারণ করতে JSON ব্যবহার করে।
একটি ব্যাচ প্রতিক্রিয়ার বিন্যাস
ব্যাচ রিকোয়েস্টের রেসপন্স ফরম্যাট রিকোয়েস্ট ফরম্যাটের মতোই। সার্ভারের রেসপন্সে সিঙ্গেল রেসপন্স অবজেক্টের সম্পূর্ণ রিসপন্স থাকে।
প্রধান JSON অবজেক্টের বৈশিষ্ট্যের নাম replies । প্রতিক্রিয়াগুলি একটি অ্যারেতে ফেরত পাঠানো হয়, যেখানে প্রতিটি অনুরোধের প্রতিক্রিয়া সংশ্লিষ্ট অনুরোধের মতো একই সূচক ক্রম ধারণ করে। কিছু অনুরোধের প্রতিক্রিয়া থাকে না এবং সেই অ্যারে সূচকে প্রতিক্রিয়া খালি থাকে।
উদাহরণ
নিম্নলিখিত কোড নমুনাটি ডক্স এপিআই-এর সাথে ব্যাচিংয়ের ব্যবহার দেখায়।
অনুরোধ
এই উদাহরণ ব্যাচ অনুরোধটি দেখায় যে কীভাবে:
InsertTextRequestব্যবহার করে একটি বিদ্যমান ডকুমেন্টের শুরুতে "Hello World" টেক্সটটি1এর সূচকlocationসহ সন্নিবেশ করান।UpdateTextStyleRequestব্যবহার করে "Hello" শব্দটি আপডেট করুন।startIndexএবংendIndexসেগমেন্টের মধ্যে ফর্ম্যাট করা টেক্সটেরrangeনির্ধারণ করে।textStyleব্যবহার করে, "Hello" শব্দটির জন্য ফন্ট স্টাইলকে বোল্ড এবং রঙকে নীল করুন।WriteControlফিল্ড ব্যবহার করে, আপনি write অনুরোধগুলি কীভাবে কার্যকর করা হবে তা নিয়ন্ত্রণ করতে পারেন। আরও তথ্যের জন্য, WriteControl এর সাথে অবস্থা সামঞ্জস্য স্থাপন দেখুন।
{ "requests":[ { "insertText":{ "location":{ "index":1, "tabId":TAB_ID }, "text":"Hello World" } }, { "updateTextStyle":{ "range":{ "startIndex":1, "endIndex":6 }, "textStyle":{ "bold":true, "foregroundColor":{ "color":{ "rgbColor":{ "blue":1 } } } }, "fields":"bold,foreground_color" } } ], "writeControl": { "requiredRevisionId": "REQUIRED_REVISION_ID" } }
যে ডকুমেন্টে লেখার অনুরোধটি প্রয়োগ করা হয়েছে, তার ট্যাব আইডি এবং রিভিশন আইডি যথাক্রমে TAB_ID এবং REQUIRED_REVISION_ID দিয়ে প্রতিস্থাপন করুন।
প্রতিক্রিয়া
এই উদাহরণের ব্যাচ রেসপন্স ব্যাচ রিকোয়েস্টের মধ্যে প্রতিটি সাবরিকোয়েস্ট কীভাবে প্রয়োগ করা হয়েছিল তার তথ্য প্রদর্শন করে। InsertTextRequest বা UpdateTextStyleRequest এর কোনওটিতেই কোনও রেসপন্স নেই, তাই [0] এবং [1]-এ অ্যারের সূচক মানগুলিতে খালি কোঁকড়া বন্ধনী থাকে। ব্যাচ রিকোয়েস্ট WriteControl অবজেক্ট প্রদর্শন করে, যা দেখায় যে অনুরোধগুলি কীভাবে কার্যকর করা হয়েছিল।
{ "replies":[ {}, {} ], "writeControl":{ "requiredRevisionId":`REQUIRED_REVISION_ID` }, "documentId":`DOCUMENT_ID` }