# اسٹور لوکیشن ڈیٹا ![اس سبق کا خاکہ](../../../../../translated_images/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.ur.jpg) > خاکہ نگاری: [نیتیا نرسمہن](https://github.com/nitya)۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔ ## لیکچر سے پہلے کا کوئز [لیکچر سے پہلے کا کوئز](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/23) ## تعارف پچھلے سبق میں، آپ نے سیکھا کہ GPS سینسر کا استعمال کرکے لوکیشن ڈیٹا کیسے حاصل کیا جاتا ہے۔ اس ڈیٹا کو کسی کھانے سے لدے ٹرک کی لوکیشن اور اس کے سفر کو ظاہر کرنے کے لیے استعمال کرنے کے لیے، اسے کلاؤڈ میں کسی IoT سروس پر بھیجنا اور پھر کہیں محفوظ کرنا ضروری ہے۔ اس سبق میں آپ IoT ڈیٹا کو محفوظ کرنے کے مختلف طریقے سیکھیں گے اور یہ بھی جانیں گے کہ سرور لیس کوڈ کا استعمال کرتے ہوئے اپنے IoT سروس کا ڈیٹا کیسے محفوظ کریں۔ اس سبق میں ہم درج ذیل موضوعات کا احاطہ کریں گے: * [ساختہ اور غیر ساختہ ڈیٹا](../../../../../3-transport/lessons/2-store-location-data) * [GPS ڈیٹا کو IoT ہب پر بھیجیں](../../../../../3-transport/lessons/2-store-location-data) * [ہاٹ، وارم، اور کولڈ راستے](../../../../../3-transport/lessons/2-store-location-data) * [GPS ایونٹس کو سرور لیس کوڈ کے ذریعے ہینڈل کریں](../../../../../3-transport/lessons/2-store-location-data) * [Azure اسٹوریج اکاؤنٹس](../../../../../3-transport/lessons/2-store-location-data) * [اپنے سرور لیس کوڈ کو اسٹوریج سے جوڑیں](../../../../../3-transport/lessons/2-store-location-data) ## ساختہ اور غیر ساختہ ڈیٹا کمپیوٹر سسٹمز ڈیٹا کے ساتھ کام کرتے ہیں، اور یہ ڈیٹا مختلف شکلوں اور سائز میں آتا ہے۔ یہ ایک عدد سے لے کر بڑی مقدار میں متن، ویڈیوز، تصاویر، اور IoT ڈیٹا تک مختلف ہو سکتا ہے۔ عام طور پر ڈیٹا کو دو اقسام میں تقسیم کیا جا سکتا ہے - *ساختہ* ڈیٹا اور *غیر ساختہ* ڈیٹا۔ * **ساختہ ڈیٹا** وہ ڈیٹا ہے جس کی ایک واضح، سخت ساخت ہوتی ہے جو تبدیل نہیں ہوتی اور عام طور پر ڈیٹا کی ٹیبلز کے ساتھ تعلقات کو ظاہر کرتی ہے۔ ایک مثال کسی شخص کی تفصیلات ہیں جیسے ان کا نام، تاریخ پیدائش، اور پتہ۔ * **غیر ساختہ ڈیٹا** وہ ڈیٹا ہے جس کی کوئی واضح، سخت ساخت نہیں ہوتی، بشمول وہ ڈیٹا جو اکثر اپنی ساخت تبدیل کر سکتا ہے۔ ایک مثال دستاویزات ہیں جیسے تحریری دستاویزات یا اسپریڈشیٹس۔ ✅ تحقیق کریں: کیا آپ ساختہ اور غیر ساختہ ڈیٹا کی مزید مثالیں سوچ سکتے ہیں؟ > 💁 نیم ساختہ ڈیٹا بھی ہوتا ہے جو ساختہ ہوتا ہے لیکن مقررہ ٹیبلز میں فٹ نہیں ہوتا۔ IoT ڈیٹا کو عام طور پر غیر ساختہ ڈیٹا سمجھا جاتا ہے۔ تصور کریں کہ آپ ایک بڑے کمرشل فارم کے گاڑیوں کے بیڑے میں IoT ڈیوائسز شامل کر رہے ہیں۔ آپ مختلف قسم کی گاڑیوں کے لیے مختلف ڈیوائسز استعمال کرنا چاہیں گے۔ مثال کے طور پر: * فارم کی گاڑیوں جیسے ٹریکٹرز کے لیے آپ GPS ڈیٹا چاہتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ وہ صحیح کھیتوں پر کام کر رہے ہیں۔ * کھانے کو گوداموں تک لے جانے والے ڈلیوری ٹرکوں کے لیے آپ GPS ڈیٹا کے ساتھ رفتار اور ایکسیلیریشن ڈیٹا چاہتے ہیں تاکہ ڈرائیور کی حفاظت کو یقینی بنایا جا سکے، اور ڈرائیور کی شناخت اور اسٹارٹ/اسٹاپ ڈیٹا تاکہ مقامی قوانین کے مطابق کام کے اوقات کی تعمیل کو یقینی بنایا جا سکے۔ * ریفریجریٹڈ ٹرکوں کے لیے آپ درجہ حرارت کا ڈیٹا بھی چاہتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ کھانے کو ٹرانزٹ میں خراب ہونے سے بچایا جا سکے۔ یہ ڈیٹا مسلسل تبدیل ہو سکتا ہے۔ مثال کے طور پر، اگر IoT ڈیوائس کسی ٹرک کیبن میں ہے، تو وہ ڈیٹا جو یہ بھیجتا ہے ٹریلر کے بدلنے کے ساتھ تبدیل ہو سکتا ہے، جیسے صرف ریفریجریٹڈ ٹریلر کے استعمال پر درجہ حرارت کا ڈیٹا بھیجنا۔ ✅ اور کون سا IoT ڈیٹا حاصل کیا جا سکتا ہے؟ ان چیزوں کے بارے میں سوچیں جو ٹرک لے جا سکتے ہیں، اور دیکھ بھال کے ڈیٹا کے بارے میں بھی۔ یہ ڈیٹا گاڑی سے گاڑی تک مختلف ہوتا ہے، لیکن یہ سب ایک ہی IoT سروس پر پروسیسنگ کے لیے بھیجا جاتا ہے۔ IoT سروس کو اس غیر ساختہ ڈیٹا کو پروسیس کرنے کے قابل ہونا چاہیے، اسے اس طرح محفوظ کرنا چاہیے کہ اسے تلاش یا تجزیہ کیا جا سکے، اور اس ڈیٹا کی مختلف ساختوں کے ساتھ کام کر سکے۔ ### SQL بمقابلہ NoSQL اسٹوریج ڈیٹا بیس وہ سروسز ہیں جو آپ کو ڈیٹا محفوظ کرنے اور اس پر سوالات کرنے کی اجازت دیتی ہیں۔ ڈیٹا بیس دو اقسام میں آتے ہیں - SQL اور NoSQL۔ #### SQL ڈیٹا بیس پہلے ڈیٹا بیس ریلیشنل ڈیٹا بیس مینجمنٹ سسٹمز (RDBMS) تھے، یا ریلیشنل ڈیٹا بیس۔ انہیں SQL ڈیٹا بیس بھی کہا جاتا ہے کیونکہ ان کے ساتھ تعامل کرنے کے لیے اسٹرکچرڈ کوئری لینگویج (SQL) استعمال کی جاتی ہے۔ یہ ڈیٹا بیس ایک اسکیمہ پر مشتمل ہوتے ہیں - ڈیٹا کی ایک واضح طور پر بیان کردہ سیٹ ٹیبلز، جو اسپریڈشیٹ کی طرح ہوتی ہیں۔ ہر ٹیبل میں متعدد نامزد کالم ہوتے ہیں۔ جب آپ ڈیٹا شامل کرتے ہیں، تو آپ ٹیبل میں ایک قطار شامل کرتے ہیں، ہر کالم میں اقدار ڈال کر۔ یہ ڈیٹا کو ایک سخت ساخت میں رکھتا ہے - اگرچہ آپ کالمز کو خالی چھوڑ سکتے ہیں، لیکن اگر آپ نیا کالم شامل کرنا چاہتے ہیں تو آپ کو ڈیٹا بیس پر یہ کرنا ہوگا، موجودہ قطاروں کے لیے اقدار کو بھرنا ہوگا۔ یہ ڈیٹا بیس ریلیشنل ہوتے ہیں - یعنی ایک ٹیبل کا دوسرے کے ساتھ تعلق ہو سکتا ہے۔ ![ریلیشنل ڈیٹا بیس جس میں یوزر ٹیبل کا ID پرچیزز ٹیبل کے یوزر ID کالم سے جڑا ہوا ہے، اور پروڈکٹس ٹیبل کا ID پرچیزز ٹیبل کے پروڈکٹ ID سے جڑا ہوا ہے](../../../../../translated_images/sql-database.be160f12bfccefd3ca718a66468c2c4c89c53e5aad4c295324d576da87f9dfdd.ur.png) مثال کے طور پر، اگر آپ کسی صارف کی ذاتی تفصیلات کو ایک ٹیبل میں محفوظ کرتے ہیں، تو آپ کے پاس ہر صارف کے لیے ایک منفرد داخلی ID ہوگا جو ایک ٹیبل میں صارف کے نام اور پتے کے ساتھ استعمال ہوگا۔ اگر آپ اس صارف کی دیگر تفصیلات، جیسے ان کی خریداری، کو کسی دوسرے ٹیبل میں محفوظ کرنا چاہتے ہیں، تو آپ کے پاس نئے ٹیبل میں اس صارف کے ID کے لیے ایک کالم ہوگا۔ جب آپ کسی صارف کو دیکھتے ہیں، تو آپ ان کے ID کا استعمال کرکے ان کی ذاتی تفصیلات ایک ٹیبل سے اور ان کی خریداری دوسری ٹیبل سے حاصل کر سکتے ہیں۔ SQL ڈیٹا بیس ساختہ ڈیٹا کو محفوظ کرنے کے لیے مثالی ہیں، اور جب آپ یہ یقینی بنانا چاہتے ہیں کہ ڈیٹا آپ کی اسکیمہ سے میل کھاتا ہے۔ ✅ اگر آپ نے پہلے SQL استعمال نہیں کیا ہے، تو [SQL کا ویکیپیڈیا صفحہ](https://wikipedia.org/wiki/SQL) پڑھنے کے لیے وقت نکالیں۔ کچھ مشہور SQL ڈیٹا بیس میں Microsoft SQL Server، MySQL، اور PostgreSQL شامل ہیں۔ ✅ تحقیق کریں: ان SQL ڈیٹا بیسز اور ان کی صلاحیتوں کے بارے میں پڑھیں۔ #### NoSQL ڈیٹا بیس NoSQL ڈیٹا بیس کو NoSQL کہا جاتا ہے کیونکہ ان میں SQL ڈیٹا بیس کی طرح سخت ساخت نہیں ہوتی۔ انہیں دستاویز ڈیٹا بیس بھی کہا جاتا ہے کیونکہ وہ غیر ساختہ ڈیٹا جیسے دستاویزات کو محفوظ کر سکتے ہیں۔ > 💁 ان کے نام کے باوجود، کچھ NoSQL ڈیٹا بیس آپ کو ڈیٹا پر سوالات کرنے کے لیے SQL استعمال کرنے کی اجازت دیتے ہیں۔ ![NoSQL ڈیٹا بیس میں فولڈرز میں دستاویزات](../../../../../translated_images/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.ur.png) NoSQL ڈیٹا بیس میں پہلے سے متعین اسکیمہ نہیں ہوتا جو ڈیٹا کو محفوظ کرنے کے طریقے کو محدود کرے، بلکہ آپ کسی بھی غیر ساختہ ڈیٹا کو داخل کر سکتے ہیں، عام طور پر JSON دستاویزات کا استعمال کرتے ہوئے۔ ان دستاویزات کو فولڈرز میں منظم کیا جا سکتا ہے، جیسے آپ کے کمپیوٹر پر فائلز۔ ہر دستاویز میں دوسرے دستاویزات سے مختلف فیلڈز ہو سکتے ہیں - مثال کے طور پر، اگر آپ اپنے فارم کی گاڑیوں سے IoT ڈیٹا محفوظ کر رہے ہیں، تو کچھ میں ایکسیلرومیٹر اور رفتار کے ڈیٹا کے لیے فیلڈز ہو سکتے ہیں، جبکہ دیگر میں ٹریلر کے درجہ حرارت کے لیے فیلڈز ہو سکتے ہیں۔ اگر آپ کسی نئے ٹرک کی قسم شامل کرتے ہیں، جیسے ایک ایسا ٹرک جس میں وزن کو ٹریک کرنے کے لیے بلٹ ان اسکیلز ہوں، تو آپ کا IoT ڈیوائس اس نئے فیلڈ کو شامل کر سکتا ہے اور اسے ڈیٹا بیس میں کسی تبدیلی کے بغیر محفوظ کیا جا سکتا ہے۔ کچھ مشہور NoSQL ڈیٹا بیس میں Azure CosmosDB، MongoDB، اور CouchDB شامل ہیں۔ ✅ تحقیق کریں: ان NoSQL ڈیٹا بیسز اور ان کی صلاحیتوں کے بارے میں پڑھیں۔ اس سبق میں، آپ IoT ڈیٹا کو محفوظ کرنے کے لیے NoSQL اسٹوریج استعمال کریں گے۔ ## GPS ڈیٹا کو IoT ہب پر بھیجیں پچھلے سبق میں آپ نے اپنے IoT ڈیوائس سے GPS سینسر کے ذریعے GPS ڈیٹا حاصل کیا۔ اس IoT ڈیٹا کو کلاؤڈ میں محفوظ کرنے کے لیے، آپ کو اسے IoT سروس پر بھیجنا ہوگا۔ ایک بار پھر، آپ Azure IoT Hub استعمال کریں گے، وہی IoT کلاؤڈ سروس جو آپ نے پچھلے پروجیکٹ میں استعمال کی تھی۔ ![IoT ڈیوائس سے IoT ہب تک GPS ٹیلیمیٹری بھیجنا](../../../../../translated_images/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.ur.png) ### کام - GPS ڈیٹا کو IoT ہب پر بھیجیں 1. ایک نیا IoT ہب مفت ٹائر کا استعمال کرتے ہوئے بنائیں۔ > ⚠️ اگر ضرورت ہو تو [پروجیکٹ 2، سبق 4 سے IoT ہب بنانے کی ہدایات](../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#create-an-iot-service-in-the-cloud) کا حوالہ دیں۔ ایک نیا ریسورس گروپ بنانا یاد رکھیں۔ نئے ریسورس گروپ کا نام `gps-sensor` رکھیں، اور نئے IoT ہب کا ایک منفرد نام `gps-sensor` پر مبنی رکھیں، جیسے `gps-sensor-<آپ کا نام>`۔ > 💁 اگر آپ کے پاس پچھلے پروجیکٹ سے IoT ہب موجود ہے، تو آپ اسے دوبارہ استعمال کر سکتے ہیں۔ دیگر سروسز بناتے وقت اس IoT ہب کے نام اور اس کے ریسورس گروپ کا استعمال کرنا یاد رکھیں۔ 1. IoT ہب میں ایک نیا ڈیوائس شامل کریں۔ اس ڈیوائس کا نام `gps-sensor` رکھیں۔ ڈیوائس کے لیے کنکشن اسٹرنگ حاصل کریں۔ 1. اپنے ڈیوائس کے کوڈ کو اپ ڈیٹ کریں تاکہ GPS ڈیٹا کو نئے IoT ہب پر بھیجا جا سکے، پچھلے مرحلے سے ڈیوائس کنکشن اسٹرنگ کا استعمال کرتے ہوئے۔ > ⚠️ اگر ضرورت ہو تو [پروجیکٹ 2، سبق 4 سے اپنے ڈیوائس کو IoT سروس سے جوڑنے کی ہدایات](../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#connect-your-device-to-the-iot-service) کا حوالہ دیں۔ 1. GPS ڈیٹا کو JSON کے درج ذیل فارمیٹ میں بھیجیں: ```json { "gps" : { "lat" : , "lon" : } } ``` 1. GPS ڈیٹا ہر منٹ بھیجیں تاکہ آپ اپنی روزانہ کی میسج الاٹمنٹ ختم نہ کریں۔ اگر آپ Wio Terminal استعمال کر رہے ہیں، تو تمام ضروری لائبریریاں شامل کرنا یاد رکھیں، اور NTP سرور کا استعمال کرتے ہوئے وقت سیٹ کریں۔ آپ کے کوڈ کو یہ بھی یقینی بنانا ہوگا کہ GPS لوکیشن بھیجنے سے پہلے سیریل پورٹ سے تمام ڈیٹا پڑھ لیا گیا ہو، پچھلے سبق کے موجودہ کوڈ کا استعمال کرتے ہوئے۔ JSON دستاویز بنانے کے لیے درج ذیل کوڈ استعمال کریں: ```cpp DynamicJsonDocument doc(1024); doc["gps"]["lat"] = gps.location.lat(); doc["gps"]["lon"] = gps.location.lng(); ``` اگر آپ ورچوئل IoT ڈیوائس استعمال کر رہے ہیں، تو ورچوئل ماحول کا استعمال کرتے ہوئے تمام ضروری لائبریریاں انسٹال کرنا یاد رکھیں۔ Raspberry Pi اور ورچوئل IoT ڈیوائس دونوں کے لیے، پچھلے سبق کے موجودہ کوڈ کا استعمال کرتے ہوئے طول بلد اور عرض بلد کی اقدار حاصل کریں، پھر انہیں درست JSON فارمیٹ میں درج ذیل کوڈ کے ساتھ بھیجیں: ```python message_json = { "gps" : { "lat":lat, "lon":lon } } print("Sending telemetry", message_json) message = Message(json.dumps(message_json)) ``` > 💁 آپ اس کوڈ کو [code/wio-terminal](../../../../../3-transport/lessons/2-store-location-data/code/wio-terminal)، [code/pi](../../../../../3-transport/lessons/2-store-location-data/code/pi) یا [code/virtual-device](../../../../../3-transport/lessons/2-store-location-data/code/virtual-device) فولڈر میں تلاش کر سکتے ہیں۔ اپنے ڈیوائس کا کوڈ چلائیں اور `az iot hub monitor-events` CLI کمانڈ کا استعمال کرتے ہوئے یہ یقینی بنائیں کہ پیغامات IoT ہب میں جا رہے ہیں۔ ## ہاٹ، وارم، اور کولڈ راستے IoT ڈیوائس سے کلاؤڈ تک ڈیٹا ہمیشہ حقیقی وقت میں پروسیس نہیں کیا جاتا۔ کچھ ڈیٹا کو حقیقی وقت میں پروسیس کرنے کی ضرورت ہوتی ہے، کچھ کو تھوڑے وقت بعد، اور کچھ کو بہت بعد میں۔ مختلف اوقات میں ڈیٹا کو پروسیس کرنے والی مختلف سروسز کے بہاؤ کو ہاٹ، وارم، اور کولڈ راستے کہا جاتا ہے۔ ### ہاٹ راستہ ہاٹ راستہ اس ڈیٹا کو ظاہر کرتا ہے جسے حقیقی وقت یا قریب حقیقی وقت میں پروسیس کرنے کی ضرورت ہوتی ہے۔ آپ ہاٹ راستے کے ڈیٹا کو الرٹس کے لیے استعمال کریں گے، جیسے یہ الرٹ کہ کوئی گاڑی ڈپو کے قریب پہنچ رہی ہے، یا ریفریجریٹڈ ٹرک میں درجہ حرارت بہت زیادہ ہے۔ ہاٹ راستے کے ڈیٹا کو استعمال کرنے کے لیے، آپ کا کوڈ آپ کی کلاؤڈ سروسز کے ذریعے موصول ہونے والے ایونٹس پر فوراً ردعمل دے گا۔ ### وارم راستہ وارم راستہ اس ڈیٹا کو ظاہر کرتا ہے جسے موصول ہونے کے تھوڑے وقت بعد پروسیس کیا جا سکتا ہے، جیسے رپورٹنگ یا قلیل مدتی تجزیات کے لیے۔ آپ وارم راستے کے ڈیٹا کو روزانہ کی رپورٹس کے لیے استعمال کریں گے، جیسے گاڑیوں کے مائلیج کی رپورٹس۔ وارم راستے کا ڈیٹا کلاؤڈ سروس کے ذریعے موصول ہونے کے بعد کسی ایسے اسٹوریج میں محفوظ کیا جاتا ہے جس تک جلدی رسائی حاصل کی جا سکے۔ ### کولڈ راستہ کولڈ راستہ تاریخی ڈیٹا کو ظاہر کرتا ہے، جو طویل مدتی کے لیے محفوظ کیا جاتا ہے تاکہ جب بھی ضرورت ہو پروسیس کیا جا سکے۔ مثال کے طور پر، آپ کولڈ راستے کو گاڑیوں کے سالانہ مائلیج کی رپورٹس حاصل کرنے کے لیے استعمال کر سکتے ہیں، یا راستوں پر تجزیہ کرنے کے لیے تاکہ ایندھن کے اخراجات کو کم کرنے کے لیے سب سے زیادہ مؤثر راستہ تلاش کیا جا سکے۔ کولڈ راستے کا ڈیٹا ڈیٹا ویئر ہاؤسز میں محفوظ کیا جاتا ہے - ایسے ڈیٹا بیس جو بڑی مقدار میں ڈیٹا کو محفوظ کرنے کے لیے ڈیزائن کیے گئے ہیں جو کبھی تبدیل نہیں ہوگا اور جن پر جلدی اور آسانی سے سوالات کیے جا سکتے ہیں۔ آپ کے کلاؤڈ ایپلیکیشن میں عام طور پر ایک باقاعدہ کام ہوگا جو روزانہ، ہفتہ وار، یا ماہانہ وقت پر وارم راستے کے اسٹوریج سے ڈیٹا کو ڈیٹا ویئر ہاؤس میں منتقل کرے گا۔ ✅ ان اسباق میں آپ نے جو ڈیٹا حاصل کیا ہے، اس کے بارے میں سوچیں۔ کیا یہ ہاٹ، وارم، یا کولڈ راستے کا ڈیٹا ہے؟ ## GPS ایونٹس کو سرور لیس کوڈ کے ذریعے ہینڈل کریں ایک بار جب ڈیٹا آپ کے IoT ہب میں آنا شروع ہو جائے، تو آپ کچھ سرور لیس کوڈ لکھ سکتے ہیں جو ایونٹس کو سننے کے لیے Event-Hub کے ہم آہنگ اینڈ پوائنٹ پر شائع کرے۔ یہ وارم راستہ ہے - یہ ڈیٹا محفوظ کیا جائے گا اور اگلے سبق میں سفر کی رپورٹنگ کے لیے استعمال ہوگا۔ ![IoT ڈیوائس سے IoT ہب، پھر ایونٹ ہب ٹرگر کے ذریعے Azure فنکشنز تک GPS ٹیلیمیٹری بھیجنا](../../../../../translated_images/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.ur.png) ### کام - GPS ایونٹس کو سرور لیس کوڈ کے ذریعے ہینڈل کریں 1. Azure Functions CLI کا استعمال کرتے ہوئے ایک Azure فنکشنز ایپ بنائیں۔ Python رن ٹائم استعمال کریں، اور اسے `gps-trigger` نامی فولڈر میں بنائیں، اور فنکشنز ایپ پروجیکٹ کا نام بھی یہی رکھیں۔ اس کے لیے ایک ورچوئل ماحول بنانا یقینی بنائیں۔ > ⚠️ آپ [Azure Functions پروجیکٹ بنانے کے لیے ہدایات، پروجیکٹ 2، سبق 5](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-a-serverless-application) سے رجوع کر سکتے ہیں اگر ضرورت ہو۔ 1. ایک IoT Hub ایونٹ ٹرگر شامل کریں جو IoT Hub کے ایونٹ ہب کے ہم آہنگ اینڈ پوائنٹ کو استعمال کرے۔ > ⚠️ اگر ضرورت ہو تو آپ [پروجیکٹ 2، سبق 5 سے IoT Hub ایونٹ ٹرگر بنانے کی ہدایات](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-an-iot-hub-event-trigger) دیکھ سکتے ہیں۔ 1. `local.settings.json` فائل میں ایونٹ ہب کے ہم آہنگ اینڈ پوائنٹ کنکشن اسٹرنگ سیٹ کریں، اور اس اندراج کے لیے کلید کو `function.json` فائل میں استعمال کریں۔ 1. Azurite ایپ کو مقامی اسٹوریج ایمولیٹر کے طور پر استعمال کریں۔ 1. اپنی فنکشنز ایپ چلائیں تاکہ یہ یقینی بنایا جا سکے کہ یہ آپ کے GPS ڈیوائس سے ایونٹس وصول کر رہی ہے۔ یہ بھی یقینی بنائیں کہ آپ کا IoT ڈیوائس چل رہا ہے اور GPS ڈیٹا بھیج رہا ہے۔ ```output Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}} ``` ## Azure اسٹوریج اکاؤنٹس ![Azure Storage کا لوگو](../../../../../translated_images/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.ur.png) Azure اسٹوریج اکاؤنٹس ایک عمومی مقصد کا اسٹوریج سروس ہے جو مختلف طریقوں سے ڈیٹا کو محفوظ کر سکتا ہے۔ آپ ڈیٹا کو blobs، queues، tables، یا files کی صورت میں محفوظ کر سکتے ہیں، اور یہ سب ایک ساتھ ممکن ہے۔ ### Blob اسٹوریج لفظ *Blob* کا مطلب ہے "بائنری بڑے آبجیکٹس"، لیکن یہ کسی بھی غیر ساختہ ڈیٹا کے لیے استعمال ہونے والی اصطلاح بن چکی ہے۔ آپ blob اسٹوریج میں کسی بھی قسم کا ڈیٹا محفوظ کر سکتے ہیں، جیسے IoT ڈیٹا پر مشتمل JSON دستاویزات، تصاویر، اور فلموں کی فائلیں۔ Blob اسٹوریج میں *containers* کا تصور ہوتا ہے، جو نامزد buckets ہیں جن میں آپ ڈیٹا محفوظ کر سکتے ہیں، جیسے relational database میں tables۔ ان containers میں ایک یا زیادہ فولڈرز ہو سکتے ہیں blobs کو محفوظ کرنے کے لیے، اور ہر فولڈر میں مزید فولڈرز ہو سکتے ہیں، جیسے آپ کے کمپیوٹر کی ہارڈ ڈسک پر فائلیں محفوظ ہوتی ہیں۔ آپ اس سبق میں IoT ڈیٹا محفوظ کرنے کے لیے blob اسٹوریج استعمال کریں گے۔ ✅ تحقیق کریں: [Azure Blob Storage](https://docs.microsoft.com/azure/storage/blobs/storage-blobs-overview?WT.mc_id=academic-17441-jabenn) کے بارے میں پڑھیں۔ ### Table اسٹوریج Table اسٹوریج آپ کو نیم ساختہ ڈیٹا محفوظ کرنے کی اجازت دیتا ہے۔ Table اسٹوریج دراصل ایک NoSQL ڈیٹا بیس ہے، لہذا پہلے سے طے شدہ tables کی ضرورت نہیں ہوتی، لیکن یہ ایک یا زیادہ tables میں ڈیٹا محفوظ کرنے کے لیے ڈیزائن کیا گیا ہے، جہاں ہر row کو منفرد keys کے ذریعے شناخت کیا جاتا ہے۔ ✅ تحقیق کریں: [Azure Table Storage](https://docs.microsoft.com/azure/storage/tables/table-storage-overview?WT.mc_id=academic-17441-jabenn) کے بارے میں پڑھیں۔ ### Queue اسٹوریج Queue اسٹوریج آپ کو 64KB تک کے پیغامات کو ایک queue میں محفوظ کرنے کی اجازت دیتا ہے۔ آپ پیغامات کو queue کے آخر میں شامل کر سکتے ہیں اور انہیں سامنے سے پڑھ سکتے ہیں۔ Queues پیغامات کو غیر معینہ مدت تک محفوظ رکھتی ہیں جب تک کہ اسٹوریج کی جگہ موجود ہو، لہذا یہ پیغامات کو طویل مدت تک محفوظ کرنے کی اجازت دیتی ہے، پھر ضرورت پڑنے پر انہیں پڑھا جا سکتا ہے۔ مثال کے طور پر، اگر آپ GPS ڈیٹا کو پروسیس کرنے کے لیے ماہانہ کام چلانا چاہتے ہیں، تو آپ اسے روزانہ ایک مہینے کے لیے queue میں شامل کر سکتے ہیں، پھر مہینے کے آخر میں تمام پیغامات کو queue سے پروسیس کر سکتے ہیں۔ ✅ تحقیق کریں: [Azure Queue Storage](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction?WT.mc_id=academic-17441-jabenn) کے بارے میں پڑھیں۔ ### File اسٹوریج File اسٹوریج کلاؤڈ میں فائلوں کو محفوظ کرنے کا طریقہ ہے، اور کوئی بھی ایپس یا ڈیوائسز معیاری پروٹوکولز کا استعمال کرتے ہوئے اس سے جڑ سکتے ہیں۔ آپ فائلوں کو file اسٹوریج میں لکھ سکتے ہیں، پھر اسے اپنے PC یا Mac پر ایک ڈرائیو کے طور پر ماؤنٹ کر سکتے ہیں۔ ✅ تحقیق کریں: [Azure File Storage](https://docs.microsoft.com/azure/storage/files/storage-files-introduction?WT.mc_id=academic-17441-jabenn) کے بارے میں پڑھیں۔ ## اپنے سرور لیس کوڈ کو اسٹوریج سے جوڑیں آپ کی فنکشن ایپ کو اب blob اسٹوریج سے جڑنے کی ضرورت ہے تاکہ IoT Hub سے پیغامات محفوظ کیے جا سکیں۔ اس کے دو طریقے ہیں: * فنکشن کوڈ کے اندر blob اسٹوریج سے جڑیں، blob اسٹوریج Python SDK کا استعمال کرتے ہوئے ڈیٹا blobs کے طور پر لکھیں۔ * ایک آؤٹ پٹ فنکشن بائنڈنگ استعمال کریں تاکہ فنکشن کے ریٹرن ویلیو کو blob اسٹوریج سے باندھیں اور blob کو خود بخود محفوظ کریں۔ اس سبق میں، آپ Python SDK استعمال کریں گے تاکہ blob اسٹوریج کے ساتھ تعامل کرنا سیکھ سکیں۔ ![IoT ڈیوائس سے GPS ٹیلیمیٹری کو IoT Hub، پھر Azure Functions کے ذریعے ایونٹ ہب ٹرگر، اور پھر blob اسٹوریج میں محفوظ کرنا](../../../../../translated_images/save-telemetry-to-storage-from-functions.ed3b1820980097f143d9f0570072da11304c2bc7906359dfa075b4d9b253c20f.ur.png) ڈیٹا JSON blob کے طور پر درج ذیل فارمیٹ میں محفوظ کیا جائے گا: ```json { "device_id": , "timestamp" :