|
|
6 months ago | |
|---|---|---|
| .. | ||
| README.md | 6 months ago | |
| assignment.md | 6 months ago | |
README.md
నిల్వ స్థలం డేటా
స్కెచ్నోట్ నిత్య నరసింహన్ నుండి. పెద్ద వెర్షన్ కోసం చిత్రాన్ని క్లిక్ చేయండి.
ప్రీ-లెక్చర్ క్విజ్
పరిచయం
గత పాఠంలో, మీరు GPS సెన్సార్ను ఉపయోగించి స్థలం డేటాను ఎలా సేకరించాలో నేర్చుకున్నారు. ఆ డేటాను ఒక IoT సేవకు క్లౌడ్లో పంపించి నిల్వ చేయాలి, తద్వారా ఆ డేటాను ఉపకరణానికి సంబంధించిన ట్రక్కు ప్రయాణాన్ని మరియు స్థానాన్ని విజువలైజ్ చేయవచ్చు.
ఈ పాఠంలో మీరు IoT డేటాను నిల్వ చేసే వివిధ మార్గాలను నేర్చుకుంటారు, మరియు సర్వర్లెస్ కోడ్ ఉపయోగించి మీ IoT సేవ నుండి డేటాను ఎలా నిల్వ చేయాలో తెలుసుకుంటారు.
ఈ పాఠంలో మనం కిందవి కవర్ చేస్తాము:
- సంఘటిత మరియు అసంఘటిత డేటా
- GPS డేటాను ఒక IoT హబ్ కి పంపడం
- హాట్, వార్మ్, మరియు కోల్డ్ పాత్స్
- సర్వర్లెస్ కోడ్ ఉపయోగించి GPS ఈవెంట్లను నిర్వహించడం
- ఆజ్యూర్ స్టోరేజ్ అకౌంట్లు
- మీ సర్వర్లెస్ కోడ్ ను స్టోరేజ్ కు కనెక్ట్ చేయడం
సంఘటిత మరియు అసంఘటిత డేటా
కంప్యూటర్ సిస్టమ్స్ డేటాతో పని చేస్తాయి, మరియు ఈ డేటా వేర్వేరు ఆకారాలు మరియు పరిమాణాలలో ఉంటుంది. ఇది ఒకే సంఖ్యల నుండి, పెద్ద పరిమాణంలో టెక్స్ట్, వీడియోలు, ఇమేజులు మరియు IoT డేటా వరకు ఉండవచ్చు. సాధారణంగా డేటాను రెండు వర్గాల్లో విభజించవచ్చు - సంఘటిత డేటా మరియు అసంఘటిత డేటా.
-
సంఘటిత డేటా అనేది ఒక క్రమబద్ధీకృత, కఠిన నిర్మాణం కలిగి ఉంటుంది, ఇది మారదు మరియు సాధారణంగా డేటా పట్టికలకు మ్యాపింగ్ అవుతుంది. ఉదాహరణకు ఒక వ్యక్తి పేరు, పుట్టిన తేదీ మరియు చిరునామా.
-
అసంఘటిత డేటా అనేది ఒక ఖచ్చితమైన నిర్మాణం లేనిది, తరచూ నిర్మాణం మారే డేటాను కూడా కలిగి ఉంటుంది. ఉదాహరణకు వ్రాసిన డాక్యుమెంట్లు లేదా స్ప్రెడ్షీట్లు.
✅ పరిశోధన చేయండి: ఇతర సంఘటిత మరియు అసంఘటిత డేటా ఉదాహరణలు మీరు గుర్తించవచ్చా?
💁 అర్థ సన్నిహిత (semi-structured) డేటా కూడా ఉంటుంది, ఇది నిర్మితమైనది కానీ స్థిరమైన పట్టికల్లో సరిపోనిది
IoT డేటా సాధారణంగా అసంఘటిత డేటాగా పరిగణించబడుతుంది.
మీరు పెద్ద వాణిజ్య వ్యవసాయానికి వాహనాల ఫ్లీట్కు IoT పరికరాలు జోడిస్తుంటే ఊహించండి. వేరే రకాల వాహనాలకు వేరే పరికరాలు అవసరం కావచ్చు. ఉదాహరణకు:
- వ్యవసాయ వాహనాల కోసం (ఉదా. ట్రాక్టర్లు) మీరు GPS డేటా కావాలి, అవి సరైన క్షేత్రాల్లో పని చేస్తున్నాయో లేదో తెలుసుకోవడానికి
- ఆహారాన్ని గోడౌన్లకు పంపించే ట్రక్కులకు GPS డేటా, వేగం మరియు ఆక్సిలరేషన్ డేటా అవసరం, డ్రైవర్ సురక్షితంగా నడిపిస్తున్నాడో లేదో నిర్ధారించడానికి; డ్రైవ్ ఐడెంటిటీ మొదలైనவை కూడా
- ఫ్రీజర్ ఉన్న ట్రక్కులకు లోపల ఉష్ణోగ్రత డేటా అవసరం, ఆహారం ప్రయాణంలో వేడికాలు అతి ఎక్కువ లేదా తಗ್ಗకుండా నిరోధించడానికి
ఈ డేటా తరచూ మారుతుంది. ఉదాహరణకు, IoT పరికరం ట్రక్కు కేబిన్లో ఉంటే, ట్రైలర్ మారినప్పుడు అది పంపించే డేటా కూడా మారవచ్చు, ఉదా. ఫ్రీజర్ ట్రైలర్ వాడినప్పుడు మాత్రమె ఉష్ణోగ్రత డేటాను పంపడం.
✅ ఇంకెన్ని IoT డేటా తెలుస్తుంది? ట్రక్కు తీసుకునే సర్వ రకాల లోడ్లను, అలాగే నిర్వహణ డేటాను గురించి ఆలోచించండి.
ఈ డేటా వాహనాలకీకీ వేరే వేరుగా ఉంటుంది, కానీ అందరం అదే IoT సేవకు పంపబడుతుంది. ఈ IoT సేవను ఈ అసంఘటిత డేటాను ప్రాసెస్ చేయగలగాలి, వేర్వేరు నిర్మాణాలతో కూడిన డేటాను వెతకడానికీ, విశ్లేషించడానికి నిల్వ చేయగలగాలి.
SQL వర్సెస్ NoSQL నిల్వ
డేటాబేసులు అనేవి డేటాను నిల్వ చేసి ప్రశ్నించడానికి ఉపయోగించే సేవలు. డేటాబేసులు రెండు రకాలుగా ఉంటాయి - SQL మరియు NoSQL
SQL డేటాబేసులు
మొదటి డేటాబేసులు రిలేషనల్ డేటాబేస్ మేనేజ్మెంట్ సిస్టమ్స్ (RDBMS) అనే పేరుతో పిలవబడేవి, లేదా రిలేషనల్ డేటాబేస్. ఇవి Structured Query Language (SQL) ఉపయొగించి డేటాను జోడించడానికి, తొలగించడానికి మరియు అప్డేట్ చేయడానికి ఉపయోగిస్తారు. ఈ డేటాబేసులు ఒక స్కీమాను కలిగి ఉంటాయి — ఒక స్ప్రెడ్షీట్ లాంటివి అధిక ఖచ్చితమైన పట్టికల సముదాయం. ప్రతి పట్టికలో అనేక పేరుగల కాలములు ఉంటాయి. మీరు డేటా ఇన్సర్ట్ చేసినప్పుడు, ఒక వరుసగా కొత్త రో ను జోడిస్తారు, ప్రతి కాలములో విలువలు ఉంచి. ఇది డేటాను చాలా కఠినమైన నిర్మాణంలో ఉంచుతుంది — ఇంకొన్ని కాలములను ఖాళీగా వదిలేసుకోవచ్చు, కానీ కొత్త కాలమ్ జోడించాలంటే డేటాబేస్ మార్చాల్సి ఉంటుంది, ఇప్పటికే ఉన్న రోలకి విలువలు జమ చేయాల్సి ఉంటుంది. ఈ డేటాబేసులు రిలేషనల్ అవి, అర్థం ఒక పట్టిక ఇంకో పట్టికతో సంబంధం కలిగి ఉండవచ్చు.
ఉదాహరణకు, మీరు ఒక యూజర్ వ్యక్తిగత వివరాలను ఒక పట్టికలో నిల్వ చేస్తే, యూజర్ కి ఒక ఎక్స్డీయూడ్ ఐడి ఉండి అది అక్కడ నిల్వ చేస్తారు. ఇంకో పట్టికలో ఆ యూజర్ కొనుగోళ్ల గురించి వివరాలు నిల్వ చేయాలంటే, ఆ కొత్త పట్టికలో ఆ యూజర్ యొక్క ID కోసం ఒక కాలమ్ ఉండాలి. మీరు యూజర్ వివరాలను తేవాలంటే వారి IDతో ఆయా పట్టికల నుండి డేటా తెచ్చుకోగలరు.
SQL డేటాబేసులు structured data నిల్వ చేయడానికి మరియు మీ స్కీమాకు తగిన డేటా ఉండాలనే నిర్ధారించడానికి అనుకూలం.
✅ మీరు SQL ఉపయోగించినిరా? అయితే వికీపీడియాలో SQL పేజీ చదవండి.
చాలా ప్రసిద్ధ SQL డేటాబేసులు Microsoft SQL Server, MySQL, మరియు PostgreSQL.
✅ పరిశోధన చేయండి: ఈ SQL డేటాబేసుల గురించి మరియు వాటి సామర్థ్యాల గురించి తెలుసుకోండి.
NoSQL డేటాబేసులు
NoSQL డేటాబేసులు SQL డేటాబేసుల కఠిన నిర్మాణం లేకపోవడం వల్ల NoSQL అనబడతాయి. ఇవి డాక్యుమెంట్ డేటాబేసులుగా కూడా పిలవబడతాయి ఎందుకంటే అవి డాక్యుమెంట్ల వంటి అసంఘటిత డేటాను నిల్వ చేయగలవు.
💁 వాటి పేరుతో అనుసరించకండి, కొన్ని NoSQL డేటాబేసులు SQL ద్వారా డేటాను ప్రశ్నించమని అనుమతిస్తాయి.
NoSQL డేటాబేసుకు ముందుగా నిర్వచించబడిన స్కీము ఉండదు, కాబట్టి ఏ విధమైన అసంఘటిత డేటా కూడా ఇన్సర్ట్ చేయవచ్చు, సాధారణంగా JSON డాక్యుమెంట్ల రూపంలో. ఈ డాక్యుమెంట్లు ఫోల్డర్లకు వర్గీకరించబడతాయి, కంప్యూటర్ ఫైళ్ల లాగా. ప్రతి డాక్యుమెంట్ ఇతర డాక్యుమెంట్లతో వేర్వేరు ఫీల్డ్స్ కలిగి ఉండొచ్చు — ఉదాహరణకు మీ వ్యవసాయ వాహనాల IoT డేటా ఉంటే, కొన్ని accelerometer మరియు speed డేటా కలిగి ఉన్నాయి, మరికొన్ని ట్రైలర్ ఉష్ణోగ్రత కలిగి ఉండొచ్చు. మీరు కొత్త రకం ట్రక్కు తో మారు, వంటి ప్రొడక్షన్ బరువు కొలిచే స్కేలు కలిగిన వాహనంతో ఉంటే, మీ IoT పరికరం ఆ కొత్త ఫీల్డ్ జోడించి, దాన్ని డేటాబేస్లో మార్పులంటే అవసరం లేకుండా నిల్వ చేయగలదు.
కొన్ని ప్రసిద్ధ NoSQL డేటాబేసులు Azure CosmosDB, MongoDB, మరియు CouchDB.
✅ పరిశోధన చేయండి: ఈ NoSQL డేటాబేసుల గురించి మరియు వాటి సామర్థ్యాల గురించి తెలుసుకోండి.
ఈ పాఠంలో మీరు IoT డేటాను నిల్వ చేయడానికి NoSQL నిల్వను ఉపయోగించబోతున్నారు.
GPS డేటాను IoT హబ్ కి పంపడం
గత పాఠంలో మీరు GPS సెన్సార్ నుండి GPS డేటాను సేకరించారు. ఈ IoT డేటాను క్లౌడ్ లో నిల్వ చేయాలంటే, మీరు దీన్ని IoT సేవకు పంపాలి. తిరిగి, మీరు Azure IoT హబ్ ను ఉపయోగించబోతున్నారు, అదే సేవ మీరు గత ప్రాజెక్టులో ఉపయోగించారు.
పనులు - GPS డేటాను ఒక IoT హబ్కి పంపండి
-
ఉచిత స్థాయి ఉపయోగించి కొత్త IoT హబ్ సృష్టించండి.
⚠️ అవసరమైతే ప్రాజెక్టు 2, పాఠం 4 నుండి IoT హబ్ సృష్టించడానికి సూచనలు చూడండి.
కొత్త రిసోర్స్ గ్రూప్ సృష్టించండి. ఆ రిసోర్స్ గ్రూప్ పేరు
gps-sensorపెట్టండి, మరియు కొత్త IoT హబ్ ను ఒక ప్రత్యేక పేరుతోgps-sensor-<మీ పేరు>వంటి సెట్ చేయండి.💁 మీరు పూర్వ ప్రాజెక్ట్ నుండి IoT హబ్ మీ దగ్గర ఉంటే, దాన్ని తిరిగి ఉపయోగించవచ్చు. మరిన్ని సేవల నెలకొల్పేటప్పుడు ఆ IoT హబ్ మరియు ఆ రిసోర్స్ గ్రూప్ పేరును వినియోగించండి.
-
IoT హబ్ కి కొత్త పరికరాన్ని జోడించండి. ఆ పరికరానికి
gps-sensorఅని పేరు పెట్టండి. ఆ పరికరం కనెక్షన్ స్ట్రింగ్ను పొందండి. -
పరికరం కోడ్ను నవీకరించి GPS డేటాను కొత్త IoT హబ్ కి పంపండి, పరికరం కనెక్షన్ స్ట్రింగ్ ఉపయోగించి మునుపటి దశలో పొందినది.
⚠️ అవసరమైతే ప్రాజెక్టు 2, పాఠం 4 నుండి IoT డివైస్ కనెక్ట్ చేయడం సూచనలు చూడండి.
-
మీరు GPS డేటా పంపినప్పుడు, దాన్ని క్రింది JSON ఫార్మాట్లో పంపండి:
{ "gps" : { "lat" : <latitude>, "lon" : <longitude> } } -
మీరు ప్రతి నిమిషానికి GPS డేటా పంపండి, తద్వారా మీ రోజువారీ సందేశ పరిమితిని మించకుండా ఉంటారు.
మీరు Wio టెర్మినల్ ఉపయోగిస్తున్నట్లయితే, అవసరమైన లైబ్రరీలను జోడించండి మరియు NTP సర్వర్ ఉపయోగించి సమయాన్ని సెట్ చేయండి. మీ కోడ్ సీరియల్ పోర్ట్ నుండి డేటాను పూర్తిగా చదివిన తర్వాత మాత్రమే GPS స్థానం పంపేలా చూసుకోండి, గత పాఠంలో ఉన్న కోడ్ ఉపయోగించి. ఈ క్రింది కోడ్ తో JSON డాక్యుమెంట్ నిర్మించండి:
DynamicJsonDocument doc(1024);
doc["gps"]["lat"] = gps.location.lat();
doc["gps"]["lon"] = gps.location.lng();
మీరు వర్చువల్ IoT పరికరం ఉపయోగిస్తుంటే, అవసరమైన అన్ని లైబ్రరీలను వర్చువల్ ఎన్విరాన్మెంట్ లో ఇన్స్టాల్ చేయండి.
Raspberry Pi మరియు వర్చువల్ IoT పరికరాల కోసం, గత పాఠంలో ఉన్న కోడ్ ఉపయోగించి latitude మరియు longitude విలువలను తీసుకుని, క్రింది కోడ్ ఉపయోగించి సరైన JSON ఫార్మాట్ లో పంపండి:
message_json = { "gps" : { "lat":lat, "lon":lon } }
print("Sending telemetry", message_json)
message = Message(json.dumps(message_json))
💁 ఈ కోడ్ ను మీరు code/wio-terminal, code/pi లేదా code/virtual-device ఫోల్డర్లో పొందవచ్చు.
మీ పరికరం కోడ్ ని రన్ చేసి, az iot hub monitor-events CLI కమాండ్ ఉపయోగించి సందేశాలు IoT హబ్ లో ప్రవహించడం నిర్ధారించండి.
హాట్, వార్మ్, మరియు కోల్డ్ పాత్స్
IoT పరికరం నుండి క్లౌడ్ కి వచ్చే డేటా ఎప్పుడూ రియల్ టైం లో ప్రాసెస్ అయ్యేది కాదు. కొంత డేటా రియల్ టైం లో ప్రాసెస్ కావాలి, మరి కొంత డేటా కొంత సమయానంతరం ప్రాసెస్ కావచ్చు, మరి కొంత మరింత ఆలస్యంగా ప్రాసెస్ చేయబడవచ్చు. డేటా వేర్వేరు సర్వీసులకు వేర్వేరు సమయాలలో పంపబడటం హాట్, వార్మ్, మరియు కోల్డ్ పాత్స్ అని పిలవబడుతుంది.
హాట్ పాత్
హాట్ పాత్ అంటే డేటా తరచూ రియల్ టైం లేదా ఆరుగ తక్కువ సమయాల్లో ప్రాసెస్ కావలసినది. ఉదా. ఒక వాహనం డిపోకు వచ్చేస్తోంది అనే అలర్ట్, లేదా ఫ్రీజర్ లో ఉష్ణోగ్రత ఎక్కువయ్యిందని హెచ్చరిక.
హాట్ పాత్ డేటాను ఉపయోగించే కోడ్, క్లౌడ్ సేవలను ఈవెంట్లు వచ్చిన వెంటనే స్పందిస్తాయి.
వార్మ్ పాత్
వార్మ్ పాత్ అంటే డేటా స్వీకరించిన తర్వాత కొంత కాలం తర్వాత ప్రాసెస్ అయ్యేది, ఉదా. వార్షిక రిపోర్టులు లేదా చిన్నకాలిక విశ్లేషణలు. మీరు వార్మ్ పాత్ డేటాను రోజువారీ వాహన మైలేజ్ రిపోర్టులకు ఉపయోగిస్తారు, గత రోజు సేకరించిన డేటాను ఉపయోగించి.
వార్మ్ పాత్ డేటా క్లౌడ్ సేవలో అందుకున్న వెంటనే సురక్షితమైన నిల్వలో నిల్వ చేయబడుతుంది, సులభంగా ప్రాప్యత అయ్యేది.
కోల్డ్ పాత్
కోల్డ్ పాత్ అంటే చారిత్రక డేటా ని నిల్వ చేయడం, దీర్ఘకాలిక ప్రాసెసింగ్ కోసం საჭირო సమయంలో ఉపయోగించడం. ఉదా. వార్షిక మైలేజ్ రిపోర్టు లేదా వ్యయ తగ్గింపులో అత్యుత్తమ మార్గాలు విశ్లేషించడం.
కోల్డ్ పాత్ డేటా డేటా వేర్హౌస్లలో నిల్వ చేయబడుతుంది — ఇది పెద్ద పరిమాణం మార్పు లేని డేటా కోసం మరియు ప్రశ్నించుట సులభంగా ఉండేలా డిజైన్ చేయబడింది. కొన్నిసార్లు మీరు క్లౌడ్ అప్లికేషన్లో రోజూ, వారానికి లేదా నెలకి ఒకసారి రాబోయే పని అమర్చుతారు, warm path నిల్వ నుండి cold path కు డేటాను మార్చడానికి.
✅ ఇప్పటి వరకు మీరు సేకరించిన డేటా హాట్, వార్మ్ లేదా కోల్డ్ పాత్ కాదా? ఆలోచించండి.
సర్వర్లెస్ కోడ్ ఉపయోగించి GPS ఈవెంట్లను నిర్వహించడం
ఒకసారి డేటా మీ IoT హబ్ కి వస్తుంటే, మీరు సర్వర్లెస్ కోడ్ ఉపయోగించి ఈవెంట్ హబ్ అనుకూల ఎండ్పాయింట్ కి ప్రచురించబడిన ఈవెంట్ల కోసం వింటుండవచ్చు. ఇది వార్మ్ పాత్ — ఈ డేటా నిల్వ చేయబడుతుంది మరియు తదుపరి పాఠంలో మార్గం గురించి రిపోర్టు కోసం ఉపయోగించబడుతుంది.
పనులు - సర్వర్లెస్ కోడ్ ఉపయోగించి GPS ఈవెంట్లను నిర్వహించండి
-
అజ్యూర్ ఫంక్షన్స్ CLI ఉపయోగించి Azure Functions అనువర్తనాన్ని సృష్టించండి. Python రంటైమ్ ఉపయోగించి,
gps-triggerఅనే ఫోల్డర్ లో, అదే పేరును Functions App ప్రాజెక్ట్ పేరుగా ఉపయోగించండి. వర్చువల్ ఎన్విరాన్మెంట్ తప్పకుండా సృష్టించండి.⚠️ అవసరమైతే ప్రాజెక్టు 2, పాఠం 5 నుండి Azure Functions ప్రాజెక్టు సృష్టించడానికి సూచనలు చూడండి.
-
IoT హబ్ ఈవెంట్ ట్రిగ్గర్ జోడించండి, ఇది IoT హబ్ యొక్క ఈవెంట్ హబ్ అనుకూల ఎండ్పాయింట్ ఉపయోగిస్తుంది.
⚠️ మీరు అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి IoT హబ్ ఈవెంట్ ట్రిగ్గర్ సృష్టించడంపై సూచనలు ను చూడవచ్చు.
-
ఈవెంట్ హబ్ అనుకూల ఎండ్పాయింట్ కనెక్షన్ స్ట్రింగ్ను
local.settings.jsonఫైల్లో సెట్ చేసి, ఆ ఎంట్రీకి సంబంధించిన కీనిfunction.jsonఫైల్లో ఉపయోగించండి. -
స్థానిక నిల్వ అనుకరణ కోసం Azurite యాప్ ఉపయోగించండి
-
మీ ఫంక్షన్స్ యాప్ని రన్ చేసి, అది మీ GPS డివైస్ నుండి ఈవెంట్లు అందుకుంటున్నదో లేదో నిర్ధారించండి. మీ IoT డివైస్ కూడా సమయానికి పని చేసి GPS డేటాను పంపుతున్నదని చూసుకోండి.
Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}}
Azure స్టోరేజ్ అకౌంట్లు
Azure స్టోరేజ్ అకౌంట్లు అనేది వివిధ రకాలుగా డేటాను నిల్వ చేయగల సాధారణ ఉద్దేశ్యాల స్టోరేజ్ సేవ. మీరు డేటాను బ్లోబ్స్, క్యూస్, టేబుల్స్ లేదా ఫైళ్ళుగా నిల్వ చేయవచ్చు, వాటన్నిటినీ ఒకేసారి.
బ్లోబ్ నిల్వ
బ్లోబ్ అంటే బైనరీ పెద్ద వస్తువులు, కానీ ఇరిగుతైన డేటాని సూచించడానికి ఇది సాధారణ పదంగా మార్చబడింది. మీరు ఏకమైన JSON పత్రాలు, IoT డేటా నుంచి చిత్రాలు, సినిమా ఫైళ్ల వరకు ఏదైనా డేటాను బ్లోబ్ నిల్వలో ఉంచవచ్చు. బ్లోబ్ నిల్వలో కంటైనర్లు అనే స్థితి ఉంటుంది, ఇవి బకెట్లు లాగా ఉండి, సంబంధింత డేటాబేసులలో టేబుల్స్ లాగా ఉంటాయి. ఈ కంటైనర్లలో ఫోల్డర్లు ఉండవచ్చు, అదేవిధంగా ఫోల్డర్లలో మరిన్ని ఫోల్డర్లు ఉండవచ్చు, కంప్యూటర్ హార్డ్ డిస్క్లో ఫైళ్ళు ఎలా ఉంటాయో అలాగే.
ఈ పాఠంలో మీరు బ్లోబ్ నిల్వను IoT డేటా నిల్వ కోసం ఉపయోగిస్తారు.
✅ కొన్ని పరిశోధనలు చేయండి: Azure Blob Storage గురించి చదవండి
టేబుల్ నిల్వ
టేబుల్ నిల్వ ద్వారా మీరు సెమీ-స్ట్రక్చర్డ్ డేటాను నిల్వ చేయవచ్చు. టేబుల్ నిల్వ వాస్తవానికి NoSQL డేటాబేస్, కాబట్టి ముందస్తుగా నిర్వచించిన టేబుల్స్ అవసరం లేదు, కానీ ఇది ఒకటి లేదా వాటి కంటే ఎక్కువ టేబుల్స్లో డేటాను నిల్వ చేయడానికి రూపొందించబడింది, ప్రతి సారి విభజించేందుకు ప్రత్యేక కీస్ ఉన్నాయి.
✅ కొన్ని పరిశోధనలు చేయండి: Azure Table Storage గురించి చదవండి
క్యూని నిల్వ
క్యూని నిల్వ ద్వారా 64KB పరిమితి ఉన్న సందేశాలను క్యూలో నిల్వ చేయవచ్చు. మీరు సందేశాలను క్యూకి చివరికి జోడించవచ్చు మరియు ముందుండినవి చదవవచ్చు. నిల్వ సామర్థ్యం ఉన్నంత కాలం క్యూలు సందేశాలను అనంతకాలం నిల్వ చేయగలవు, అంటే సందేశాలు భవిష్యత్తులో అవసరమైతే చదవగల అవకాశముంది. ఉదాహరణకు, మీరు ఒక నెలపాటు GPS డేటాను ప్రాసెస్ చేయడానికి నెలవారీ జాబ్ నిర్వహించాలనుకుంటే, రోజుకి ఒకసారి ఆ సమాచారాన్ని క్యూలో జోడించి నెల చివరలో అన్ని సందేశాలను ప్రాసెస్ చేయవచ్చు.
✅ కొన్ని పరిశోధనలు చేయండి: Azure Queue Storage గురించి చదవండి
ఫైల్ నిల్వ
ఫైల్ నిల్వ అంటే క్లౌడ్లో ఫైళ్ళ నిల్వ చేయడం, మరియు ఏ యాప్ లేదా డివైస్ సాంద్రత ప్రమాణ ప్రోటోకాల్స్ ఉపయోగించి కనెక్ట్ అవ్వవచ్చు. మీరు ఫైళ్లను ఫైల్ నిల్వలో రాయవచ్చు, తర్వాత మీ PC లేదా Mac పై డ్రైవ్లాగా మౌంట్ చేసుకోవచ్చు.
✅ కొన్ని పరిశోధనలు చేయండి: Azure File Storage గురించి చదవండి
మీ సర్వర్లెస్ కోడ్ను నిల్వతో కనెక్ట్ చేయండి
మీ ఫంక్షన్ యాప్ ఇప్పుడు IoT హబ్ నుండి వచ్చిన సందేశాలను బ్లోబ్ నిల్వలో భద్రపరచడానికి బ్లోబ్ నిల్వతో కనెక్ట్ అవ్వాలి. దీనికి 2 మార్గాలు ఉన్నాయి:
- ఫంక్షన్ కోడ్ లోపల, బ్లోబ్ నిల్వ Python SDK ఉపయోగించి బ్లోబ్స్గా డేటాను వ్రాయండి
- అవుట్పుట్ ఫంక్షన్ బైండింగ్ ఉపయోగించి ఫంక్షన్ రిటర్న్ విలువను బ్లోబ్ నిల్వకి బైండ్ చేసి, బ్లోబ్ స్వయంచాలకంగా సేవ్ అయిపోవడం
ఈ పాఠంలో, మీరు Python SDK ఉపయోగించి బ్లోబ్ నిల్వతో ఎలా ఇపరేట్ చేయొచ్చు అనేది నేర్చుకుంటారు.
డేటా క్రింది JSON బ్లోబ్ రూపంలో సేవ్ అవుతుంది:
{
"device_id": <device_id>,
"timestamp" : <time>,
"gps" :
{
"lat" : <latitude>,
"lon" : <longitude>
}
}
టాస్క్ - మీ సర్వర్లెస్ కోడ్ని నిల్వకు కనెక్ట్ చేయండి
-
ఒక Azure స్టోరేజ్ అకౌంట్ సృష్టించండి. దానికి
gps<మీ పేరు>వంటి పేరును పెట్టండి.⚠️ మీరు అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి స్టోరేజ్ అకౌంట్ సృష్టించడంపై సూచనలు చూడవచ్చు.
మునుపటి ప్రాజెక్ట్ నుండి ఇప్పటికీ ఒక స్టోరేజ్ అకౌంట్ ఉన్నట్లయితే, మీరు దాన్ని మళ్ళీ ఉపయోగించుకోవచ్చు.
💁 ఈ పాఠంలో తర్వాత మీరు Azure Functions యాప్ను డిప్లాయ్ చేయడానికి అదే స్టోరేజ్ అకౌంట్ ఉపయోగించవచ్చు.
-
స్టోరేజ్ అకౌంట్ కనెక్షన్ స్ట్రింగ్ పొందుటకు క్రింది కమాండ్ను రన్ చేయండి:
az storage account show-connection-string --output table \ --name <storage_name><storage_name>ను మీరు క్రింద ఇచ్చిన స్టోరేజ్ అకౌంట్ పేరుతో మార్చండి. -
local.settings.jsonఫైల్లో మీ స్టోరేజ్ అకౌంట్ కనెక్షన్ స్ట్రింగ్ కోసం కొత్త ఎంట్రీ జత చేయండి, పై స్టెప్ లలో పొందిన విలువను ఉపయోగించండి. దానికిSTORAGE_CONNECTION_STRINGఅని పేరు పెడండి. -
Azure స్టోరేజ్ పైప్ ప్యాకేజెస్ ఇన్స్టాల్ చేసుకోవడానికి
requirements.txtఫైల్లో క్రింది విధంగా జత చేయండి:azure-storage-blobఈ ఫైల్లో ఉన్న ప్యాకేజెస్ ని మీ వర్చువల్ ఇన్విరాన్మెంట్లో ఇన్స్టాల్ చేయండి.
తప్పిదం వస్తే, మీ వర్చువల్ ఇన్విరాన్మెంట్లో పిప్ వెర్షన్ను తాజా వర్షన్గా అప్డేట్ చేసి, మళ్లీ ప్రయత్నించండి:
pip install --upgrade pip -
iot-hub-triggerకోసం__init__.pyఫైల్లో క్రింద ఉన్న ఇంపోర్ట్ స్టేట్మెంట్లను జత చేయండి:import json import os import uuid from azure.storage.blob import BlobServiceClient, PublicAccessjsonసిస్టమ్ మాడ్యూల్ JSON చదవడానికి, వ్రాయడానికి ఉపయోగిస్తారు,osమాడ్యూల్ కనెక్షన్ స్ట్రింగ్ చదవడానికి,uuidమాడ్యూల్ GPS రీడింగ్ కోసం ప్రత్యేక ID సృష్టించడానికి ఉపయోగిస్తారు.azure.storage.blobప్యాకేజీ బ్లోబ్ నిల్వతో పని చేసేందుకు Python SDK ని కలిగి ఉంటుంది. -
mainమెట్కాల్ ముందు క్రింది హెల్పర్ ఫంక్షన్ ను జత చేయండి:def get_or_create_container(name): connection_str = os.environ['STORAGE_CONNECTION_STRING'] blob_service_client = BlobServiceClient.from_connection_string(connection_str) for container in blob_service_client.list_containers(): if container.name == name: return blob_service_client.get_container_client(container.name) return blob_service_client.create_container(name, public_access=PublicAccess.Container)Python బ్లోబ్ SDK లో కంఠైనర్ సృష్టించడానికి ఒక హెల్పర్ పద్ధతి లేదు. ఈ కోడ్
local.settings.jsonఫైల్ నుండి కనెక్షన్ స్ట్రింగ్ (లేదా క్లౌడ్లోకి డిప్లాయ్ చేసిన తరువాత అప్లికేషన్ సెట్టింగ్స్ నుండి) చదవబడుతుంది, తరువాతBlobServiceClientక్లాస్ సృష్టించబడుతుంది, దీని ద్వారా బ్లోబ్ స్టోరేజ్ అకౌంట్తో పరిచయ పడుతుంది. ఆ తరువాత కంటైనర్ పేరును కలిగి ఉన్న కంటైనర్ లేదా కొత్త కంటైనర్ కావాలంటే సృష్టిస్తుంది. కొత్త కంటైనర్ సృష్టించినప్పుడు, అందులోని బ్లోబ్స్ను విజయవంతంగా క్వెరీ చేయడానికి పబ్లిక్ యాక్సెస్ ఇచ్చబడుతుంది. ఈ సూత్రం తదుపరి పాఠంలో GPS డేటా మ్యాప్లో విజువలైజ్ చేయడానికి ఉపయోగపడుతుంది. -
సోయిల్ మాయిశ్చర్తో చేసినట్లుగానే కాకుండా, ఈ కోడ్ ద్వారా ప్రతి ఈవెంట్ని నిల్వ చేయాలనుకుంటున్నాము, కాబట్టి
mainఫంక్షన్లోfor event in events:లూప్ లోloggingస్టేట్మెంట్ దిగువ క్రింది కోడ్ జత చేయండి:device_id = event.iothub_metadata['connection-device-id'] blob_name = f'{device_id}/{str(uuid.uuid1())}.json'ఈ కోడ్ ఈవెంట్ మెటాడేటాలోని డివైస్ ID ను తీసుకుంటుంది, తర్వాత దానిని బేస్ గా బ్లోబ్ పేరు తయారు చేస్తుంది. బ్లోబ్స్ ఫోల్డర్లలో నిల్వ చేయబడతాయి, మరియు ప్రతి డివైస్ ID ఫోల్డర్ పేరుగా ఉపయోగిస్తారు, అందుకే ప్రతి డివైస్ యొక్క అన్ని GPS ఈవెంట్లు ఒకే ఫోల్డర్లో ఉంటాయి. బ్లోబ్ పేరు ఈ ఫోల్డర్ పేరు, తరువాత డాక్యుమెంట్ పేరు, ముందు స్లాష్లతో విడదీస్తూ ఉంటుంది, ఇది లినక్స్, మాక్OS (మరియు విండోస్ లో బ్యాక్స్లాష్ ఉపయోగిస్తే కూడా) మార్గాల తలభాగం.
ఉదాహరణకి,
gps-sensorడివైస్ ID ఉన్నప్పుడు, బ్లోబ్ పేరుgps-sensor/a9487ac2-b9cf-11eb-b5cd-1e00621e3648.jsonలాగా ఉండవచ్చు. -
క్రింద ఇచ్చిన కోడ్ జత చేయండి:
container_client = get_or_create_container('gps-data') blob = container_client.get_blob_client(blob_name)ఈ కోడ్
get_or_create_containerహెల్పర్ క్లాస్ ఉపయోగించి కంటైనర్ క్లయింట్ పొందుతుంది, ఆ తర్వాత బ్లోబ్ పేరు ఉపయోగించి బ్లోబ్ క్లయింట్ ఆబ్జెక్ట్ తుడవుతుంది. ఈ బ్లోబ్ క్లయింట్లు ఇప్పటికే ఉన్న బ్లోబ్స్ లేదా ఈ సందర్భంలో కొత్త బ్లోబ్ సూచించవచ్చు. -
తర్వాత క్రింది కోడ్ జత చేయండి:
event_body = json.loads(event.get_body().decode('utf-8')) blob_body = { 'device_id' : device_id, 'timestamp' : event.iothub_metadata['enqueuedtime'], 'gps': event_body['gps'] }ఈ కోడ్ బ్లోబ్ స్టోరేజ్కు వ్రాయబడ్డ బ్లోబ్ బాడీని తయారు చేస్తుంది. ఇది JSON డాక్యుమెంట్, దీనిలో డివైస్ ID, టెలిమెట్రీ IoT హబ్కు పంపిన సమయం, మరియు GPS కోఆర్డినేట్లు ఉంటాయి.
💁 సందేశం పంపిన సమయం పొందటానికి, ప్రస్తుత సమయం కాకుండా enqueued సమయం ఉపయోగించడం ముఖ్యమైనది. ఫంక్షన్స్ యాప్ పని చెయ్యకపోతే, సందేశం హబ్ పై కొంతకాలం ఉండవచ్చు.
-
ఈ క్రింది కోడ్ జత చేయండి:
logging.info(f'Writing blob to {blob_name} - {blob_body}') blob.upload_blob(json.dumps(blob_body).encode('utf-8'))ఈ కోడ్ బ్లోబ్ రాయబడబోతోందని దాని వివరాలతో లాగ్ చేస్తుంది, తరువాత బ్లోబ్ బాడీని కొత్త బ్లోబ్ లక్ష్యంగా అప్లోడ్ చేస్తుంది.
-
ఫంక్షన్స్ యాప్ను రన్ చేయండి. మీరు అన్ని GPS ఈవెంట్లకు సంబంధించిన బ్లోబ్స్ రాయబడుతున్నదని అవుట్పుట్లో చూడగలరు:
[2021-05-21T01:31:14.325Z] Python EventHub trigger processed an event: {"gps": {"lat": 47.73092, "lon": -122.26206}} ... [2021-05-21T01:31:14.351Z] Writing blob to gps-sensor/4b6089fe-ba8d-11eb-bc7b-1e00621e3648.json - {'device_id': 'gps-sensor', 'timestamp': '2021-05-21T00:57:53.878Z', 'gps': {'lat': 47.73092, 'lon': -122.26206}}💁 మీరు IoT హబ్ ఈవెంట్ మానిటర్ను అదే సమయంలో రన్ చేయడం లేదు అనుకుంటూ నిర్ధారించుకోండి.
💁 ఈ కోడ్ మీరు code/functions ఫోల్డర్లో కూడా చూడవచ్చు.
టాస్క్ - అప్లోడ్ చేసిన బ్లోబ్స్ ని ధృవీకరించండి
-
సృష్టించిన బ్లోబ్స్ను చూడటానికి మీరు Azure Storage Explorer, ఒక ఉచిత టూల్, లేదా CLI ద్వారా ఉపయోగించవచ్చు.
-
CLI ఉపయోగించడానికి ముందు, మీరు అకౌంట్ కీ అవసరం. ఈ కీ పొందుటకు క్రింద కమాండ్ రన్ చేయండి:
az storage account keys list --output table \ --account-name <storage_name><storage_name>ను మీ స్టోరేజ్ అకౌంట్ పేరుతో మార్చండి.key1విలువను కాపీ చేసుకోండి. -
కంటైనర్ లో ఉన్న బ్లోబ్స్ లిస్ట్ చేయడానికి క్రింది కమాండ్ రన్ చేయండి:
az storage blob list --container-name gps-data \ --output table \ --account-name <storage_name> \ --account-key <key1><storage_name>ను స్టోరేజ్ అకౌంట్ పేరుతో,<key1>ను గత స్టెప్ లో కాపీ చేసినkey1తో మార్చండి.ఇది కంటైనర్ లో ఉన్న అన్ని బ్లోబ్స్ ని జాబితా చేస్తుంది:
Name Blob Type Blob Tier Length Content Type Last Modified Snapshot ---------------------------------------------------- ----------- ----------- -------- ------------------------ ------------------------- ---------- gps-sensor/1810d55e-b9cf-11eb-9f5b-1e00621e3648.json BlockBlob Hot 45 application/octet-stream 2021-05-21T00:54:27+00:00 gps-sensor/18293e46-b9cf-11eb-9f5b-1e00621e3648.json BlockBlob Hot 45 application/octet-stream 2021-05-21T00:54:28+00:00 gps-sensor/1844549c-b9cf-11eb-9f5b-1e00621e3648.json BlockBlob Hot 45 application/octet-stream 2021-05-21T00:54:28+00:00 gps-sensor/1894d714-b9cf-11eb-9f5b-1e00621e3648.json BlockBlob Hot 45 application/octet-stream 2021-05-21T00:54:28+00:00 -
క్రింది కమాండ్ ఉపయోగించి ఒక బ్లోబ్ను డౌన్లోడ్ చేయండి:
az storage blob download --container-name gps-data \ --account-name <storage_name> \ --account-key <key1> \ --name <blob_name> \ --file <file_name><storage_name>ను స్టోరేజ్ అకౌంట్ పేరుతో,<key1>ను మీరు ముందు ర 단계 లో కాపీ చేసిన విలువతో మార్చండి.<blob_name>ను చివరి స్టెప్ అవుట్పుట్ లో ఉన్న పూర్తి పేరుతో మార్చండి, ఫోల్డర్ పేరు సహా.<file_name>ని డౌన్లోడ్ చేసిన బ్లోబ్ని సేవ్ చేయడానికి స్థానిక ఫైల్ పేరుగా మార్చండి.
డౌన్లోడ్ అయిన తర్వాత, మీరు JSON ఫైల్ను VS Code లో తెరిచి, బ్లోబ్లో GPS స్థానం వివరాలు గమనించవచ్చు:
{"device_id": "gps-sensor", "timestamp": "2021-05-21T00:57:53.878Z", "gps": {"lat": 47.73092, "lon": -122.26206}} -
టాస్క్ - మీ ఫంక్షన్స్ యాప్ను క్లౌడ్కు డిప్లాయ్ చేయండి
మీ ఫంక్షన్స్ యాప్ పనిచేస్తుండగా, ఇప్పుడు దానిని క్లౌడ్కు డిప్లాయ్ చేయవచ్చు.
-
ఒక కొత్త Azure Functions యాప్ సృష్టించండి, ముందుగా సృష్టించిన స్టోరేజ్ అకౌంట్ ఉపయోగించి. దీనికి
gps-sensor-వంటి పేరు పెట్టి, ముగింపులో ఏదైనా విశిష్ట గుర్తింపు జత చేయండి, అలా తేలికపాటి పదాలు లేదా మీ పేరు.⚠️ మీరు అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి Functions యాప్ సృష్టించడంపై సూచనలు చూడవచ్చు.
-
IOT_HUB_CONNECTION_STRINGమరియుSTORAGE_CONNECTION_STRINGవిలువలను అప్లికేషన్ సెట్టింగ్స్లో అప్లోడ్ చేయండి⚠️ మీరు అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి అప్లికేషన్ సెట్టింగ్స్ అప్లోడ్ చేయడంపై సూచనలు చూడవచ్చు.
-
మీ లోకల్ ఫంక్షన్స్ యాప్ని క్లౌడ్కు డిప్లాయ్ చేయండి.
⚠️ మీరు అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి ఫంక్షన్స్ యాప్ డిప్లాయ్ చేయడంపై సూచనలు చూడవచ్చు.
🚀 సవాలు
GPS డేటా పూర్తిగా ఖచ్చితంగా ఉండదు, మరియు గమనింపబడుతున్న స్థానాలు కొద్దిగా లేదా ఎక్కువగా, ప్రత్యేకంగా సొరంగాలు మరియు ఎత్తైన భవన ప్రాంతాలలో సరిగా లేకుండా ఉండవచ్చు.
సాటిలైట్ నావిగేషన్ దీన్ని ఎలా అధిగమించగలదో ఆలోచించండి? మీ సాట్నావ్ దగ్గర ఏ డేటా ఉంటుంది, అది మీ స్థానంపై మెరుగైన అంచనాలు ఇవ్వడానికి ఎలా సహాయపడుతుంది?
పోస్ట్-లెక్చర్ క్విజ్
సమీక్ష & స్వీయ అధ్యయనం
- డేటా మోడల్ పేజీ వికీపీడియాపై నిర్మిత డేటా గురించి చదవండి
- సెమీ-స్ట్రక్చర్డ్ డేటా పేజీ వికీపీడియాపై చదవండి
- అన్స్ట్రక్చర్డ్ డేటా పేజీ వికీపీడియాపై చదవండి
- Azure Storage documentationలో Azure నిల్వ మరియు వివిధ నిల్వ రకాల గురించి మరింత చదవండి
అప్పగింత
ఫంక్షన్ బైండింగ్లను పరిశీలించండి
అస్పష్టం: ఈ పత్రం AI అనువాద సేవ Co-op Translator ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా అసామర్థ్యాలు ఉండవచ్చు అని దయచేసి గుర్తుంచుకోండి. మూల పత్రం తన స్థానిక భాషలో అధికారిక మూలంగా పరిగణించాలి. కీలక సమాచారంగా, వృత్తిపరమైన మానవ అనువాద సేవను సిఫార్సు చేసుకుంటాము. ఈ అనువాదం ఉపయోగించడంవల్ల వచ్చే ఏవైనా అపార్థాలు లేదా తప్పుల కోసం మేము బాధ్యత తీసుకోము.






