• Главная
  • Карта сайта
Не найдено

Розробка додатків і баз даних: точки дотику

  1. Хаотичний проектування баз даних
  2. роз'єднаність коду
  3. Мультиплатформний додатки баз даних
  4. Зміни в даних і схемах
  5. Продуктивність додатків баз даних
  6. Ящик з інструментами

Реляційні бази даних застосовуються сьогодні практично у всіх додатках, починаючи від вбудованих в мобільні і спеціальні пристрої, Web-додатків і закінчуючи системами управління підприємства Реляційні бази даних застосовуються сьогодні практично у всіх додатках, починаючи від вбудованих в мобільні і спеціальні пристрої, Web-додатків і закінчуючи системами управління підприємства. Проникнення баз даних в усі види додатків йде наростаючими темпами, а розробники отримують все більш зручні у використанні інструменти і підходи. Може скластися враження, що розробники додатків для роботи з базами даних є найбільш «забезпеченої» прошарком програмістів, у яких є інструменти на всі випадки життя, але це далеко не так. Компанія Embarcadero Technologies, придбавши у 2008 році підрозділ засобів розробки CodeGear у компанії Borland, об'єднала професійні засоби розробки додатків і інструменти проектування, засоби розробки та управління базами даних, що дозволило усунути наявні проблеми як з боку додатків, так і з боку баз даних.

Хаотичний проектування баз даних

У сучасній індустрії розробки програмного забезпечення усталилася думка, що визначити вимоги до продукту перед початком проекту неможливо, і тому розробка повинна бути адаптована до їх постійної зміни. В результаті з'явилися процеси, засновані на ітераціях, що враховують зміна вимог, а рефакторинг вихідного коду став невід'ємною частиною створення ПО. А що відбувається в процесі ітераційної розробки з базами даних? Зміна вимог змушує коригувати схему бази даних, причому найчастіше це відбувається непрозоро, без аналізу загальної картини і залежностей. Таблиці, поля, зовнішні ключі і обмеження створюються і змінюються хаотично, за посилальної цілісністю ніхто не стежить, і ніхто не може точно сказати, чим же база даних на ітерації N відрізняється від її стану на ітерації N-1.

Фактично розробка баз даних сьогодні ведеться «заплаточним» методом, як за часів панування «водоспадного» процесу, - на початку проекту «малюється» якась модель бази, заснована на часткових вимогах, відомих до теперішнього часу, потім генерується фізична база даних, а далі про модель забувають, виробляючи зміни прямо в базі даних. Мінуси такого підходу очевидні: обмін знаннями та розуміння загальної картини утруднені, а зміни непрозорі, можуть породжувати протиріччя в логіці і схемою бази даних, які залишаться нерозкритими до моменту введення програмної системи в експлуатацію, що призводить до дуже великих збитків. Сучасні розробники додатків баз даних потребують інструментах, пристосованих до ітераційної розробки баз даних.

Першим і найбільш важливою умовою такої пристосованості є наявність повноцінних можливостей зворотного інжинірингу (reverse engineering, створення моделі бази даних на основі аналізу її фізичної схеми) і прямого інжинірингу (forward engineering; створення і зміна фізичної схеми бази даних на основі моделі). На практиці це означає, що за допомогою інструменту проектування можна провести аналіз схеми існуючої бази даних, створити на її основі модель бази, змінити модель і негайно застосувати зміни, які повинні дійсно коректно і несуперечливо змінити схему бази даних, а не зіпсувати або заплутати її.

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

Розробники додатків рідко працюють поодинці, тому потребують коштів спільної роботи, але якщо на боці розробки додатків з цим все в порядку, то спільна робота над базою даних зазвичай ніяк не підтримує на рівні інструментальних засобів. Спільна робота передбачає обов'язкову систему контролю версій: всі версії моделей і фізичної схеми бази даних повинні зберігатися в єдиному репозиторії, забезпечуючи можливості відкату і порівняння схем з самого початку процесу розробки.

Розробка баз даних - справа не менш важливе, ніж розробка додатків, тому стратегічним напрямком розвитку є забезпечення процесу розробки баз даних засобами контролю версій і управління вимогами, а також явна прив'язка етапів моделювання та модифікування баз даних до итерациям і мінливих вимог програмного проекту. Для вирішення перерахованих проблем і підтримки сучасного ітераційного процесу розробки баз даних компанія Embarcadero пропонує ER / Studio - інструмент проектування, аналізу, зворотного і прямого інжинірингу, що дозволяє здійснювати контроль версій моделей на базі ваше сховище. Як засіб контролю за змінами метаданих в фізичних базах даних може використовуватися інструмент Change Manager.

роз'єднаність коду

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

Розглянемо простий приклад. Припустимо, що на Delphi розробляється програма, яка викликає збережену процедуру в СУБД Oracle. Використовуючи засоби Delphi, розробник програми може в режимі налагодження покроково пройти до моменту виклику SQL-запиту, побачити передаються збереженій процедурі параметри і результат, який поверне процедура. Але що відбувається всередині процедури, коли вона виконується на сервері баз даних? З середовища розробки нашого застосування це неможливо визначити - для цього треба завантажувати додаток для розробки SQL, яке має можливості для налагодження збережених процедур, а також показує плани SQL-запитів, статистику їх виконання, дозволяє переглянути і змінити схему бази даних. Однак не можна передати параметри з середовища розробки програми в середу розробки SQL, і доводиться копіювати їх вручну, перемикаючись з одного вікна в інше. У засобі розробки додатків також неможливо побачити деталізовані результати виконання SQL-коду, такі як план запиту, статистика виконання і т.д. Поява технології крос-мовної налагодження дозволило вирішити ці проблеми.

Першим продуктом Embarcadero, що підтримує крос-мовну налагодження, є RapidSQL Developer (колишній PowerSQL), візуальна частина якого заснована на технології Eclipse і тому дозволяє вбудовуватися в будь-яке середовище розробки на його базі (в тому числі, звичайно ж, JBuilder) і здійснювати динамічну крос -мовні налагодження. Тепер в момент виконання процедури на сервері розробник в рамках одного і того ж інструмента автоматично переходить в повноцінну середу налагодження SQL-коду, здатну налагоджувати як звичайні SQL-запити, так і процедури. Розробник бачить актуальні вхідні параметри запитів і збережених процедур, отримуючи можливість покрокової налагодження SQL-коду. Інтеграція RapidSQL Developer в Eclipse-сумісні кошти розробки - перший крок інтеграції розробки додатків і баз даних, на черзі забезпечення аналогічних можливостей для Delphi, C ++ Builder і інших засобів розробки додатків від Embarcadero.

Мультиплатформний додатки баз даних

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

Досвідчені розробники баз даних добре розуміють суть виникаючих тут проблем: відмінність типів даних і діалектів SQL, відсутність механізмів міграції і реплікації між різними СУБД, складність верифікації міграції перетворюють написання і експлуатацію додатків для різних СУБД в кошмар. З боку засобів розробки додатків цю проблему намагаються вирішити за рахунок створення бібліотек доступу до даних (dbExpress в Delphi і C ++ Builder, ADO і ADO.Net від Microsoft), побудованим на єдиних архітектурних принципах і методах доступу, а також шляхом застосування численних об'єктно-реляційних «обгорток» (Object Relation Mapping, ORM) над реляційної логікою і структурою бази даних, що генерують вихідний код для роботи з даними на основі аналізу схеми бази даних і використовують механізм «адаптерів» для реалізації протоколу конкретної СУБД. Серед найбільш популярних ORM треба відзначити Hibernate для Java і ActiveRecord в RubyOnRails, які надають об'єктно-орієнтований інтерфейс до зберігаються в СУБД даними. Для Delphi існує аналогічний проект tiOPF, для C # - NHibernate.

Звичайно, використання таких універсальних бібліотек і наборів компонентів дозволяє значно скоротити число рутинних операцій в процесі Мультиплатформний розробки баз даних. Однак цього недостатньо, коли мова йде про додатки, що використовують більш складні бази даних, в яких активно використовується логіка, закладена в збережених процедурах і тригерах, - для її реалізації, налагодження і тестування потрібні окремі інструменти, часом абсолютно різні для різних СУБД. Для розробки кроссплатформних додатків баз даних Embarcadero пропонує інструмент RapidSQL.

Всі продукти Embarcadero для роботи з базами даних підтримують кілька платформ і засновані на ядрі аналізу схеми і статистики баз даних Thunderbolt. Кожна підтримувана СУБД і кожна конкретна версія СУБД мають відповідні гілки коду в ядрі Thunderbolt, що дозволяє максимально точно відображати схему бази даних на внутрішнє уявлення в цьому ядрі і, найголовніше, здійснювати коректні перетворення між поданням і реальними базами даних. Саме завдяки ядру Thunderbolt система RapidSQL дозволяє розробляти якісний SQL-код для всіх підтримуваних платформ (Oracle, MS SQL, Sybase і різні варіанти IBM DB2), а ER / Studio може здійснювати точний reverse- і forward-інжиніринг схем баз даних.

Якщо розробляється додаток для двох і більше платформ або переноситься існуючу програму з однієї платформи на іншу, то RapidSQL надасть всі необхідні інструменти для міграції схеми, користувачів і дозволів між різними СУБД. Звичайно, RapidSQL автоматично НЕ конвертує процедури на PL / SQL в T-SQL - для цього все ще потрібно програміст, однак інструмент забезпечує єдине вікно для Мультиплатформний розробки, уніфіковані редактори об'єктів схеми, користувачів і їх прав, а також налагодження SQL на всіх підтримуваних платформах . За твердженнями користувачів RapidSQL, в результаті економиться до 70% часу, який витрачається на міграцію між різними СУБД.

Зміни в даних і схемах

Міграція з однієї СУБД на іншу неможлива без її верифікації. Хто і яким чином може гарантувати, що дані, перенесені з однієї СУБД в іншу, дійсно ідентичні? Різні клієнтські бібліотеки, різні типи даних і різні кодування перетворюють процес порівняння даних в нетривіальну задачу.

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

Embarcadero розробила інструмент Change Manager, призначений для порівняння даних, схем і конфігурацій баз даних. Порівняння відбувається в рамках однієї або декількох СУБД, з автоматичною перевіркою відповідності між типами даних і формуванням SQL-скриптів відмінностей, які можна тут же застосувати для приведення баз в ідентичне стан. Модуль порівняння метаданих забезпечує порівняння схем баз даних як між «живими» базами даних, так і між базою даних і SQL-скриптом і генерує скрипт відмінностей метаданих. Ця функціональність може бути використана не тільки для перевірки баз даних на відповідність стандарту, але і для організації регулярного процесу оновлення баз даних, а також для перевірки на неавторизовані зміни, скажімо, у віддалених філіях великої організації. Аналогічна ситуація з файлами - Change Manager порівнює конфігураційні файли і дозволяє забезпечити відповідність конфігурації розгорнутих додатків вимогам для даного ПЗ.

Продуктивність додатків баз даних

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

Основна причина проблем з продуктивністю додатків баз даних лежить в неоптимізованих SQL-запитах і збережених процедурах. Оптимізатори сучасних баз даних досить потужні, однак і у них є певні межі можливостей, і, щоб домогтися гарної продуктивності, потрібно правильно складати SQL-запити, створювати (або видаляти) додаткові індекси, в певних випадках денормалізовивать базу даних, перекладати частину логіки на тригери і процедури.

На етапі розробки оптимізацію запитів можна проводити за допомогою RapidSQL, який включає в себе модуль SQL Profiler, здатний аналізувати плани і генерувати підказки щодо поліпшення продуктивності SQL-запитів. Але що робити, якщо проблема виникає вже в процесі експлуатації і не локалізується в певному SQL-запиті? Якщо продуктивність падає в певний час доби або, що ще неприємніше, проблема виникає на видаленої копії системи, в той час як на основному сервері все в порядку? Для таких випадків призначений DBOptimizer - інструмент профілювання баз даних для Oracle, Microsoft SQL Server, Sybase і IBM DB2.

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

Ящик з інструментами

Всі згадані інструменти, хоча вони і дозволяють впоратися з проблемами, використовуються на різних етапах життєвого циклу розробки баз даних. Досить незручно і невигідно тримати десяток додатків на всі випадки життя, які можуть знадобитися (а можуть і не знадобитися) в процесі проектування, розробки, міграції, оптимізації та експлуатації баз даних.

Випущений в лютому 2009 року універсальний набір інструментів Emdacadero All-Access включає в себе необхідні інструменти для всіх етапів розробки додатків баз даних: від ER / Studio до DBOptimizer, від Delphi і C ++ Builder до DBArtisan. Найкраще для опису All-Access підходить порівняння з ящиком для інструментів, який стоїть вдома у кожного дбайливого господаря. Можливо, не всіма інструментами користуються кожен день, але розвідний ключ на випадок протікання повинен бути завжди під рукою.

All-Access не нав'язує програмістам або архітекторам бази даних чужі ролі, але надає універсальний комплект інструментів, відповідний для всіх ролей в процесі розробки додатків баз даних, від архітектора до тестувальника; пропонує всім членам команди розробників інструменти для всіх етапів розробки баз даних, а також набір вузькоспеціалізованих інструментів для оптимізації баз даних (DBOptimizer) і додатків (JOptimizer), що дозволяють «розшити» вузькі місця. Пакет підтримує кілька СУБД, що забезпечує економію коштів.

Олексій Ковязин ( [email protected] ) - менеджер по продуктах російського представництва Embarcadero Technologies (Москва).

ІТ на порозі об'єднання культур: управління даними і «швидка» розробка

Технічні відмінності між технологіями об'єктно-орієнтованих і реляційних баз даних привели до різниці культур, до сих пір розділяє співтовариство управління даними і співтовариство розробки. Що з цим робити далі?

Розробка додатків і баз даних: точки дотику

А що відбувається в процесі ітераційної розробки з базами даних?
Але що відбувається всередині процедури, коли вона виконується на сервері баз даних?
Хто і яким чином може гарантувати, що дані, перенесені з однієї СУБД в іншу, дійсно ідентичні?
Яким чином можна отримати гарантії, що всі необхідні оновлення були застосовані до бази даних і що весь комплекс ПО запрацює правильно?
Але що робити, якщо проблема виникає вже в процесі експлуатації і не локалізується в певному SQL-запиті?
Якщо продуктивність падає в певний час доби або, що ще неприємніше, проблема виникає на видаленої копії системи, в той час як на основному сервері все в порядку?
Що з цим робити далі?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью