Стовпчик (бази даних)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Стовпчик (англ. column) у контексті реляційних баз даних — набір значень даних одного типу, по одному на кожен рядок таблиці.[1] Стовпчики забезпечують структуру, згідно якої складаються рядки. Коли стовпчик дозволяє значення даних одного типу, це не означає, що він містить лише прості текстові значення. Деякі бази даних ідуть далі, й дозволяють даним зберігатися як файли в операційній системі, в той час як дані у стовпчику є лише вказівником або посиланням на власне файл.[2] Крім того, більшість баз даних дозволяють стовпчикам мати складніші дані, наприклад, цілі документи, зображення чи навіть відеокліпи.[3]

У термінології реляційних баз даних еквівалент стовпчика називається атрибутом (англ. attribute).

Наприклад, таблиця, що представляє компанії, може містити такі стовпчики:

  • ID (цілочисловий ідентифікатор, унікальний для кожного рядка)
  • Назва (текст)
  • Рядок адреси 1 (текст)
  • Рядок адреси 2 (текст)
  • Місто (цілочисловий ідентифікатор, береться з окремої таблиці міст із інформацією про регіони та країни)
  • Поштовий індекс (текст)
  • Галузь (цілочисловий ідентифікатор, береться з окремої таблиці галузей)
  • та ін.

Кожен рядок надає значення даних кожному стовпчикові, й потім розглядається як єдине структуроване значення даних, яке в наведеному прикладі представляє компанію. Формальніше, кожен рядок може інтерпретуватися як змінна-відношення[en], що складається з множини кортежів, кожен з яких складається з двох елементів: назви відповідного стовпчика, та значення, яке йому надає даний рядок.

Стовпчик 1 Стовпчик 2
Рядок 1 Рядок 1, Стовпчик 1 Рядок 1, Стовпчик 2
Рядок 2 Рядок 2, Стовпчик 1 Рядок 2, Стовпчик 2
Рядок 3 Рядок 3, Стовпчик 1 Рядок 3, Стовпчик 2

Приклади баз даних: PostgreSQL, MySQL, SQL Server, Access, Oracle, Sybase[en], DB2.

Абревіатура SQL означає англ. Structured Query Language — мова структурованих запитів.

Див. також: SQL

Поле[ред. | ред. код]

Слово «поле» (англ. field) зазвичай використовують як синонім «стовпчика». Проте, перфекціоністи баз даних надають перевагу «полю» для позначення конкретного значення або конкретного елементу стовпчика. Таким чином, поле є перетином рядка та стовпчика.[4]

Рядкові та стовпчикові бази даних[ред. | ред. код]

Реляційні бази даних переважно використовують рядкове зберігання даних, але для багатьох бізнес-застосунків зручнішим є стовпчикове. Стовпчикова база даних має швидший доступ для вичитування стовпчиків протягом обробки діапазону запиту. Будь-які з цих стовпчиків можуть слугувати індексом. Застосунки на основі рядків бажають просуватися лише на один запис за раз, і зазвичай вимагають доступу до всього запису чи двох. Сховище даних стовпчикової бази дозволяє ефективніше стиснення, оскільки більшість стовпчиків охоплюють лише кілька різних значень порівняно з кількістю рядків.[5] Крім того, у стовпчиковому сховищу дані вже розділено по вертикалі. Внаслідок цього операції над різними стовпчиками можуть виконуватися паралельно. Якщо багато з них вимагають пошуку чи агрегації, то кожну може бути призначено окремому ядру процесора. Загалом, рядкова база даних потребує читання всього рядка, навіть якщо зобов'язана отримати доступ лише до кількох стовпчиків. Внаслідок цього запити до великого обсягу даних забирають багато часу, тоді як у таблицях стовпчикових баз даних цю інформацію зберігають фізично поряд, цілеспрямовано пришвидшуючи запити певних даних.[6]

Переваги[ред. | ред. код]

Основною перевагою є те, що зберігання даних у стовпчиковій базі може значно прискорити деякі запити. Наприклад, коли потрібно обрахувати середній вік усіх користувачів, можна просто переміститися до ділянки, де зберігаються дані про вік, і прочитати лише їх, замість пошуку цих даних у кожному рядку. Протягом виконання запиту стовпчикове сховище уникає проходу по невідповідних даних. Таким чином, агрегаційні запити, в яких вимагається пошук лише підмножинами всіх даних, відбуваються набагато швидше, порівняно з рядковими базами даних.[7]

Більше того, оскільки типи даних кожного стовпчика подібні, при виконанні алгоритмів стиснення для кожного стовпчика стиснення збільшується, що допомагає запитам бути швидшими. Особливо, коли набори даних стають все більшими.[8]

Недоліки[ред. | ред. код]

Існує багато ситуацій, коли потрібно вибирати багато полів для кожного рядка. Стовпчикові бази даних є зазвичай не дуже добрими для таких запитів. Що більше полів запису читаються, то меншою є перевага стовпчикової бази даних. Насправді, якщо запит вибирає лише задані користувачем значення, то рядкові бази даних зазвичай виконують їх швидше. По-друге, у стовпчикових базах даних запис нових даних може займати більше часу.[9] Наприклад, вставку нового запису в рядкову базу даних можна здійснити як одну дію. У свою чергу, у стовпчиковій базі даних доводиться писати до кожного зі стовпчиків по черзі. Внаслідок цього у стовпчиковій базі даних в разі завантаження нових даних або оновлення багатьох значень витрачається більше часу.[10]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Термін «стовпчик» також має еквівалентне застосування в інших, більш загальних контекстах
  2. Гурвіц, Джудіт; Нугент, Алан; Галпер, Ферн; Кауфман, Марсія. Columnar Databases in a Big Data Environment [Стовпчикові бази даних у великих середовищах]. dummies — Learning Made Easy (англійською). Процитовано 31 січня 2017. 
  3. What is Database Column? [Що таке стовпчик бази даних?]. Techopedia (англійською). Процитовано 31 січня 2017. 
  4. Гахан, Майк (18 жовтня 2000). An introduction to databases [Вступ до баз даних]. www.ucl.ac.uk (англійською). Процитовано 31 січня 2017. 
  5. Стіманн, Джен (7 листопада 2012). Introduction to column oriented databases [Вступ до стовпчикових баз даних] (англійською). Процитовано 31 січня 2017. 
  6. Column Vs Row Data Storage [Стовпчикові чи рядкові сховища даних]. SAP HAN tutorial (англійською). Архів оригіналу за 12 березень 2017. Процитовано 31 січня 2017. 
  7. Вебер, Алекс (20 січня 2015). What's Unique About a Columnar Database? [Що особливого у стовпчикових базах даних?]. FlyData (англійською). Процитовано 31 січня 2017. 
  8. Архівована копія. 31 січня 2017. Архів оригіналу за 4 березень 2016. Процитовано 31 січень 2017.  Вказано більш, ніж один |назва= та |title= (довідка)
  9. Column Oriented Database Technologies [Технології стовпчикових баз даних]. DB Best Chronicles (англійською). 24 липня 2012. Процитовано 31 січня 2017. 
  10. Гайес, Френк (20 травня 2012). The Database Decision: A Guide [Рішення баз даних: Настанова]. Data Informed (англійською). Архів оригіналу за 24 травень 2012. Процитовано 31 січня 2017.