|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Съхраняване на данни за местоположение
Скица от Nitya Narasimhan. Кликнете върху изображението за по-голяма версия.
Тест преди лекцията
Въведение
В последния урок научихте как да използвате GPS сензор за улавяне на данни за местоположение. За да използвате тези данни за визуализиране на местоположението на камион, натоварен с храна, и неговото пътуване, те трябва да бъдат изпратени до IoT услуга в облака и след това съхранени някъде.
В този урок ще научите за различните начини за съхранение на IoT данни и как да съхранявате данни от вашата IoT услуга, използвайки безсървърен код.
В този урок ще разгледаме:
- Структурирани и неструктурирани данни
- Изпращане на GPS данни към IoT Hub
- Горещи, топли и студени пътища
- Обработка на GPS събития с безсървърен код
- Azure Storage Accounts
- Свързване на безсървърен код със съхранение
Структурирани и неструктурирани данни
Компютърните системи работят с данни, които могат да бъдат в различни форми и размери. Те могат да варират от единични числа до големи количества текст, видеа, изображения и IoT данни. Данните обикновено се разделят на две категории - структурирани и неструктурирани данни.
-
Структурирани данни са данни с добре дефинирана, твърда структура, която не се променя, и обикновено се свързват с таблици с данни и техните взаимоотношения. Пример за това са личните данни на човек, включително име, дата на раждане и адрес.
-
Неструктурирани данни са данни без добре дефинирана, твърда структура, включително данни, които често променят структурата си. Пример за това са документи като текстови файлове или електронни таблици.
✅ Направете проучване: Можете ли да измислите други примери за структурирани и неструктурирани данни?
💁 Съществуват и полуструктурирани данни, които са структурирани, но не се вписват в фиксирани таблици с данни.
IoT данните обикновено се считат за неструктурирани данни.
Представете си, че добавяте IoT устройства към автопарк от превозни средства за голяма търговска ферма. Може да искате да използвате различни устройства за различни видове превозни средства. Например:
- За селскостопански машини като трактори искате GPS данни, за да се уверите, че работят на правилните полета.
- За камиони за доставка на храна до складове искате GPS данни, както и данни за скорост и ускорение, за да се уверите, че шофьорът шофира безопасно, както и данни за идентификация на водача и старт/стоп, за да се гарантира спазването на местните закони за работното време.
- За хладилни камиони искате и данни за температурата, за да се уверите, че храната не се нагрява или охлажда прекалено и не се разваля по време на транспортиране.
Тези данни могат да се променят постоянно. Например, ако IoT устройството е в кабината на камион, данните, които изпраща, може да се променят в зависимост от ремаркето, например да изпраща данни за температурата само когато се използва хладилно ремарке.
✅ Какви други IoT данни могат да бъдат събрани? Помислете за видовете товари, които камионите могат да превозват, както и за данни за поддръжка.
Тези данни варират от превозно средство до превозно средство, но всички те се изпращат към една и съща IoT услуга за обработка. IoT услугата трябва да може да обработва тези неструктурирани данни, като ги съхранява по начин, който позволява търсене или анализ, но работи с различни структури на данните.
SQL срещу NoSQL съхранение
Базите данни са услуги, които ви позволяват да съхранявате и извличате данни. Те се делят на два типа - SQL и NoSQL.
SQL бази данни
Първите бази данни са Релационни системи за управление на бази данни (RDBMS), известни също като SQL бази данни, поради използвания език за структурирани заявки (SQL). Тези бази данни имат схема - добре дефиниран набор от таблици с данни, подобни на електронна таблица. Всяка таблица има множество именувани колони. Когато добавяте данни, добавяте ред в таблицата, като поставяте стойности във всяка от колоните. Това поддържа данните в много твърда структура - въпреки че можете да оставите колони празни, ако искате да добавите нова колона, трябва да го направите в базата данни, като попълните стойности за съществуващите редове. Тези бази данни са релационни - една таблица може да има връзка с друга.
Например, ако съхранявате лични данни на потребители в таблица, ще имате някакъв вътрешен уникален ID за всеки потребител, който се използва в ред в таблица, съдържаща името и адреса на потребителя. Ако искате да съхранявате други данни за този потребител, като например неговите покупки, в друга таблица, ще имате една колона в новата таблица за ID на потребителя. Когато търсите потребител, можете да използвате неговия ID, за да получите личните му данни от една таблица и покупките му от друга.
SQL базите данни са идеални за съхранение на структурирани данни и когато искате да гарантирате, че данните съответстват на вашата схема.
✅ Ако не сте използвали SQL преди, отделете момент да прочетете за него на страницата за SQL в Wikipedia.
Някои известни SQL бази данни са Microsoft SQL Server, MySQL и PostgreSQL.
✅ Направете проучване: Прочетете за някои от тези SQL бази данни и техните възможности.
NoSQL бази данни
NoSQL базите данни се наричат така, защото нямат същата твърда структура като SQL базите данни. Те са известни също като документни бази данни, тъй като могат да съхраняват неструктурирани данни като документи.
💁 Въпреки името си, някои NoSQL бази данни позволяват използването на SQL за извличане на данни.
NoSQL базите данни нямат предварително дефинирана схема, която ограничава начина на съхранение на данни. Вместо това можете да вмъквате всякакви неструктурирани данни, обикновено използвайки JSON документи. Тези документи могат да бъдат организирани в папки, подобно на файлове на вашия компютър. Всеки документ може да има различни полета от другите документи - например, ако съхранявате IoT данни от селскостопански превозни средства, някои може да имат полета за данни от акселерометър и скорост, а други - за температура в ремаркето. Ако добавите нов тип камион, например такъв с вградени везни за проследяване на теглото на превозваната продукция, вашето IoT устройство може да добави това ново поле и то може да бъде съхранено без промени в базата данни.
Някои известни NoSQL бази данни включват Azure CosmosDB, MongoDB и CouchDB.
✅ Направете проучване: Прочетете за някои от тези NoSQL бази данни и техните възможности.
В този урок ще използвате NoSQL съхранение за съхранение на IoT данни.
Изпращане на GPS данни към IoT Hub
В последния урок улавяхте GPS данни от GPS сензор, свързан с вашето IoT устройство. За да съхраните тези IoT данни в облака, трябва да ги изпратите към IoT услуга. Отново ще използвате Azure IoT Hub, същата IoT облачна услуга, която използвахте в предишния проект.
Задача - изпращане на GPS данни към IoT Hub
-
Създайте нов IoT Hub, използвайки безплатния план.
⚠️ Можете да се обърнете към инструкциите за създаване на IoT Hub от проект 2, урок 4, ако е необходимо.
Не забравяйте да създадете нова Resource Group. Назовете новата Resource Group
gps-sensor
, а новия IoT Hub с уникално име, базирано наgps-sensor
, напримерgps-sensor-<вашето име>
.💁 Ако все още имате вашия IoT Hub от предишния проект, можете да го използвате повторно. Не забравяйте да използвате името на този IoT Hub и Resource Group, в която се намира, когато създавате други услуги.
-
Добавете ново устройство към IoT Hub. Наречете това устройство
gps-sensor
. Вземете connection string за устройството. -
Актуализирайте кода на вашето устройство, за да изпраща GPS данни към новия IoT Hub, използвайки connection string от предишната стъпка.
⚠️ Можете да се обърнете към инструкциите за свързване на вашето устройство към IoT от проект 2, урок 4, ако е необходимо.
-
Когато изпращате GPS данни, направете го във формат JSON, както следва:
{ "gps" : { "lat" : <latitude>, "lon" : <longitude> } }
-
Изпращайте GPS данни всяка минута, за да не изчерпите дневната си квота за съобщения.
Ако използвате Wio Terminal, не забравяйте да добавите всички необходими библиотеки и да настроите времето, използвайки NTP сървър. Вашият код също трябва да се увери, че е прочел всички данни от серийния порт, преди да изпрати GPS местоположението, използвайки съществуващия код от последния урок. Използвайте следния код, за да създадете JSON документа:
DynamicJsonDocument doc(1024);
doc["gps"]["lat"] = gps.location.lat();
doc["gps"]["lon"] = gps.location.lng();
Ако използвате виртуално IoT устройство, не забравяйте да инсталирате всички необходими библиотеки, използвайки виртуална среда.
За Raspberry Pi и виртуалното IoT устройство използвайте съществуващия код от последния урок, за да получите стойностите за ширина и дължина, след което ги изпратете в правилния 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.
Стартирайте кода на вашето устройство и се уверете, че съобщенията се изпращат към IoT Hub, използвайки CLI командата az iot hub monitor-events
.
Горещи, топли и студени пътища
Данните, които се изпращат от IoT устройство към облака, не винаги се обработват в реално време. Някои данни изискват обработка в реално време, други могат да бъдат обработени малко по-късно, а трети могат да бъдат обработени много по-късно. Потокът от данни към различни услуги, които ги обработват в различни моменти, се нарича горещи, топли и студени пътища.
Горещ път
Горещият път се отнася до данни, които трябва да бъдат обработени в реално време или почти в реално време. Бихте използвали горещи данни за известия, като например, че превозно средство се приближава към депо или че температурата в хладилен камион е твърде висока.
За да използвате горещи данни, вашият код трябва да реагира на събития веднага щом бъдат получени от вашите облачни услуги.
Топъл път
Топлият път се отнася до данни, които могат да бъдат обработени малко след като бъдат получени, например за отчети или краткосрочна аналитика. Бихте използвали топли данни за дневни отчети за пробега на превозни средства, използвайки данни, събрани предишния ден.
Топлите данни се съхраняват веднага след като бъдат получени от облачната услуга в някакъв вид съхранение, което може да бъде бързо достъпно.
Студен път
Студеният път се отнася до исторически данни, които се съхраняват дългосрочно и могат да бъдат обработени, когато е необходимо. Например, можете да използвате студените данни за годишни отчети за пробега на превозни средства или за анализ на маршрути, за да намерите най-оптималния маршрут за намаляване на разходите за гориво.
Студените данни се съхраняват в хранилища за данни - бази данни, предназначени за съхранение на големи количества данни, които никога няма да се променят и могат да бъдат извлечени бързо и лесно. Обикновено имате редовна задача във вашето облачно приложение, която се изпълнява в определено време всеки ден, седмица или месец, за да премести данни от топло съхранение в хранилището за данни.
✅ Помислете за данните, които сте събрали досега в тези уроци. Те горещи, топли или студени данни ли са?
Обработка на GPS събития с безсървърен код
След като данните започнат да се изпращат към вашия IoT Hub, можете да напишете безсървърен код, който да слуша събития, публикувани към Event-Hub съвместимия край. Това е топлият път - тези данни ще бъдат съхранени и използвани в следващия урок за отчитане на пътуването.
Задача - обработка на GPS събития с безсървърен код
- Създайте Azure Functions приложение, използвайки Azure Functions CLI. Използвайте Python runtime и го създайте в папка, наречена
gps-trigger
, като използвате същото име за името на проекта за Functions App. Уверете се, че създавате виртуална среда, която да използвате за това.
⚠️ Можете да се обърнете към инструкциите за създаване на проект за Azure Functions от проект 2, урок 5, ако е необходимо.
-
Добавете тригер за събития от IoT Hub, който използва съвместимата с Event Hub крайна точка на IoT Hub.
⚠️ Можете да се обърнете към инструкциите за създаване на тригер за събития от IoT Hub от проект 2, урок 5, ако е необходимо.
-
Задайте низ за връзка към съвместимата с Event Hub крайна точка в файла
local.settings.json
и използвайте ключа за този запис във файлаfunction.json
. -
Използвайте приложението Azurite като емулатор за локално съхранение.
-
Стартирайте приложението си с функции, за да се уверите, че получава събития от вашето GPS устройство. Уверете се, че вашето IoT устройство също работи и изпраща GPS данни.
Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}}
Azure Storage Accounts
Azure Storage Accounts е универсална услуга за съхранение, която може да съхранява данни по различни начини. Можете да съхранявате данни като блобове, в опашки, в таблици или като файлове, и всичко това едновременно.
Блоб съхранение
Думата Blob означава големи двоични обекти, но се е превърнала в термин за всякакви неструктурирани данни. Можете да съхранявате всякакви данни в блоб съхранение, от JSON документи, съдържащи IoT данни, до изображения и видео файлове. Блоб съхранението има концепцията за контейнери, наречени "кофи", в които можете да съхранявате данни, подобно на таблици в релационна база данни. Тези контейнери могат да имат една или повече папки за съхранение на блобове, а всяка папка може да съдържа други папки, подобно на начина, по който файловете се съхраняват на твърдия диск на вашия компютър.
В този урок ще използвате блоб съхранение за съхранение на IoT данни.
✅ Направете проучване: Прочетете за Azure Blob Storage
Таблично съхранение
Табличното съхранение ви позволява да съхранявате полу-структурирани данни. Табличното съхранение всъщност е NoSQL база данни, така че не изисква предварително дефиниран набор от таблици, но е проектирано да съхранява данни в една или повече таблици с уникални ключове за дефиниране на всеки ред.
✅ Направете проучване: Прочетете за Azure Table Storage
Опашково съхранение
Опашковото съхранение ви позволява да съхранявате съобщения с размер до 64KB в опашка. Можете да добавяте съобщения в края на опашката и да ги четете от началото. Опашките съхраняват съобщенията за неопределено време, докато има налично пространство за съхранение, което позволява съобщенията да се съхраняват дългосрочно и да се четат, когато е необходимо. Например, ако искате да изпълнявате месечна задача за обработка на GPS данни, можете да добавяте данни в опашката всеки ден за един месец, а след това в края на месеца да обработите всички съобщения от опашката.
✅ Направете проучване: Прочетете за Azure Queue Storage
Файлово съхранение
Файловото съхранение представлява съхранение на файлове в облака, като всяко приложение или устройство може да се свърже, използвайки стандартни протоколи. Можете да записвате файлове във файловото съхранение и след това да го монтирате като диск на вашия компютър или Mac.
✅ Направете проучване: Прочетете за Azure File Storage
Свържете вашия безсървърен код със съхранението
Вашето приложение с функции сега трябва да се свърже с блоб съхранението, за да съхранява съобщенията от IoT Hub. Има два начина да направите това:
- Вътре в кода на функцията, свържете се с блоб съхранението, използвайки Python SDK за блоб съхранение, и запишете данните като блобове.
- Използвайте изходно свързване на функция, за да свържете стойността на връщане на функцията с блоб съхранението и автоматично да запишете блоба.
В този урок ще използвате Python SDK, за да видите как да взаимодействате с блоб съхранението.
Данните ще бъдат записани като JSON блоб със следния формат:
{
"device_id": <device_id>,
"timestamp" : <time>,
"gps" :
{
"lat" : <latitude>,
"lon" : <longitude>
}
}
Задача - свържете вашия безсървърен код със съхранението
-
Създайте акаунт за съхранение в Azure. Назовете го нещо като
gps<вашето име>
.⚠️ Можете да се обърнете към инструкциите за създаване на акаунт за съхранение от проект 2, урок 5, ако е необходимо.
Ако все още имате акаунт за съхранение от предишния проект, можете да го използвате повторно.
💁 Ще можете да използвате същия акаунт за съхранение, за да разположите вашето приложение с функции в Azure по-късно в този урок.
-
Изпълнете следната команда, за да получите низа за връзка към акаунта за съхранение:
az storage account show-connection-string --output table \ --name <storage_name>
Заменете
<storage_name>
с името на акаунта за съхранение, който създадохте в предишната стъпка. -
Добавете нов запис във файла
local.settings.json
за низа за връзка към акаунта за съхранение, използвайки стойността от предишната стъпка. Назовете гоSTORAGE_CONNECTION_STRING
. -
Добавете следното към файла
requirements.txt
, за да инсталирате Pip пакетите за Azure съхранение:azure-storage-blob
Инсталирайте пакетите от този файл във вашата виртуална среда.
Ако получите грешка, актуализирайте версията на Pip във вашата виртуална среда до последната версия със следната команда, след което опитайте отново:
pip install --upgrade pip
-
Във файла
__init__.py
заiot-hub-trigger
, добавете следните изявления за импортиране:import json import os import uuid from azure.storage.blob import BlobServiceClient, PublicAccess
Модулът
json
от системата ще се използва за четене и запис на JSON, модулътos
от системата ще се използва за четене на низа за връзка, а модулътuuid
от системата ще се използва за генериране на уникален идентификатор за GPS данните.Пакетът
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
(или от Application Settings, след като бъде разположен в облака), след което ще създаде класBlobServiceClient
от този низ, за да взаимодейства с акаунта за блоб съхранение. След това той обхожда всички контейнери за акаунта за блоб съхранение, търсейки такъв с предоставеното име - ако намери такъв, ще върне класContainerClient
, който може да взаимодейства с контейнера за създаване на блобове. Ако не намери такъв, контейнерът се създава и клиентът за новия контейнер се връща.Когато новият контейнер се създаде, се предоставя публичен достъп за заявяване на блобовете в контейнера. Това ще бъде използвано в следващия урок за визуализиране на GPS данните на карта.
-
За разлика от данните за влажност на почвата, с този код искаме да съхраняваме всяко събитие, така че добавете следния код вътре в цикъла
for event in events:
в основната функция, под изявлениетоlogging
:device_id = event.iothub_metadata['connection-device-id'] blob_name = f'{device_id}/{str(uuid.uuid1())}.json'
Този код получава идентификатора на устройството от метаданните на събитието, след което го използва за създаване на име на блоб. Блобовете могат да се съхраняват в папки, а идентификаторът на устройството ще се използва за името на папката, така че всяко устройство ще има всички свои GPS събития в една папка. Името на блоба е тази папка, последвана от име на документ, разделени с наклонени черти, подобно на пътищата в Linux и macOS (подобно и на Windows, но Windows използва обратни наклонени черти). Името на документа е уникален идентификатор, генериран с модула
uuid
на Python, с тип на файлаjson
.Например, за идентификатора на устройството
gps-sensor
, името на блоба може да бъде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 документ, съдържащ идентификатора на устройството, времето, когато телеметрията е изпратена до IoT Hub, и GPS координатите от телеметрията.
💁 Важно е да се използва времето на поставяне в опашката на съобщението, а не текущото време, за да се получи времето, когато съобщението е изпратено. То може да стои в хъба известно време, преди да бъде взето, ако приложението с функции не работи.
-
Добавете следното под този код:
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 Hub едновременно.
💁 Можете да намерите този код в папката 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>
със стойността наkey1
, която копирахте в предишната стъпка.Заменете
<blob_name>
с пълното име от колоната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, използвайки акаунта за съхранение, който създадохте по-рано. Назовете го нещо като
gps-sensor-
и добавете уникален идентификатор накрая, като случайни думи или вашето име.⚠️ Можете да се обърнете към инструкциите за създаване на приложение с функции от проект 2, урок 5, ако е необходимо.
-
Качете стойностите
IOT_HUB_CONNECTION_STRING
иSTORAGE_CONNECTION_STRING
в Application Settings.⚠️ Можете да се обърнете към инструкциите за качване на Application Settings от проект 2, урок 5, ако е необходимо.
-
Разположете вашето локално приложение с функции в облака.
⚠️ Можете да се обърнете към инструкциите за разгръщане на вашето приложение Functions от проект 2, урок 5, ако е необходимо.
🚀 Предизвикателство
GPS данните не са напълно точни, а местоположенията, които се засичат, могат да бъдат отклонени с няколко метра, особено в тунели и райони с високи сгради.
Помислете как сателитната навигация може да преодолее това? Какви данни има вашият навигационен уред, които биха му позволили да прави по-добри прогнози за вашето местоположение?
Тест след лекцията
Преглед и самостоятелно обучение
- Прочетете за структурирани данни на страницата за модел на данни в Wikipedia
- Прочетете за полуструктурирани данни на страницата за полуструктурирани данни в Wikipedia
- Прочетете за неструктурирани данни на страницата за неструктурирани данни в Wikipedia
- Научете повече за Azure Storage и различните типове съхранение в документацията за Azure Storage
Задача
Разгледайте връзките на функциите
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.