21 KiB
Работа с данни: Нерелационни данни
![]() |
---|
Работа с NoSQL данни - Скетч от @nitya |
Тест преди лекцията
Данните не са ограничени само до релационни бази данни. Тази лекция се фокусира върху нерелационни данни и ще обхване основите на електронни таблици и NoSQL.
Електронни таблици
Електронните таблици са популярен начин за съхранение и изследване на данни, защото изискват по-малко усилия за настройка и започване. В тази лекция ще научите основните компоненти на електронна таблица, както и формули и функции. Примерите ще бъдат илюстрирани с Microsoft Excel, но повечето части и теми ще имат подобни имена и стъпки в сравнение с други софтуери за електронни таблици.
Електронната таблица е файл и ще бъде достъпна в файловата система на компютър, устройство или облачна файлова система. Самият софтуер може да бъде браузър-базиран или приложение, което трябва да бъде инсталирано на компютър или изтеглено като приложение. В Excel тези файлове също се дефинират като работни книги и тази терминология ще се използва в останалата част от лекцията.
Работната книга съдържа един или повече работни листа, като всеки работен лист е обозначен с табове. В рамките на работния лист има правоъгълници, наречени клетки, които съдържат действителните данни. Клетката е пресечната точка на ред и колона, като колоните са обозначени с буквени символи, а редовете - с числови. Някои електронни таблици съдържат заглавия в първите няколко реда, които описват данните в клетката.
С тези основни елементи на работна книга в Excel ще използваме пример от Microsoft Templates, фокусиран върху инвентаризация, за да разгледаме допълнителни части на електронна таблица.
Управление на инвентаризация
Файлът на електронната таблица, наречен "InventoryExample", е форматирана таблица с артикули в инвентаризацията, която съдържа три работни листа, като табовете са обозначени "Inventory List", "Inventory Pick List" и "Bin Lookup". Ред 4 от работния лист Inventory List е заглавието, което описва стойността на всяка клетка в колоната на заглавието.
Има случаи, когато стойността на клетка зависи от стойностите на други клетки, за да се генерира нейната стойност. Работният лист Inventory List следи разходите за всеки артикул в инвентара, но какво ако трябва да знаем стойността на всичко в инвентара? Формулите извършват действия върху данните в клетките и се използват за изчисляване на стойността на инвентара в този пример. Тази електронна таблица използва формула в колоната Inventory Value, за да изчисли стойността на всеки артикул, като умножи количеството под заглавието QTY и разходите под заглавието COST. Двойно щракване или маркиране на клетка ще покаже формулата. Ще забележите, че формулите започват със знак за равенство, последван от изчислението или операцията.
Можем да използваме друга формула, за да съберем всички стойности на Inventory Value и да получим общата стойност. Това може да бъде изчислено чрез добавяне на всяка клетка, за да се генерира сумата, но това може да бъде трудоемка задача. Excel има функции, или предварително дефинирани формули за извършване на изчисления върху стойностите на клетките. Функциите изискват аргументи, които са необходимите стойности за извършване на тези изчисления. Когато функциите изискват повече от един аргумент, те трябва да бъдат изброени в определен ред, иначе функцията може да не изчисли правилната стойност. Този пример използва функцията SUM и използва стойностите на Inventory Value като аргумент, за да генерира общата стойност, изброена под ред 3, колона B (наричана още B3).
NoSQL
NoSQL е общ термин за различните начини за съхранение на нерелационни данни и може да се интерпретира като "не-SQL", "нерелационни" или "не само SQL". Тези типове системи за бази данни могат да бъдат категоризирани в 4 типа.
Източник от Блог на Michał Białecki
Бази данни с ключ-стойност свързват уникални ключове, които са уникален идентификатор, асоцииран със стойност. Тези двойки се съхраняват с помощта на хеш таблица с подходяща хеш функция.
Източник от Microsoft
Граф бази данни описват връзките в данните и са представени като колекция от възли и ръбове. Възелът представлява обект, нещо, което съществува в реалния свят, като студент или банково извлечение. Ръбовете представляват връзката между два обекта. Всеки възел и ръб имат свойства, които предоставят допълнителна информация за тях.
Колонни бази данни организират данните в колони и редове, подобно на релационна структура, но всяка колона е разделена на групи, наречени семейства колони, където всички данни под една колона са свързани и могат да бъдат извлечени и променени като единица.
Документни бази данни с Azure Cosmos DB
Документните бази данни се основават на концепцията за база данни с ключ-стойност и се състоят от серия от полета и обекти. Тази секция ще разгледа документните бази данни с емулатора Cosmos DB.
База данни Cosmos DB отговаря на дефиницията за "не само SQL", където документната база данни на Cosmos DB разчита на SQL за заявяване на данни. Предишната лекция за SQL обхваща основите на езика и ще можем да приложим някои от същите заявки към документна база данни тук. Ще използваме емулатора Cosmos DB, който ни позволява да създаваме и изследваме документна база данни локално на компютър. Прочетете повече за емулатора тук.
Документът е колекция от полета и стойности на обекти, където полетата описват какво представлява стойността на обекта. По-долу е даден пример за документ.
{
"firstname": "Eva",
"age": 44,
"id": "8c74a315-aebf-4a16-bb38-2430a9896ce5",
"_rid": "bHwDAPQz8s0BAAAAAAAAAA==",
"_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"",
"_attachments": "attachments/",
"_ts": 1630544034
}
Полетата от интерес в този документ са: firstname
, id
и age
. Останалите полета с подчертавания са генерирани от Cosmos DB.
Изследване на данни с емулатора Cosmos DB
Можете да изтеглите и инсталирате емулатора за Windows тук. Вижте тази документация за опции как да стартирате емулатора за macOS и Linux.
Емулаторът стартира прозорец в браузъра, където изгледът Explorer ви позволява да изследвате документи.
Ако следвате инструкциите, щракнете върху "Start with Sample", за да генерирате примерна база данни, наречена SampleDB. Ако разширите SampleDB, като щракнете върху стрелката, ще намерите контейнер, наречен Persons
. Контейнерът съдържа колекция от елементи, които са документите в контейнера. Можете да изследвате четирите индивидуални документа под Items
.
Заявяване на документни данни с емулатора Cosmos DB
Можем също да заявим примерните данни, като щракнем върху бутона за нова SQL заявка (вторият бутон отляво).
SELECT * FROM c
връща всички документи в контейнера. Нека добавим условие WHERE и намерим всички под 40 години.
SELECT * FROM c where c.age < 40
Заявката връща два документа, като стойността на полето age за всеки документ е по-малка от 40.
JSON и документи
Ако сте запознати с JavaScript Object Notation (JSON), ще забележите, че документите изглеждат подобно на JSON. В тази директория има файл PersonsData.json
с повече данни, които можете да качите в контейнера Persons в емулатора чрез бутона Upload Item
.
В повечето случаи API-та, които връщат JSON данни, могат директно да бъдат прехвърлени и съхранени в документни бази данни. По-долу е даден друг документ, който представлява туитове от акаунта на Microsoft в Twitter, извлечени чрез Twitter API и след това добавени в Cosmos DB.
{
"created_at": "2021-08-31T19:03:01.000Z",
"id": "1432780985872142341",
"text": "Blank slate. Like this tweet if you’ve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK",
"_rid": "dhAmAIUsA4oHAAAAAAAAAA==",
"_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"",
"_attachments": "attachments/",
"_ts": 1630537000
Полетата от интерес в този документ са: created_at
, id
и text
.
🚀 Предизвикателство
Има файл TwitterData.json
, който можете да качите в базата данни SampleDB. Препоръчително е да го добавите в отделен контейнер. Това може да се направи, като:
- Щракнете върху бутона за нов контейнер в горния десен ъгъл
- Изберете съществуващата база данни (SampleDB), създайте идентификатор за контейнера
- Задайте ключ за разделяне на
/id
- Щракнете върху OK (можете да игнорирате останалата информация в този изглед, тъй като това е малък набор от данни, който се изпълнява локално на вашата машина)
- Отворете новия си контейнер и качете файла с Twitter данни чрез бутона
Upload Item
Опитайте да изпълните няколко SELECT заявки, за да намерите документи, които съдържат Microsoft в полето text. Подсказка: опитайте да използвате ключовата дума LIKE.
Тест след лекцията
Преглед и самостоятелно обучение
-
Има допълнителни форматирания и функции, добавени към тази електронна таблица, които тази лекция не обхваща. Microsoft има голяма библиотека с документация и видеа за Excel, ако се интересувате да научите повече.
-
Тази архитектурна документация описва характеристиките на различните типове нерелационни данни: Нерелационни данни и NoSQL.
-
Cosmos DB е облачна нерелационна база данни, която може също да съхранява различните типове NoSQL, споменати в тази лекция. Научете повече за тези типове в този Microsoft Learn модул за Cosmos DB.
Задание
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.