Войти
Написать нам в Viber

Цікаве та нове у світі NoSQL

Досить цікаво було спостерігати переміну NoSQL з принципу «Нам не потрібний цей ваш SQL» до «Чи можна, будь ласка, дещо з Вашого SQL». Нереляційні бази даних, які виникли та розвивалися протягом останніх 8 років спочатку не мали у своїй структурі жодних можливостей SQL. Проте, сьогодні ми таки дійсномаємо набір опцій SQL для "NoSQL."  На сучасному етапі розвитку технологій, у проектах з декількома базами даних систем, як реляційні так і ні, інтерфейси SQL можуть запропонувати, в кращому випадку, лише часткове вирішення проблем узгодженості даних. Було б ідеально мати єдиний SQL-інтерфейс, що охоплював би численні різнорідні системи баз даних. Наприклад, інтерфейс що об’єднав би дані з Hadoop з даними з Oracle. Структура The Apache Drill покликана забезпечити саме такий SQL двигун. Drill може працювати на декількох розподілених базах даних, таких як HDFS або Amazon S3, реляційних баз даних, що підтримують JDBC або ODBC, а також систем NoSQL, таких як MongoDB і HBase. Архітектура ‘drill’ заснована на системі Dremel Google, яка забезпечує основу для продукту Google BigQuery. The Drill, в основі якого лежить оптимізатор для зменшення витрат ресурсів, може грамотно розподіляти алгоритми доступу до даних через кілька розрізнених систем. Це дозволяє ефективно і досить оптимально використовувати SQL-запит, який охопив би Hadoop, MongoDB, Oracle або інші бази даних. Принаймні в теорії. НА даний час Drill може виконувати запити до даних з реляційних систем, які підтримують JDBC або ODBC з’єднання, від систем, що використовують різні хмарні розподілені файлові системи (Amazon S3, Google Cloud Drive) і від MongoDB. Однією з найбільш важливих особливостей Drill його здатність представляти нереляційні дані в табличному форматі. Це, очевидно, потрібно для того, щоб інтегрувати дані з таких систем, як MongoDB і HBase, де таблична модель даних не може безпосередньо бути представленою у форматі JSON. Наприклад, при запиті даних з MongoDB, Drill має доступ до окремих елементів JSON завдяки представленню даних у вигляді масиву. Функція FLATTEN повертає один рядок для кожного документа у вбудованому масиві. Ці дві можливості дозволяють Drill представляти структури з MongoDB у табличному форматі. Drill може також виконувати пошук по широкій структурі колонок в HBase. Як і з MongoDB, перший крок це «згладити» широкі стовпців так, щоб кожен елемент в масиві стовпчика був повернутий у вигляді нового рядка. Ще одна функція KVGEN дозволяє отриману карту, щоб мати змогу в подальшій роботі конвертувати дані назад у стовпці. Здатність Drill будувати мапу в нереляційних системах, таких як MongoDB і HBase стає дуже корисною при роботі в різних системах. Drill SQL може посилатися на дані в будь-якій кількості серверних систем. Таким чином, ми могли б об'єднати дані з HBase з даними в Oracle, або даних в плоских файлах Amazon S3 з даними в MongoDB.  Крім того, двигун Drill за своєю природою масштабованим. При необхідності, система може бути розгорнута на потужному кластері, з обробкою SQL в розподілених по всім нодам кластері.  І, нарешті, Drill інтегрується зі сторонніми комерційними аналітичними інструментами, такими як Tableau і Qlik, дозволяючи даним інструментам використовувати переваги з отримання доступу до не реляційних систем і для ефективного об'єднання за кількома системами. Однак, Drill далека від досконалості. Відображення в нереляційних системах, таких як MongoDB або HBase вимагає деяких складних і неочевидних синтаксичних SQL перетворень, і деякі дуже складні структури JSON в даний час за межами можливостей Drill. Крім того, не всі архітектурно-обмежені системи можуть скористатися паралелізмом, що надає Drill. Проте, Drill демонструє величезну кількість можливостей та обіцяє нові в майбутньому. Звичайна база SQL, що здатна працювати з різними структурами даних, представлених як у реляційних так і нереляційних системах саме тією «Вавилонською вежею», що так необхідна нам аби нарешті відійти від величезної кількості мов і інтерфейсів для роботи з базами даних що існують у сьогоденні.