मुझे हमारे संगठन के लिए google ड्राइव में जोड़ी गई सभी फाइलों की गिनती खींचने का अनुरोध मिला। मूल रूप से प्रत्येक उपयोगकर्ता के लिए उनके Google ड्राइव में फ़ाइलों की गणना करें। एपीआई में एक सूची विधि है जिस पर मैं एक गिनती कह सकता हूं, लेकिन मुझे प्रत्येक उपयोगकर्ता आईडी के माध्यम से पुन: प्रयास करना होगा और गिनती प्राप्त करनी होगी। यह हमेशा के लिए (120,353 रिकॉर्ड) ले जाएगा। मैं यहाँ क्या खो रहा हूँ क्योंकि यह संभव लगता है ... मैंने दस्तावेज़ीकरण में देखा कि वे मानक फ़ील्ड और कस्टम विधियों का उल्लेख करते हैं, एक मानक को < कहा जाता है मजबूत>total_size (int32 सूची में आइटमों की कुल संख्या, पेजिंग पर ध्यान दिए बिना।) मैंने अभी तक .net में यह पता नहीं लगाया है कि इसका उपयोग कैसे किया जाए।

https://developers.google.com/drive/api/v2/reference

1
Warren LaFrance 14 जिंदा 2021, 20:58

2 जवाब

सबसे बढ़िया उत्तर

क्षमा करें, इसके लिए कोई वैश्विक समापन बिंदु नहीं है

मुझे लगता है कि आप एक साधारण समापन बिंदु की तलाश कर रहे हैं जो एक डोमेन में फाइलों की कुल संख्या लौटाता है, लेकिन दुर्भाग्य से ऐसा कोई नहीं है क्योंकि ऐसा नहीं है कि Google ड्राइव जानकारी कैसे संग्रहीत करता है।

एक संभावित दृष्टिकोण

डोमेन वाइड डेलिगेशन वाले सेवा खाते का उपयोग करना। संदर्भ

  • एक व्यवस्थापक खाते का प्रतिरूपण करें और सभी उपयोगकर्ताओं की सूची प्राप्त करें संदर्भ
  • उस जानकारी के साथ, प्रत्येक उपयोगकर्ता का प्रतिरूपण करें और प्रत्येक उपयोगकर्ता के लिए डिस्क API अनुरोध करें। आपको प्रत्येक के लिए कुछ अनुरोध करने की संभावना होगी, क्योंकि पृष्ठ का आकार सीमित है। पेज टोकन का प्रयोग करें। Ref
  • सभी आईडी की एक सूची स्टोर करें।
  • यूनिक आईडी गिनें।

सेवा खाते के लिए GCP कंसोल और Admin console दोनों में अनुमतियां सेट करना याद रखें। बिल्कुल आसान समाधान नहीं है और अनुभव के आधार पर, इसे लागू करने में कुछ समय लग सकता है, संभवतः सबसे कठिन हिस्सा सेवा खाते स्थापित करना है, लेकिन ऐसा लगता है कि आप पहले से ही वहां हैं।

ऑप्टिमाइज़ करने के तरीके

  • q='"me" in owners' के तर्क के साथ q पैरामीटर का प्रयोग करें। यह आपको प्राप्त होने वाली फ़ाइलों की संख्या में महत्वपूर्ण रूप से कटौती करेगा क्योंकि परिभाषा के अनुसार प्रत्येक फ़ाइल का केवल एक स्वामी होता है।
  • चूंकि आपको केवल उपयोगकर्ताओं और फ़ाइलों दोनों के लिए आईडी की आवश्यकता है, सभी अनुरोधों के fields पैरामीटर में केवल आईडी के लिए पूछना सुनिश्चित करें, इससे चीजों में काफी तेजी आएगी।
  • आप अधिकतम 100 कॉल करने के लिए बैच अनुरोध का भी लाभ उठा सकते हैं उसी समय। इसलिए यदि आपके पास १०० उपयोगकर्ता हैं, तो आप एक बार में १०० अनुरोध कर सकते हैं!

यदि आपको इस नंबर के लगातार अपडेट प्राप्त करने की आवश्यकता है तो यह आपके लिए आदर्श नहीं हो सकता है, लेकिन यदि आपको केवल आवधिक अपडेट (हर सप्ताह, संभवतः हर दिन) की आवश्यकता है, तो यह ठीक होना चाहिए।

प्रदर्शन

तर्क के लिए, मान लें कि आपके पास 120,000 फाइलें हैं। यदि आप q पैरामीटर के बिना सबसे सरल समाधान लागू करते हैं, तो डुप्लिकेट फ़ाइलें सामने आएंगी क्योंकि वे साझा की जाती हैं और इसलिए एक से अधिक व्यक्तियों की डिस्क पर दिखाई देंगी। आइए सुरक्षित होने के लिए इसे केवल 10 से गुणा करें, इसलिए आईडी प्राप्त करने के लिए 1.2 मिलियन फाइलें। दोबारा, मान लें कि आपने कम से कम अनुकूलित समाधान लागू किया है और प्रति अनुरोध अधिकतम 1000 फाइलों का अनुरोध किया है, और आपने श्रृंखला में अनुरोध किए हैं। एक सामान्य अनुरोध के लिए औसत समय लगभग 2 सेकंड को ध्यान में रखते हुए, इसे 5 सेकंड तक पूरा करने देता है। तो एक संभावित खराब मामले में:

1200000 / 1000 = 1200 requests
1200 * 5 = 6000 seconds
6000 / 60 = 100 minutes

बेशक यदि आपने बैचिंग का उपयोग किया था और आपके पास 10 उपयोगकर्ता थे जिन्हें 10 के कारक से काटा जा सकता है, और इसलिए केवल 10 मिनट लग सकते हैं यदि सभी उपयोगकर्ताओं के पास समान संख्या में फ़ाइलें हों।

यदि आप q पैरामीटर का उपयोग करते हैं तो यह फिर से, आप 10 का एक कारक काट रहे हैं, इसलिए इसमें 10 मिनट लगेंगे। यदि आपके पास सही बैचिंग स्थिति होती तो इसमें 1 मिनट लग सकता था!

कुल संख्या का रखरखाव।

आप इसके अतिरिक्त Report API का उपयोग कर सकते हैं यदि फ़ाइलें बनाई और हटाई जाती हैं, तो क्वेरी करें, और इसलिए, प्रत्येक बनाई गई फ़ाइल पर इसे बढ़ाकर और प्रत्येक हटाए जाने पर घटाकर अपने डोमेन में फ़ाइलों की कुल संख्या बनाए रखें।


संदर्भ

1
iansedano 15 जिंदा 2021, 15:00

मैं वैसे भी Google ड्राइव एपीआई का उपयोग करने और एक संगठन के रूप में प्रमाणित होने के बारे में नहीं जानता।

हालाँकि, आपको अभी भी बहुत अधिक पुनरावृत्ति करनी होगी, इसलिए मैं उपयोगकर्ताओं पर पुनरावृति करने के बारे में बहुत चिंतित नहीं हूँ। Google ड्राइव एपीआई प्रति पृष्ठ फ़ाइलों की एक निर्धारित संख्या देता है जिसका अर्थ है कि कई एपीआई कॉल जैसे आप पृष्ठों पर पुनरावृति करते हैं।

मुझे लगता है कि बड़ा कम्प्यूटेशनल खतरा साझा फ़ाइलों को बार-बार गिन रहा है (उस उपयोगकर्ता ने अपने माईड्राइव फ़ोल्डर में जोड़ा हो सकता है या नहीं)।

0
rhorwitz 14 जिंदा 2021, 21:15