1.2.1 Формати даних

Тема
Матеріали

Формат даних (формат файлів) – це інформація за допомогою якої користувачі (як і операційна система) можуть швидко ідентифікувати вміст даних без необхідності зчитування вмісту всього файлу. Саме тому до вибору формату даних треба підходити відповідально. Під час визначення формату для оприлюднення набору даних необхідно зважати саме на відповідність типу даних файловому формату. Найбільш поширеною помилкою, яка виникає під час публікації наборів даних, є невідповідність файлового формату типу даних, що у ньому міститься. Зокрема, некоректною є публікація таблиць (структурованих даних) у форматах DOC(X) чи PDF, призначених для текстових даних, або у форматах JPG чи PNG, призначених для графічних даних.  Крім того, створювати набори даних потрібно у так званих відкритих файлових форматах, тобто таких, що не залежать від платформи та доступні без обмежень. До відкритих форматів, зокрема, належать формати, CSV, JSON та XML. Нижче ми коротко розглянемо й інші формати даних, без прив’язки до структурованих даних.  

TXT (Text File) – це стандартний текстовий формат, що містить текстові дані, які, як правило, організовані у вигляді рядків або взагалі не мають форматування. Даний формат є основою для багатьох більш спеціалізованих форматів, таких як HTML, XML, CSV.  Файли TXT універсальні та вкрай прості за своєю природою, а тому їх можна відкривати на будь-якій операційній системі: за допомогою фактично будь-якого текстового редактора. У випадку Windows, наприклад, це Блокнот.  

 Крім того, даний формат дуже стійкий — кожне слово та символ у такому файлі самодостатні і, якщо трапиться пошкодження байтів, то зазвичай можна відновити дані за контекстом або продовжити обробку решти вмісту. В той же час, у стиснених чи двійкових файлах, пошкодження декількох байтів може зробити файл абсолютно невідновним. Головним недоліком використання файлів TXT є те, що вони займають більше місця у порівнянні з іншими файлами.  

HTML (від англ. HyperText Markup Language – "мова гіпертекстової розмітки") – це мова тегів, яка є стандартною мовою розмітки документів у Всесвітній мережі Інтернет.  Фактично будь-яка веб-сторінка – це HTML-код, який інтерпретується браузерами; отриманий в результаті інтерпретації форматований текст у “дружньому” для користувача вигляді відображається на екрані монітора комп’ютера або мобільного пристрою.  

У всесвітній павутині HTML-сторінки, як правило, передаються браузерам від сервера за допомогою протоколів HTTP або HTTPS у вигляді простого тексту або з використанням шифрування. До речі, код будь-якої веб-сторінки є доступним для всіх. Щоб побачити його, потрібно клацнути правою кнопкою миші та обрати опцію подивитися вихідний код" або ж просто натиснути на клавіатурі CTRL + U.  

HTML – тегова мова розмітки документів, тобто будь-який документ формату HTML являє собою набір елементів, початок і кінець якого маркується спеціальними позначками - тегами. Що цікаво, елементи можуть бути порожніми, тобто не містять ніякого тексту та інших даних (наприклад, тег переносу рядка
). У цьому випадку зазвичай не вказується закриваючий тег.  

PDF (Portable Document Format) – універсальний файловий формат, який дозволяє зберігати шрифти, посилання, зображення, аудіо, відео, текст та власне сам макет вихідного документа незалежно від того, на якій із безлічі платформ чи додатків такий документ створювався. На сьогодні формат PDF, що був винайдений компанією Adobe, є відкритим стандартом, підтримуваним Міжнародною організацією зі стандартизації (ISO).   

Беззаперечною перевагою формату PDF є той факт, що файли даного типу підтримують можливість електронного підпису і можуть переглядатися за допомогою безкоштовного програмного забезпечення Acrobat Reader DC.  Крім того, є й інші можливості формату: 

  • можуть захищатися паролем для запобігання копіювання та редагування; 
  • всі файли PDF відповідають стандартам ISO 32000 з обміну електронними документами, включаючи спеціальні стандарти;  
  • файли можуть виправлятися для видалення конфіденційної інформації без можливості відновлення; 
  • забезпечують зручний пошук, включаючи пошук по сканованому тексту, який був перетворений за допомогою технології оптичного розпізнавання Символів (OCR); 
  • працюють з допоміжними технологіями, які роблять файли PDF доступнішими для людей з обмеженими можливостями, такими як слабкий зір або сліпота.  

 Ви можете з легкістю перетворювати документи Microsoft Word, файли Excel і презентації PowerPoint у формат PDF.   

XLSX. Формат даних .xlsx відомий нам передусім завдяки програмі Microsoft Excel. Звісно, крім відомого Excel, його  можна прочитати й у більшості табличних редакторів: Apple Numbers, Google Spreadsheets, LibreOffice тощо.  

 Загалом XLSX-файл представляє собою віртуальну таблицю, розділену на стовпці та рядки, що формують комірки. У класичному табличному редакторі стовпці проіндексовані латинськими літерами, а рядки – цифрами. Кожна клітинка може містити як фіксовані дані, так і формули, часто пов’язані з даними, іноді навіть в інших файлах. Формат XLSX дозволяє користувачеві змінювати форматування тексту: його шрифт, колір, вирівнювання (в комірці) і інші параметри. Крім того, документ може містити зображення, а також діаграми, побудовані на основі даних в певних комірках.  При роботі із даними форматом варто уникати об’єднаних комірок та пам’ятати, що колір та шрифт комірок у переважній більшості випадків не будуть нести ніякої інформації при машиночитній обробці даних.  

CSV (від англ. comma-separated values, "значення, розділені комою") – простий текстовий відкритий формат, призначений для представлення табличних даних.   

 Формат CSV має свої особливості: 

  • кожен рядок файлу – це один рядок таблиці; 
  • рядки розділені знаком нового рядка n; 
  • роздільником (delimiter) значень стовпців найчастіше є символ коми ",". Більшість програм широко трактують цей формат і тому, на практиці, використовуються й інші роздільники, зокрема крапка з комою (semicolon) чи табуляція (tap);  
  • значення, що містять так звані зарезервовані символи (лапки, кома, крапка з комою, новий рядок) охоплюються подвійними лапками ("). Якщо у значенні зустрічаються лапки – вони представляються у файлі у вигляді двох лапок поспіль; 
  • нецілі числа розділені крапками: 1498.54.  

Загалом CSV є дуже простим та відносно компактним форматом даних. Він може доволі легко сприйматися, його можна відкрити величезною кількістю програм. Проте даний формат також має ряд недоліків:  

  • не підтримує ієрархію даних; 
  • не підтримує зв'язок між даними; 
  • придатний лише для таблиць; 
  • заголовки в таблиці не є обов'язковими.  

Крім того, при збереженні файлу у форматі CSV, Excel за замовчуванням використовує кодування Вашої операційної системи, це зокрема впливає на розділювач стовпців та десятковий розділювач.  

Так, в реаліях України (українська чи російська локалізація Windows) в якості десяткового розділювача чисел здебільшого використовується кома ",". Таким чином, Ваш Excel за замовчуванням зберігатиме CSV-файли з розділювачем ";" і комами замість крапок в нецілих числах.  При збереженні файлів у форматі CSV варто звертати на це увагу або ж для уникнення цієї проблеми, можна скористатися Google Spreadsheets, LibreOffice Calc чи OpenRefine.  

JSON (англ. JavaScript Object Notation) – текстовий формат обміну даними, що заснований на JavaScript. Якщо Ви маєте великий ієрархічний масив даних – обирайте JSON.   

 Загалом даний формат:  

  •  компактний та структурований;  
  • не чутливий до відступів;  
  • стандартизований (RFC 7159, ECMA 404);  
  • завдяки ієрархічній структурі дозволяє зменшити розмір файлу з ієрархічними даними; 
  • за наявності певного досвіду чи спеціальних розширень (для браузера Google Chrome – це JSONView) легкий для сприйняття.  

Цей формат чудово підходить для передачі даних через АРІ. 

Попри те, що формат JSON відносно легко можна читати та редагувати, його варто створювати машинним шляхом. Крім того, JSON-файли дуже часто експортуються без рядкових відступів з метою економії місця, тому їх може бути не тільки важко прочитати, але й взагалі зрозуміти.  

 Зазвичай головними помилками у JSON-файлах є:  

  • зайві чи відсутні коми у кінці колекцій чи списку; 
  • зайві чи відсутні лапки у вашому файлі; 
  • проблеми з квадратними [] чи фігурними {} дужками; 
  • загальне недотримання синтаксису.   

У таких випадках, JSON-файли можна перевірити за допомогою спеціальних сервісів: JSON Formatter3 або JSONlint4, які допоможуть виправити не лише помилки, але змінити вигляд файлів на більш зрозумілий людині, так званий “pretty JSON”. Крім того, дані ресурси підтримують експорт файлів за допомогою URL-адреси, а також зручне редагування файлів.  

 Також важливо пам’ятати, що Ваш JSON має бути у кодуванні UTF-8 (вимога стандарту RFC 7159). У іншому випадку це може спотворити символи, зокрема кириличні і користувачі замість даних побачать “биті значення”. 

XML (англ. eXtensible Markup Language) – ієрархічний формат даних, створений ще у 1994 році та рекомендований Консорціумом Всесвітньої павутини (W3C). У ньому дані організовані в об’єкти, які можуть містити інші об’єкти. Однією з головних переваг XML є його гнучкість. Формат XML дещо схожий на структуру тегів HTML на веб-сторінці.   

 У простому розумінні XML – це конкретна граматика із своїм набором правил, яка, проте, не вимагає формальних, фіксованих назв тегів чи параметрів, тому кожен розробник може створювати свою розмітку відповідно до своїх потреб, дотримуючись загальних правил синтаксису. По суті XML – це мова, яка описує себе і будь-які структури даних.   

Беззаперечною перевагою XML є те, що у файлі, крім основних даних можна розміщувати метадані (описи, характеристики, реквізити), вкладені файли (наприклад, картинки, стилі тексту), довідники тощо. Проте, попри ряд значних переваг, XML має і суттєві недоліки: за рахунок повторення тегів та відступів файли цього формату можуть бути значними за розміром. Крім того, у порівнянні з CSV та JSON, даний формат є значно складнішим для парсингу та обробки.        

GeoJSON – це відкритий формат, для кодування різноманітних географічних структур даних, заснований на форматі JSON. Формат може зберігати різні типи для опису географічних об’єктів, такі як: точки (адреси та місця розташування), лінії (вулиці, шосе, кордони), полігони (країни, штати, ділянки землі). Також можуть зберігатися так звані мультітипи, які представляють собою об’єднання одразу декількох типів.  

 Подальшим розвитком GeoJSON є TopoJSON, розширення GeoJSON, яке кодує геопросторову топологію, і, як правило, забезпечує менший розмір файлів. На сьогоднішній день даний формат підтримується більшістю геоінформаційних систем, а також безпосередньо застосовується при публікації інтерактивних картографічних даних, зокрема засобами бібліотек OpenLayers та Leaflet.  

API (англ. Application Programming Interface, “Прикладний програмний інтерфейс”) – набір готових процедур, підпрограм, функцій, посилань чи параметрів, які дозволяють використовувати інформаційні системи для отримання структурованих або неструктурованих наборів даних чи іншої взаємодії.  Коли ви використовуєте програму на своєму мобільному телефоні, програма підключається до Інтернету та надсилає дані на сервер. Потім сервер отримує ці дані, інтерпретує їх, виконує необхідні дії та відправляє назад на ваш телефон. Потім додаток інтерпретує ці дані та представляє вам інформацію, яку ви хотіли прочитати. Ось що таке API - все це відбувається через API.   

Складно? Ось простіший приклад – реальний випадок використання API.  Ви шукаєте квитки на авіарейс в Інтернеті. У вас є безліч варіантів на вибір, включаючи різні міста, дати вильоту та повернення тощо. Давайте уявимо, що ви бронюєте свій рейс на веб-сайті авіакомпанії. Ви вибираєте місто та дату вильоту, місто і дату повернення, клас, а також інші параметри. Для того, щоб забронювати свій рейс, ви у цьому випадку взаємодієте з веб-сайтом авіакомпанії, щоб отримати доступ до їхньої бази даних і подивитися, чи є вільні місця на ці дати, скільки це коштує.  

 Проте Ви не завжди можете користуватись веб-сайтом компанії, адже часто ми користуємось сайтами туристичних компаній чи агрегаторами на зразок Kiwi. У цьому випадку агрегатор взаємодіє з API авіакомпанії. API – це інтерфейс, який просить інформацію у бази даних авіакомпанії (або одразу кількох баз різних авіакомпаній) для бронювання місць, варіантів багажу тощо. Потім API приймає відповідь авіакомпанії на ваш запит, передає його назад на сайт агрегатора, який і показує вам найсвіжішу та найактуальнішу інформацію.  

 API є зручним та корисним для великих обсягів динамічних даних, оскільки дає змогу отримувати інформацію в автоматичному режимі та/чи в реальному часі. Якщо ваш набір даних містить великий обсяг інформації й часто оновлюється, доступ до нього варто запровадити саме за допомогою API. Проте варто пам’ятати, що у будь-якого API мають бути детальні інструкції щодо його використання, приклади запитів зі всіма можливими параметрами та відповідями на ці запити.   

 Наприклад, портал “Вони голосують для тебе” пропонує отримати доступ до практично всієї інформації, яка міститься на сайті: інформація про депутатів, їхні голосування, ініціативи, які вони підтримують, голосування, які відбуваються у Верховній Раді. Для цього потрібно зареєструватись (ввести e-mail та придумати логін і пароль), і Ви отримаєте спеціальний ключ, який допоможе отримувати актуальні, структуровані та регулярно оновлювані набори даних у форматі JSON.  

Вибір формату даних

На жаль, неможливо написати ідеальну та уніфіковану інструкцію з вибору формату даних, адже кожен набір даних унікальний. Проте завжди можна скористатися загальними правилами:

  1. Якщо у вас є якісні та структуровані дані (з великою ймовірністю це таблиці Excel), наприклад, із інформацією про комунальні підприємства, перевізників, школи, лікарні тощо – конвертуйте їх у формат CSV та публікуйте.
  2. Якщо потрібно оприлюднити набір даних із ієрархією (наприклад, результати голосувань), обирайте JSON або ж XML.
  3. Формат XML варто обирати лише в тому випадку, якщо у вас уже є робочий, перевірений та грамотно розроблений шаблон структури даних, або ж ви здійснюєте експорт із вашого робочого середовища. У іншому випадку – краще обирати JSON.
  4. Якщо Ваші набори даних регулярно оновлюються – краще розробити API.
  5. Незалежно від формату даних, завжди обирайте кодування “UTF-8”.
  6. Великі за розміром файли (понад 200 Мб) варто архівувати. Ваші архіви повинні бути у форматі ZIP або 7z.