Технологиите идват и си отиват по-бързо от снега миналата пролет. Някои неща си остават вечни. Като например (няма да споменаваме Лили Иванова) добрите стари SQL бази данни. Дори не знаем как да ги наричаме, и то не само на български – „секуъл“, „ескюел“ и как ли още не, важното е, че това са същите онези, базирани на таблици системи за съхранение на данните, които все още дават хляба на бекенд програмистите и пазят информацията онлайн по-сигурно от каквото и да било друго.
Как се появиха и защо се оказаха толкова успешни?
Ко? Релация!
Днес базите данни – онези софтуерни структури, които имат отговорността да пазят цялата информация в огромната компютърна мрежа, се делят на две. Първите, които продължават своето дългогодишно царстване в компютърния свят, са релационните. С други думи близки или малко по-далечни варианти на темата на днешната ни среща – SQL.
Какво ги обединява? Че винаги са изградени от изпитаната структура на таблици, свързани помежду си по различни начини, откъдето идва и думата „релация“. Да, има и нерелационни бази данни, които подреждат и запазват информацията под формата на графи или други алтернативни структури, но за тях и трудния им път в битката с нашия днешен герой ще разкажем повече следващ път.
Компютрите днес са ултрамодерни и нямат нищо общо с огромните, изпълващи цели стаи шкафове от 60-те години на миналия век? Е, почти вярно е това съждение, с изключение на едно общо нещо – основните принципи, по които работят и тогава, и сега. И също – с изключение на SQL базите данни.
Историята започва именно през 60-те, когато за първи път компаниите получават достатъчно достъпната възможност да се сдобият с работещи изчислителни ресурси, с прародителите на днешните компютри. Тук се ражда и нуждата от добре структурирани бази данни, които да пазят информацията. Създават се различни модели, всяка по-голяма софтуерна компания предлага свои алтернативи.
През 1970 г. Едгар Ф. Код (явно доста е обичал да „коди“) предлага в научна публикация принципите на релационните бази данни – логическа организация на информацията, която не е свързана с физическите машини, на които се съхранява. Той предлага изцяла нов подход за моделиране на данните, който може да реши на практика всяка нужда, свързана с тях.
50 години (не) стигат
Защото, чисто и просто, няма информация, която да не може да бъде сведена до поредица от таблици, свързани помежду си. Всяка информация е достатъчно да бъде съхранена веднъж, а после взаимовръзките са гъвкави и интуитивни, появяват се само там, където са нужни. Всъщност, много подобно устройство на това, чрез което работят невроните в мозъка ни.
Преди времето на таблиците на власт са дърветата. Почти всички разработки за организиране на данните са свързани с йерархични структури, които подреждат информацията. Единствено релационният модел залага на равномерно разпределени данни в отделни таблици.
Всяка от таблиците може да има връзка с друга, което отново позволява йерархия, само че гъвкава такава. Един запис от едната таблица може да е свързан с много от стойностите в друга, а има и трети вариант на отношения – много към много. С това се изчерпват и всички потенциални нужди в организирането.
Като зряла круша
В релационните бази данни информацията е консистентна. Знаеш, че в таблицата за имена има точно и само думи, а не числа или булеви променливи. А това помага значително както за поддръжката и сигурността, така и за скоростта.
Ето че идват и 70-те, за да претворят идеята в стандарт. А след нея се появяват и системите за управление на този тип бази данни. Трудно е да се каже коя е първата наистина ефективна релационна система – няколко са компаниите и изследователските екипи, които почти едновременно разработват прототипи на базата на предложения принцип. Между 1974 и 1977 г. са създадени Ingres и System R, които се смятат за основните прототипи, следвани от много други.
После идва 1980-а когато SQL (Structured Query Language – „структуриран език за заявки“) се превръща в стандартен език за осъществяване на връзка с базата данни.
Оттогава той не се е променял и няма защо – умее всичко, което се очаква от него, лесен е, разбираем, почти все едно „говориш“ на компютъра на човешки, разбираем език. И той ти отговаря именно с онова, което си очаквал.
Обяснителен режим
Освен това езикът е достатъчно обяснителен – софтуерните инженери формулират какво им е нужно, а самата организация на базите данни знае как да им предостави това, което се търси. Една концепция, която е изпреварила с много своето време и днес се преоткрива в редица технологии.
Всъщност, достатъчно признание е, че и до днес състезанието в света на базите данни е между SQL и NoSQL. Опонентът дори не е успял да формулира достатъчно добра своя алтернатива, а разчита на противопоставянето на доказания авторитет.
В ущърб на технологията, за която ви разказваме, често ще чуете, че е създадена по времето, когато всички процеси се случваха само на една машина. Че е разработена преди ерата на интернет. Че по онези, същите времена обемите данни са били с драстично, драстично по-малки измерения от днешните.
Именно това обаче е и дефиницията на работещо инженерно решение – което залага принципи, а същите тези принципи се доказват, справят се при многократно по-голямо натоварване и при условия, които създателите им не биха могли и да допуснат, че ще им се „изсипят на гърба“.
Ай, SQ…тир
Разбира се, NoSQL имат какво да предложат, базите данни не спират да се развиват и всеки отделен случай има своето оптимално решение, което е в ръцете на инженерите. В някои случаи структурите, базирани на графи или други по-нови принципи, са по-гъвкави, позволяват по-високи скорости и по-добра защита.
SQL Injection например и в наши дни остава една от най-разпространените уязвимости за сигурността на софтуерните продукти. Тя обаче никога не е по вина на самите принципи на SQL. За да стане възможна подобна атака, винаги става дума за пропуск на инженерите, които са разработвали защитата. Но това е друга и интересна тема, на която скоро ще се спрем в рубриката за сигурността онлайн в блога на ZETTAHOST.bg.
Така или иначе, SQL базите данни са готови дори да отговорят на очакванията на днешните облачни технологии. От 2012 г. Google не само разработва, но и разчита на дистрибутирани технологии, базиращи се на SQL. В този случай една и съща база данни успешно е дистрибутирана, или „клонирана“ на многобройни сървъри на разни краища на света, така че да бъде максимално близо до потребителите, които се нуждаят от нейната информация.
Базирайки се на фактите
Днес добре познатата система има много „роднински“ варианти, които обаче продължават да носят със себе си основната идея. Независимо дали става дума за технологиите, свързани с MySQL, PostgreSQL или Microsoft SQL, зад тях винаги се крие един и същи принцип, а и доста подобен синтаксис за работа, който се очаква да познават програмистите. Защото принципът е, меко казано, изпитан от времето.
Всичко ново е добре забравено старо, гласи максимата от времената далеч преди интернет. Днес по-ценно е именно старото, успяло да оцелее дори пред предизвикателства, които не са съществували при раждането или в младостта му. И не само е оцеляло, а и е процъфтяло, крепейки на плещите си голяма част от днешните онлайн технологии. SQL базите данни са сред малкото истински примери в тази посока.