| про SQL |
[Apr. 21st, 2011|03:40 pm] |
я так думаю что DDL это один сплошной ОГРОМНЫЙ проёб в SQL, и (быть может) он играет не последнюю роль в формировании (плохо осознанного) общественного недовольства эскуэлем.
АД состоит в том что DDL формулирует не состояние схемы данных а ПЕРЕХОД в него.
естественно этот переход жостко зависит от начального состояния, подразумевает его, и не приведёт к нужному результату если этот состояние изменится. поэтому: (1) полностью разрушен цикл отладки -- ошибочный DDL может изменить состояние, значит сразу после возникновения ошибки ваш исходник становится негодным для внесения в него исправлений -- пишите новый, пригодный для нового состояния схемы данных (такой же одноразовый как и предыдущий). Конечно можно придумать специальные условия, чтобы цикл отладки возсоздать, но осадочек остался. (2) уничтожена переносимость -- со своим DDL в другую базу не суйся, никто вам не гарантирует одинаковости исходных состояний двух инстансов базы (сидите изобретайте специальные условия чтобы самостоятельно гарантировать эту идентичность, а потом удивляйтесь раз за разом откуда разница пролезла) (3) затруднено тиражирование(пересоздание) БД -- ваш инит-скрипт годен только для чистой БД. вносите изменения в инит-скрипт -- рабочий инстанс out-of-date; вносите изменения в рабочий инстанс -- инит-скрипт out-of-date. И трахайтесь с синхронизацией как хотите. На практике люди просто забивают на человеко-читаемые инит-скрипты и таскают за собой дампы со всемы вытекающими.
вещь в себе получается.
Гораздо было бы более ЗДРАВО (и более адекватно вцелом принятому в SQL уровню абстракции) формулировать СОСТОЯНИЕ, а переход в него пусть система ищет а не програмист! |
|
|