यहां दी गई टेबल में, डेटा टाइप की पूरी सूची दी गई है. इसमें कई कॉलम दिए गए हैं, ताकि आपको Google Health API में हर टाइप के बारे में समझने में मदद मिल सके. साथ ही, यह भी बताया गया है कि हर टाइप किस स्कोप के तहत उपलब्ध है.
डेटा टाइप फ़ील्ड
Google Health API के डेटा टाइप की टेबल में, कई फ़ील्ड कॉलम शामिल होते हैं. इनसे आपको हर डेटा टाइप के बारे में समझने में मदद मिलती है. ये कॉलम इस तरह से होते हैं:
| फ़ील्ड | ब्यौरा |
|---|---|
dataType |
एंडपॉइंट यूआरएल में इस्तेमाल किया गया आइडेंटिफ़ायर, जिसे हाइफ़न से अलग किया गया है. उदाहरण के लिए, active-minutes. |
filter पैरामीटर |
अंडरस्कोर से अलग किया गया आइडेंटिफ़ायर (उदाहरण के लिए, active_minutes). इसका इस्तेमाल, हर दिन के रोलअप और रोलअप अनुरोधों में dataType फ़िल्टर पैरामीटर की वैल्यू के तौर पर किया जाता है. |
| रिकॉर्ड टाइप | इससे रिकॉर्ड किए गए डेटा के स्ट्रक्चर और फ़ॉर्मैट के बारे में पता चलता है. यह डेटा पॉइंट के रिसॉर्स प्रज़ेंटेशन के साथ अलाइन होता है. इन वैल्यू का इस्तेमाल किया जा सकता है:
|
| उपलब्ध कार्रवाइयां | इस फ़ील्ड में, डेटा टाइप के लिए काम करने वाले एपीआई के तरीकों की सूची दी जाती है. जैसे, list, create, और rollUp. |
| स्कोप | डेटा टाइप को ऐक्सेस करने के लिए ज़रूरी OAuth स्कोप. |
| वेबबुक की सुविधा | इससे पता चलता है कि जब नया डेटा सिंक होता है, तब वेबहुक का इस्तेमाल करके, डेटा टाइप रीयल-टाइम सूचनाएं पाने की सुविधा देता है. |
| ट्रू ज़ीरो की सुविधा | इससे पता चलता है कि डेटा टाइप, शून्य वैल्यू को रिकॉर्ड करने की सुविधा देता है. इससे, ऐक्टिव ज़ोन मिनट जैसे ऐक्टिव ज़ोन की शून्य वैल्यू और मौजूद न होने या रिकॉर्ड न किए गए डेटा के बीच अंतर किया जा सकता है. |
| स्टोरेज रिज़ॉल्यूशन | डेटा पॉइंट को सेव करने के लिए, कम से कम रिकॉर्डिंग या सैंपलिंग इंटरवल. उदाहरण के लिए, steps के लिए 1 मिनट. रोलअप के लिए, यह कम से कम windowSize का सुझाव देता है, ताकि सब-इंटरवल डेटा आर्टफ़ैक्ट के बिना, एग्रीगेशन को समान रूप से डिस्ट्रिब्यूट किया जा सके. |
| इस सुविधा के साथ काम करने वाले डिवाइस | फ़िजिकल डिवाइसों की एक बड़ी सूची. ये डिवाइस, इस डेटा टाइप को Google Health API में रिकॉर्ड और सिंक कर सकते हैं. इसके लिए, Fitbit ऐप्लिकेशन का इस्तेमाल किया जाता है. |
| डेटा टाइप | उपलब्ध ऑपरेशन |
दायरा |
|---|---|---|
|
ऐक्टिव रहने के दौरान बर्न की गई कैलोरी
dataType:
active-energy-burnedfilter parameter: active_energy_burned
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
ऐक्टिव मिनट
dataType:
active-minutesfilter parameter: active_minutes
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
ऐक्टिव ज़ोन मिनट
dataType:
active-zone-minutesfilter parameter: active_zone_minutes
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
गतिविधि का लेवल
|
सूची, मेल-मिलाएं | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
ऊंचाई
dataType:
altitudefilter parameter: altitude
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
ब्लड ग्लूकोज़
dataType:
blood-glucosefilter parameter: blood_glucose
रिकॉर्ड टाइप: Sample
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
बॉडी फ़ैट
dataType:
body-fatfilter parameter: body_fat
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
धड़कन की दर वाले ज़ोन में खर्च की गई कैलोरी
dataType:
calories-in-heart-rate-zonefilter parameter: calories_in_heart_rate_zone
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
शरीर का तापमान
dataType:
core-body-temperaturefilter parameter: core_body_temperature
रिकॉर्ड टाइप: Sample
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
धड़कन की दर में रोज़ाना होने वाला उतार-चढ़ाव
dataType:
daily-heart-rate-variabilityfilter parameter: daily_heart_rate_variability
रिकॉर्ड टाइप: हर दिन
संगत डिवाइस
|
सूची, मिलान करें | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
धड़कन की दर वाले ज़ोन की रोज़ की जानकारी
dataType:
daily-heart-rate-zonesfilter parameter: daily_heart_rate_zones
रिकॉर्ड टाइप: हर दिन
|
सूची, मेल-मिलाएं | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
ऑक्सीजन की रोज़ाना की मात्रा
dataType:
daily-oxygen-saturationfilter parameter: daily_oxygen_saturation
रिकॉर्ड टाइप: हर दिन
संगत डिवाइस
|
सूची, मिलान करें | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
सांस की रोज़ाना की दर
dataType:
daily-respiratory-ratefilter parameter: daily_respiratory_rate
रिकॉर्ड टाइप: हर दिन
संगत डिवाइस
|
सूची, मेल-मिलाएं | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
आराम करते समय रोज़ की धड़कन की दर
dataType:
daily-resting-heart-ratefilter parameter: daily_resting_heart_rate
रिकॉर्ड टाइप: हर दिन
वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी के लिए वेबहुक की सुविधा
वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी वाली गाइड
संगत डिवाइस
|
सूची, मेल-मिलाएं | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
रोज़ाना के हिसाब से नींद के दौरान शरीर के तापमान में होने वाले बदलाव की जानकारी
dataType:
daily-sleep-temperature-derivationsfilter parameter: daily_sleep_temperature_derivations
रिकॉर्ड टाइप: हर दिन
संगत डिवाइस
|
सूची, मिलान करें | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
गतिविधि के दौरान सांस लेने की दर का हर दिन का स्टेटस
dataType:
daily-vo2-maxfilter parameter: daily_vo2_max
रिकॉर्ड टाइप: हर दिन
संगत डिवाइस
|
सूची, मिलान करें | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
दूरी
dataType:
distancefilter parameter: distance
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
इलेक्ट्रोकार्डियोग्राम (ईसीजी)
dataType:
electrocardiogramfilter parameter: electrocardiogram
रिकॉर्ड टाइप: सेशन
संगत डिवाइस
|
सूची | .ecg.readonly |
|
एक्सरसाइज़
dataType:
exercisefilter parameter: exercise
रिकॉर्ड टाइप: सेशन
संगत डिवाइस
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
फ़्लोर
dataType:
floorsfilter parameter: floors
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
खाना
|
सूची, पाएं | .nutrition.readonly.nutrition.writeonly |
|
खाने-पीने की चीज़ों के मेज़रमेंट की यूनिट
dataType:
food-measurement-unitfilter parameter: food_measurement_unit
रिकॉर्ड टाइप: खाना
संगत डिवाइस
|
सूची बनाना, पाना | .nutrition.readonly.nutrition.writeonly |
|
धड़कन की दर
dataType:
heart-ratefilter parameter: heart_rate
रिकॉर्ड टाइप: Sample
स्टोरेज रिज़ॉल्यूशन: 1 सेकंड (1s)
वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी के लिए वेबहुक की सुविधा
वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी वाली गाइड
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
धड़कन की दर में उतार-चढ़ाव
dataType:
heart-rate-variabilityfilter parameter: heart_rate_variability
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
सूची, मेल-मिलाएं | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
ऊंचाई
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
हाइड्रेशन का लॉग
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
दिल की धड़कन अनियमित होने पर मिलने वाली सूचनाएं
dataType:
irregular-rhythm-notificationfilter parameter: irregular_rhythm_notification
रिकॉर्ड टाइप: सेशन
|
सूची | .irn.readonly |
|
माहवारी का समय
dataType:
menstrual-periodfilter parameter: menstrual_period
रिकॉर्ड टाइप: इंटरवल
|
create, update, batchDelete | .reproductive_health.writeonly |
|
मूड
|
create, update, batchDelete | .mindfulness.writeonly |
|
पोषण से जुड़ा डेटा लॉग करें
dataType:
nutrition-logfilter parameter: nutrition_log
रिकॉर्ड टाइप: सेशन
संगत डिवाइस
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
ऑव्युलेशन टेस्ट
dataType:
ovulation-testfilter parameter: ovulation_test
रिकॉर्ड टाइप: Sample
|
create, update, batchDelete | .reproductive_health.writeonly |
|
ऑक्सीजन की मात्रा
dataType:
oxygen-saturationfilter parameter: oxygen_saturation
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
सूची, मिलान करें | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
नींद के दौरान सांस लेने की दर की खास जानकारी
dataType:
respiratory-rate-sleep-summaryfilter parameter: respiratory_rate_sleep_summary
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
सूची, मेल-मिलाएं | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
दौड़ने के दौरान ली गई ज़्यादा से ज़्यादा ऑक्सीजन
dataType:
run-vo2-maxfilter parameter: run_vo2_max
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
एक ही जगह पर बैठे या लेटे रहने की अवधि
dataType:
sedentary-periodfilter parameter: sedentary_period
रिकॉर्ड टाइप: इंटरवल
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
नींद
dataType:
sleepfilter parameter: sleep
रिकॉर्ड टाइप: सेशन
संगत डिवाइस
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
|
तरीका
dataType:
stepsfilter parameter: steps
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
स्विम लेंथ का डेटा
dataType:
swim-lengths-datafilter parameter: swim_lengths_data
रिकॉर्ड टाइप: इंटरवल
संगत डिवाइस
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
लक्षण
dataType:
symptomsfilter parameter: symptoms
रिकॉर्ड टाइप: Sample
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
धड़कन की दर वाले ज़ोन में बिताया गया समय
dataType:
time-in-heart-rate-zonefilter parameter: time_in_heart_rate_zone
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
कुल कैलोरी
dataType:
total-caloriesfilter parameter: total_calories
रिकॉर्ड टाइप: इंटरवल
स्टोरेज की जानकारी अपडेट होने में लगने वाला समय: एक मिनट
संगत डिवाइस
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
VO2 मैक्स
dataType:
vo2-maxfilter parameter: vo2_max
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
सूची, मिलान करें | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
वज़न
dataType:
weightfilter parameter: weight
रिकॉर्ड टाइप: Sample
संगत डिवाइस
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
क्वेरी से जुड़ी शर्तें
एपीआई से डेटा पॉइंट, रोलअप या रोज़ के रोलअप के बारे में क्वेरी करते समय, इन बातों का ध्यान रखें:
- फ़िल्टर से जुड़ी ज़रूरी शर्तें: सिर्फ़ पढ़ने के लिए उपलब्ध कुछ डिराइव किए गए डेटा टाइप, जैसे कि
total-caloriesके लिए, ऐसे फ़िल्टर की ज़रूरत होती है जो इंटरवल के शुरू होने का समय बताता हो. इसके लिए, फ़िज़िकल या सिविल टाइम का इस्तेमाल किया जाता है. - क्वेरी रेंज की सीमाएं: रोलअप और रोज़ के रोलअप एग्रीगेशन एंडपॉइंट, डेटा टाइप के आधार पर क्वेरी रेंज की ज़्यादा से ज़्यादा सीमाएं लागू करते हैं:
calories-in-heart-rate-zone,heart-rate,active-minutes, औरtotal-caloriesके लिए, क्वेरी की ज़्यादा से ज़्यादा रेंज 14 दिन होनी चाहिए.- अन्य सभी डेटा टाइप के लिए, क्वेरी की ज़्यादा से ज़्यादा सीमा 90 दिन होती है.
- रोलअप विंडो का साइज़:
rollUpएंडपॉइंट को कॉल करते समय,windowSizeकी अवधि कम से कम एक सेकंड ("1s") होनी चाहिए. एक सेकंड से कम अवधि वाले रोलअप कोINVALID_ARGUMENTके साथ अस्वीकार कर दिया जाता है. इसके अलावा, डेटा टाइप के स्टोरेज रिज़ॉल्यूशन के बराबर या उससे ज़्यादाwindowSizeचुनें. जैसे,stepsऔरdistanceजैसे एक मिनट के इंटरवल वाले डेटा टाइप के लिए"60s". इससे सब-इंटरवल में डेटा का डिस्ट्रिब्यूशन एक जैसा रहेगा. ज़्यादा जानकारी के लिए, रोलअप विंडो का साइज़ और स्टोरेज की बुनियादी सेटिंग लेख पढ़ें.
रोज़ाना बनाम इंटरवल के हिसाब से डेटा टाइप
कुछ फ़िज़ियोलॉजिकल मेट्रिक, जैसे कि धड़कन की दर में उतार-चढ़ाव (एचआरवी) या ऑक्सीजन की मात्रा (एसपीओ2) के लिए, Google Health API दो अलग-अलग तरह का डेटा उपलब्ध कराता है: रोज़ाना का वर्शन और इंटरवल का वर्शन. इनके बीच के अंतर को समझना ज़रूरी है, ताकि अपने इस्तेमाल के उदाहरण के लिए सही मेट्रिक चुनी जा सके:
हर दिन: पूरे दिन के लिए, पहले से एग्रीगेट की गई एक समरी. प्रोसेसिंग में लगने वाले समय को कम करने के लिए, इस सुविधा का इस्तेमाल करें. इससे आपको बड़े लेवल के रुझान और रोज़ाना के डैशबोर्ड देखने में मदद मिलेगी.
इंटरवल: पूरे दिन के दौरान, ज़्यादा जानकारी और हाई रिज़ॉल्यूशन में मेज़रमेंट लिए जाते हैं. इसका इस्तेमाल, दिन के दौरान होने वाले उतार-चढ़ाव को चार्ट में दिखाने या हर घंटे के हिसाब से बारीकी से विश्लेषण करने के लिए करें.
डेटा की उपलब्धता
उपयोगकर्ता के डेटा में अपडेट सिर्फ़ तब उपलब्ध होते हैं, जब वह गतिविधि ट्रैकर को सिंक करता है या Fitbit का मोबाइल ऐप्लिकेशन या वेब ऐप्लिकेशन में मैन्युअल तरीके से नया डेटा डालता है. Fitbit डिवाइस और Fitbit ऐप्लिकेशन, हर 15 मिनट में अपने-आप सिंक हो सकते हैं. इसके लिए, Fitbit ऐप्लिकेशन का मोबाइल डिवाइस पर खुला होना ज़रूरी है. साथ ही, दोनों के बीच डेटा कनेक्शन चालू होना चाहिए और वे ब्लूटूथ की रेंज में होने चाहिए. अगर उपयोगकर्ता MobileTrack का इस्तेमाल करके गतिविधि ट्रैक कर रहा है, तो ऐप्लिकेशन खुला होने पर MobileTrack हर घंटे सिंक होता है.
पुराने डेटा से क्वेरी करना
Google Health API का एक मुख्य फ़ायदा यह है कि इससे किसी व्यक्ति की परफ़ॉर्मेंस को ट्रैक किया जा सकता है. साथ ही, लंबे समय तक उसकी सेहत से जुड़ी ज़रूरी जानकारी पर नज़र रखी जा सकती है. उपयोगकर्ता के डेटा को तब तक क्वेरी किया जा सकता है, जब तक उसे रिकॉर्ड किया गया है. एपीआई, आपके ऐप्लिकेशन के इस्तेमाल किए जा सकने वाले पुराने डेटा की मात्रा पर कोई सीमा या पाबंदी नहीं लगाता है.
हालांकि, पुराने डेटा को क्वेरी करने पर अब भी स्टैंडर्ड रेट लिमिट लागू होती हैं. सिस्टम को स्थिर रखने और बहुत ज़्यादा पेलोड को रोकने के लिए, Google Health API एंडपॉइंट के हिसाब से पेज के साइज़ के साथ अपने-आप पेज नंबर डालने की सुविधा का इस्तेमाल करता है. इन बातों का ध्यान रखें:
- अपने-आप पेज पर बांटने की सुविधा: अगर आपने डेटा के लंबे स्पैन के लिए क्वेरी की है, तो एपीआई सिर्फ़ नतीजों का पहला पेज दिखाएगा. यह पेज, उस एंडपॉइंट के लिए पेज के साइज़ की सीमा तक होगा. साथ ही, इसमें
nextPageTokenभी शामिल होगा. इसके बाद के पेजों का अनुरोध करने के लिए, आपकोnextPageTokenका इस्तेमाल करना होगा. - पेज के अलग-अलग साइज़: कैपिंग की सीमाएं, एंडपॉइंट और डेटा टाइप पर निर्भर करती हैं. ज़्यादातर डेटा टाइप के लिए, पेज का साइज़ ज़्यादा से ज़्यादा 10,000 तक सीमित होता है.
हालांकि, कुछ डेटा टाइप जैसे कि
exerciseऔरsleepके लिए, पेज का डिफ़ॉल्ट और ज़्यादा से ज़्यादा साइज़ 25 पर सेट होता है. उदाहरण के लिए, अगर कोई क्लाइंट पिछले 10 सालों का नींद से जुड़ा सारा डेटा मांगता है, तो एपीआई पहले पेज पर सिर्फ़ 25 स्लीप सेशन दिखाएगा. - रोलअप की तारीख की सीमा से जुड़ी पाबंदियां: डेटा रोलअप और एग्रीगेशन एंडपॉइंट (जैसे कि
rollUpऔरdailyRollUp) के लिए, क्वेरी की तारीख की सीमाएं डेटा टाइप के आधार पर तय की जाती हैं:calories-in-heart-rate-zone,heart-rate,active-minutes, औरtotal-caloriesके लिए, ज़्यादा से ज़्यादा 14 दिनों की रेंज.- अन्य सभी रोलअप डेटा टाइप के लिए, ज़्यादा से ज़्यादा 90 दिनों की सीमा.
आपके ऐप्लिकेशन को पुराने डेटा की जितनी ज़रूरत है उसके हिसाब से, पूरे डेटासेट को वापस पाने के लिए, पेजों को क्रम से लोड करना होगा. अपने ऐप्लिकेशन के डेटा को सिंक करने की प्रोसेस डिज़ाइन करते समय, इस बात का ध्यान रखें.
यह पक्का करने के लिए कि एपीआई बेहतर तरीके से काम करे और गड़बड़ियां न हों, पुराने डेटा को क्वेरी करते समय इन दिशा-निर्देशों का पालन करें:
डेटा को फ़ेज़ के हिसाब से सिंक करना (हॉट वर्सेस कोल्ड लोड)
- शुरुआती "हॉट" लोड: प्राइमरी लोड सीक्वेंस के दौरान, सिर्फ़ पिछले 7 से 14 दिनों का सबसे नया डेटा फ़ेच और रेंडर करें. इससे यह पक्का होता है कि उपयोगकर्ताओं को डेटा तुरंत दिखे. उन्हें लंबी अवधि तक चलने वाली क्वेरी के लिए इंतज़ार न करना पड़े.
- बैकग्राउंड में "कोल्ड" लोड: प्राइमरी यूज़र इंटरफ़ेस (यूआई) रेंडर होने के बाद, पुराने डेटा को एसिंक्रोनस, कम प्राथमिकता वाली कतार या बैकग्राउंड प्रोसेस में भेजें.
एग्रीगेशन के लिए क्वेरी को हिस्सों में बांटना
- रोलअप और रोज़ के रोलअप वाले एंडपॉइंट, तारीख की ज़्यादा से ज़्यादा सीमा लागू करते हैं. यह सीमा, डेटा टाइप के हिसाब से 14 या 90 दिन होती है. इसलिए, आपको इतिहास के बड़े एग्रीगेशन क्वेरी को इन सीमाओं के अंदर, छोटे-छोटे क्रमवार इंटरवल में बांटना होगा.
- इन सब-क्वेरी को सुरक्षित तरीके से बैच या क्रम में लगाएं, ताकि एक साथ कई अनुरोध करने की सीमा का पालन किया जा सके और यूज़र इंटरफ़ेस (यूआई) पर प्रोग्रेस इंडिकेटर को लगातार अपडेट किया जा सके.
पहले से एग्रीगेट किए गए रोल-अप का इस्तेमाल करना
खास जानकारी वाले डैशबोर्ड और रुझान चार्ट को फिर से व्यवस्थित करें, ताकि पहले से एग्रीगेट किए गए डेटा और खास जानकारी वाले एंडपॉइंट (जैसे, DailyRollUpDataPoints) का इस्तेमाल किया जा सके. इससे बैकएंड पर कंप्यूटिंग का ओवरहेड और क्लाइंट को डेटा ट्रांसफ़र करने में लगने वाला समय काफ़ी कम हो जाएगा.
गड़बड़ी ठीक करने की बेहतर सुविधा (स्मार्ट तरीके से फिर से कोशिश करना)
- दर की सीमाओं (
429 Too Many Requests) और सर्वर गेटवे टाइमआउट (504 Gateway Timeout) का सामना करते समय, एक्सपोनेन्शियल बैकऑफ़ को सख्ती से लागू करें. बड़े और फ़ेल हो चुके पेलोड को तुरंत फिर से भेजने की कोशिश न करें. तुरंत फिर से कोशिश करने से, बैकएंड पर ज़्यादा लोड पड़ता है और सिस्टम की परफ़ॉर्मेंस खराब हो जाती है.
तीसरे पक्ष को ऐक्सेस देना
Fitbit डिवाइस, तीसरे पक्ष के ऐप्लिकेशन या सेवाओं के साथ सीधे तौर पर कम्यूनिकेट नहीं कर सकते. इन डिवाइसों को सिर्फ़ Fitbit मोबाइल ऐप्लिकेशन के साथ कम्यूनिकेट और सिंक करने के लिए डिज़ाइन किया गया है.
Fitbit ऐप्लिकेशन खुला होने पर, डिवाइस दिन भर में अपने-आप डेटा सिंक करता है. अगर ब्लूटूथ चालू है और ऐप्लिकेशन बैकग्राउंड में चल रहा है, तो हर 15 मिनट में डेटा सिंक होता है. सिंक करने की यह प्रोसेस पूरी होने के बाद, Google Health API के ज़रिए तीसरे पक्ष की सेवाओं के लिए डेटा उपलब्ध हो जाता है.
दूरी के स्टैंडर्ड
व्यायाम की दूरी, जैसे कि elevationGainMillimeters को मिलीमीटर में मापा जाता है. ऐसा इन वजहों से किया जाता है:
- डेटा को सटीक बनाए रखना: मिलीमीटर का इस्तेमाल करने की सबसे अहम वजह यह है कि हम जो डेटा पढ़ते और देते हैं उसमें कोई भी गड़बड़ी न हो. मिलीमीटर जैसी छोटी इकाई का इस्तेमाल करने से, हम मेज़रमेंट को ज़्यादा सटीक तरीके से दिखा पाते हैं.
- स्टैंडर्ड यूनिट: हमारी सभी सेवाओं में, मिलीमीटर को स्टैंडर्ड यूनिट के तौर पर इस्तेमाल किया जाता है. इससे यह पक्का करने में मदद मिलती है कि एपीआई के अलग-अलग हिस्सों से इंटरैक्ट करने वाले डेवलपर को एक जैसा अनुभव मिले.
- मेज़रमेंट सिस्टम के लिए बेहतर सपोर्ट: मिलीमीटर जैसी बुनियादी इकाई का इस्तेमाल करने से, डेवलपर के लिए किसी भी दूसरी चुनी गई इकाई में बदलना आसान हो जाता है. इससे कोई फ़र्क़ नहीं पड़ता कि वे मीट्रिक, इंपीरियल या अन्य मेज़रमेंट सिस्टम के साथ काम कर रहे हैं या नहीं.
दिन की अवधि में बदलाव
Health API, समय को मैनेज करने के लिए उपयोगकर्ता के समय को प्राथमिकता देता है. ऐसा इसलिए, ताकि दिन की अवधि में होने वाले बदलावों को ध्यान में रखा जा सके. ये बदलाव, डेलाइट सेविंग टाइम या यात्रा की वजह से होते हैं. हर डेटा पॉइंट को दो तरह से सेव किया जाता है. पहला, इवेंट के समय का यूटीसी टाइमस्टैंप और दूसरा, इवेंट के समय का यूटीसी ऑफ़सेट. इससे सिस्टम को ये काम करने में मदद मिलती है:
- इवेंट को किसी सटीक फ़िज़िकल इंस्टेंट पर मैप करें.
- उपयोगकर्ता के स्थानीय कॉन्टेक्स्ट के हिसाब से, एग्रीगेशन के लिए समय को सही करें.
डेलाइट सेविंग टाइम
डेलाइट सेविंग टाइम (डीएसटी) के दौरान, "फ़ॉल बैक" की वजह से सिविल डे 25 घंटे का हो जाता है. इसलिए, उस तारीख के रोलअप में 25 घंटे का डेटा शामिल होगा. "स्प्रिंग फ़ॉरवर्ड" के नतीजे के तौर पर, 23 घंटे का सिविल डे होता है. इसमें समय वापस स्टैंडर्ड टाइम पर चला जाता है.
यात्रा
अलग-अलग टाइम ज़ोन में यात्रा करने से, एक दिन की अवधि में और भी ज़्यादा अंतर आ सकता है.
टाइम ज़ोन में अंतर को ठीक करने के लिए, dailyRollUp एंडपॉइंट का इस्तेमाल करें. यह उपयोगकर्ता के स्थानीय समय के हिसाब से, उस दिन के कैलेंडर में डेटा को अपने-आप एट्रिब्यूट करता है जिस दिन इसे रिकॉर्ड किया गया था. इससे टाइम ज़ोन में बदलाव होने के बावजूद, दिन के हिसाब से डेटा को "स्टिच" किया जा सकता है.