|
|
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
авторподсистема "SideKick" - некий аналог Эклипса для организации уже семантического разбора текста, плюс куча плагинов вокруг этого. Короче говоря, можно сделать себе свой Эклипс для своих конкретных нужд, которым на порядок удобнее пользоваться, чем тем же эклипсом, нетбинсом, Идеей и пр. ото ж всегда так. Сначала пишется консольная прога, а потом чтобы работать с ней - разрабатывается страшное Затмение. Или СетеБобы. Потом они признаются слишком громоздкими и цикл повторяется. Анек про кодера с шампунем - намылить голову - смыть - повторить.... Ну тут главное вовремя назвать себя методологом и больше не прогать, и даже не учить как прогать - а учить как руководить учиетлями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 14:35:14 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovавторподсистема "SideKick" - некий аналог Эклипса для организации уже семантического разбора текста, плюс куча плагинов вокруг этого. Короче говоря, можно сделать себе свой Эклипс для своих конкретных нужд, которым на порядок удобнее пользоваться, чем тем же эклипсом, нетбинсом, Идеей и пр. ото ж всегда так. Сначала пишется консольная прога, а потом чтобы работать с ней - разрабатывается страшное Затмение. Или СетеБобы. Потом они признаются слишком громоздкими и цикл повторяется. Анек про кодера с шампунем - намылить голову - смыть - повторить.... Ну тут главное вовремя назвать себя методологом и больше не прогать, и даже не учить как прогать - а учить как руководить учиетлями. Таки да. Но, в частности у JEdit есть реальный потенциал и для консольной независимой утилиты. Об этом след. пост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 14:53:58 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим НПонятно, что сейчас там нет проверки на комментарии и возможно множество других нюансов, но зато прозрачно и просто. Может и просто, но не функционально. Раз уж вспомнились текстовые редакторы, то продолжу эту линию. Посмотри на SublimeText, на его правила задания синтаксиса. Там есть понимание некоего "scope", т.е. области кода. Хорошая штука, имхо, можно от неё плясать. Имеющиеся типовые метки кода (для goto symbol) предназначены, в основном, для того, чтобы прыгнуть в тексте на начало участка, например, на заголовок процедуры, а вот где конец этой процедуры, как правило, этим меткам не важно. Далее посмотри на JEdit. У него есть мощные парсеры кода, которые можно от него оторвать (вроде бы, я как-то видел какой-то проект, где было сказано, что используется разбор от JEdit, не помню точно, может быть это был тоже какой-то велоредактор. Лицензия вроде позволяет, а если поделиться своими доработками, то всем только лучше будет). У него правила для синтаксиса задаются по мотивам эмаксовых mode, кроме регулярок есть и другие способы. Имеется взаимосвязь между mode. Например, если при разборе html встречается код на javascript, то можно указать, что разбором javascript-а будет заниматься соответствующий mode. Или можно задать ряд общих правил, например, разбор комментариев, а в других mode их подмешивать. Но вот явных scope кода вроде как нет. Не помешало бы их добавить, причём реализовать правила корректного определения границ области. Например, чтобы определить границы "begin-end" всего блока кода как тела процедуры, нужно игнорировать или понимать внутренние вложенные области с "begin-end", которые используются внутри sql-операторов (или прочие "end" как "if-end"). Короче говоря, есть реальный потенциал для задания правил разбора SQL, под разные диалекты. Посмотри на плагины SQL и PelczarSql . Там есть примеры организации конфигурируемой системы для работы с метаданными для разных СУБД. Обращаю внимание, что у плагина "SQL" есть концептуальный недочёт - он подразумевает, что у сервера СУБД на самом верхнем уровне есть система всяких "schema" или пользователей как "owner" объектов и т.п. Это не всегда так, у sqlite, FireBird и др. не имеют явных "schema" (точнее, они по-другому управляются). Ну, и там есть примеры организации работы с сервером для выполнения sql-запросов и скриптов. Есть дополнительные плюшки, например, извлечение параметров для sql-запроса из комментариев. Есть примеры парсеров для разбивки текста на отдельные sql-команды, ну и куча всего. Итого, можно задать правила для разбора sql-исходников, под разные диалекты. Связать синтаксические правила с системой метаданных для каждой СУБД, плюс задать правила для логики построения БД, т.е. очередность создания элементов. Это уже реальная почва для универсальных выкрутасов. Тогда от пользователя, фактически, нужны лишь правила для именования объектов согласно потребностям проекта. Далее, можно это дело подкрепить функционалом от плагина Beauty - форматирование кода на основе тех же универсальных парсеров для синтаксического разбора (а также там для ряда языков отдельный семантический анализ). Ну а для манипулирования исходниками можно приспособить Fossil . Он все данные хранит внутри одной sqlite-базы, причём это не только система контроля версий, но и багтрекер с вики в одном флаконе не отходя от кассы. Взаимодействие с git-ом у него из коробки. Можно дополнить fossil-базу своими таблицами, куда помещать разобранные sql-исходники. Через обычный SQL получаем возможность лепить sql-скрипты на любой чих, к тому же используя СКВ и т.д. Думаю, фантазия понятна. Таким образом, необходимо спроектировать правила для разбора SQL, задать правила для манипулирования метаданными из БД, и дать простор для пользователя "селектить" себе нужные sql-скрипты - это и есть мечта конечного пользователя. Ему для своего проекта достаточно задать шаблоны для именования объектов и настроить предпочтения для форматирования. Далее подавай на вход любые sql-скрипты и затем извлекай любые результаты, подкреплённые версиями, плюс документация с требованиями/задачами по проекту. Ещё нужно подумать над комментариями. Внутри блоков комментарии сохраняются как есть. Для исходных sql-скриптов можно задать требования, задающие привязку комментариев к участкам кода, например, многострочные "/* ... */" - предшествуют целевому объекту/коду, "-- ..." - после. Нужно выделять комментарии-доки (дополнительная звёздочка и как "--- ..."). Кроме документации там будут опции/аннотации для сборки и т.п. А также через них можно определять или идентифицировать анонимные блоки кода для исполнения (при создании/накатов). Плюс нужны заготовки для "селектов" с целью формирования указаний для миграторов. В том числе, нужно предусмотреть выборку конкретных sql-операторов и прочих операций, чётко заданных в явной последовательности. Не помешал бы и какой-то придворный мигратор, раз уж такая пьянка. И, в целом, можно не только формировать скрипты, но и исполнять тут же. Это уже какая-то реальная IDE. Возможно, это даже основа для дальнейшего развития всей жаба-инфраструктуры, как развитие компонентной технологии и аспектного программирования, плюс задатки для моделирования :)) В общем, рекомендую по утрам подумать над фантазиями. Или над другим вариантом - а стоит ли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 15:08:56 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
PSV100Об этом след. пост. )) это ж надо как ты умеешь писать. Твою бы энергию да в мирное русло)). Не напишешь как совместить веб и десктоп в одной программе. Ака сильверлайт или Google GWT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 15:12:25 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
добавлю, т.к. стало забываться - JavaFX..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 15:16:15 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123)) это ж надо как ты умеешь писать. Твою бы энергию да в мирное русло)). Не напишешь как совместить веб и десктоп в одной программе. Ака сильверлайт или Google GWT. Ну и чего кривого я написал ? Если жизнь заставит, то всё вполне реализуемо. Вопрос в том, оправдывает ли целевой проект такую возню. Что касается десктопа с вэбом. Вроде как интерпрайз уже выкатил свои решения. Если не ошибаюсь, тот же JSF якобы универсальная спецификация, не зависимая от среды рендеринга или клиентских устройств, от десктопов и серверов. В том же Эклипсе есть какой-то проект, типа "эклипс в вебе". По поводу JavaFX. В инете есть слухи, что уже сейчас идёт работа над 3-й версией, которая будет не совместима с текущей второй. При таком отношении Оракла к десктоп технологиям в это можно элементарно поверить. И, в целом, для десктопа в жабе полная лажа. Свинг можно хоронить, у SWT хватает заморочек, а о JavaFX говорить как о промышленной платформе пока нет почвы. В упомянутом здесь Rust-е и то как-то больше надежды. Сейчас мазиловцы вместе с Самсунгом лепят новый браузер на Rust-е, с кроссплатформенным GUI. Имхо, GUI-почва для своих разработок найдётся. Через LLVM можно задействовать какой-нибудь Emscripten для компиляции javaScript-а. Думаю, что на базе новомодного Asm.js скоро будут расти фреймворки вида Bootstrap. А когда встанет реальная задача реализовать и десктоп-GUI, и веб для одного и того же функционального ядра проектов (и такая задача реально наклёвывается), то обязательно поделюсь уже конкретными решениями. Кое-какими своими мыслями на счёт построения интерфейсов, гибких, с реактивностью и пр., могу поделиться здесь . P.S. Сорри за много букв ранее, просто для меня актуальна тема поиска правильной методики разработки БД. А энергия иссякает, мне в ближайшее время уже не до интернета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 16:37:43 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
В упомянутом здесь Rust-е и то как-то больше надежды. так и джава надежды внушала. райт онс ран энивере... или как там было. В начале большого пути. Делфи хоронят, и похороны такие долгие и счастливые... свингов хоронят.... кого еще зарыть - дотнета? Руста и хоронить может не станут. Выкинут опенсорсом без гробика.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 17:07:20 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
PSV100F якобы универсальная спецификация, не зависимая от среды рендеринга или клиентских устройствВы links видели? Не linx, а именно links. Или, скажем, IBM Webexplorer? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 18:34:44 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovтак и джава надежды внушала. райт онс ран энивере... или как там было. В начале большого пути. Делфи хоронят, и похороны такие долгие и счастливые... свингов хоронят.... кого еще зарыть - дотнета? Руста и хоронить может не станут. Выкинут опенсорсом без гробика.... Прошу под "хоронить" не воспринимать всё так буквально. Свинг как технология заморожена, при этом ситуация с десктоп-GUI туманна. JavaFX пока дело рискованное, к тому же хотелось бы более кардинальных продвижений на счёт потребления ресурсов и по активнее шевеления интерфейса. Не смотря на новые низкоуровневые движки ситуация на счёт прожорливости и тормознутости существенно не изменилась, что ещё может быть иногда актуально, ибо в корпоративе не везде всё супер-современное. SWT - вообще-то, это только нижняя часть айсберга, которая без ядра Эклипса (JFace или что там) фактически не живёт сама по себе. В рамках дополнительного GUI-функционала имеется фактически один придворный проект (nebula или что-то в этом роде). Как-то муторно в этом Эклипсе, если спустится на более низкий уровень и ваять свои виджеты, или расширять. Короче говоря, на том же Свинге ещё будут новые проекты, не смотря на заморозку, ну и плюс поддержка имеющегося. И будет он жить как та же дельфи (хотя дельфу всё таки развивают). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 18:45:34 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
PSV100SWT - вообще-то, это только нижняя часть айсберга, которая без ядра Эклипса (JFace или что там) фактически не живёт сама по себе. Живет вроде. SWT вполне себе работает без Eclipse RCP. Можно хоть под идеей разрабатывать. Я так делал когда-то давно. В инете есть презентация Антона Кекса, где он рассказывает как пилит проект на SWT. В идее. Можно ли JFace юзать без RCP - не знаю. Но уверен что можно. Это просто удобная обертка над SWT. Она в RCP никак не должна быть интегрирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 19:10:11 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovPSV100F якобы универсальная спецификация, не зависимая от среды рендеринга или клиентских устройствВы links видели? Не linx, а именно links. Или, скажем, IBM Webexplorer? Не совсем понимаю о чём именно речь. Если о том, что спецификацию JSF невозможно так универсально реализовать как задекларировано, то это такова технология от жабо-промышленности. Я как раз и писал с намёком, что у энтерпрайза соответствующие решения. Есть и альтернативы, проекты вокруг эклипс-а вполне себе мэйнстрим-уровень, и что-то вполне реально применимо в современных условиях. Если отбросить политические причины (приказы партии не обсуждаем), лично я хорошенько взвешу, стоит ли брать, к примеру, SWT и RAP. Не исключаю, если уж нужно как-то максимально приблизить рядом разработку под веб и десктоп, то, например, может быть проще задействовать какой-то ходовой фреймворк для HTML, а для GUI взять какой-то HTMLLayout или вообще WebKit (хотя у HTMLLayout удобнее функционал на уровне полноценного десктопа, к тому же где-то делали интеграцию HTMLLayout в SWT, но я не в курсе, чем дело закончилось, ну и HTMLLayout пока только под винду). P.S. Всё таки это опять оффтоп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 19:26:30 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
BlazkowiczPSV100SWT - вообще-то, это только нижняя часть айсберга, которая без ядра Эклипса (JFace или что там) фактически не живёт сама по себе. Живет вроде. SWT вполне себе работает без Eclipse RCP. Можно хоть под идеей разрабатывать. Я так делал когда-то давно. В инете есть презентация Антона Кекса, где он рассказывает как пилит проект на SWT. В идее. Можно ли JFace юзать без RCP - не знаю. Но уверен что можно. Это просто удобная обертка над SWT. Она в RCP никак не должна быть интегрирована. Вполне может быть. Я в потроха Эклипса заглядывал очень давно. Когда-то был порт SWT поверх FoxToolkit, С++ библиотеки. Я с ним побаловался, в те времена с ним эклипс шевелился по приятнее, и памяти вроде меньше жрал. Заодно посмотрел на его устройство. Тогда вроде даже в документации писали, что не всё так просто на счёт SWT (или возможно как бы преподносилось, что типа вам для правильной жизни одного SWT мало, обязательно берите выше. Как-то так. Всё может быть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 19:36:51 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
PSV100Ну, не знаю, если связываться с регулярками, то процесс написания конфигураций для проекта будет похож на написание какого-то sql-mode для эмакса, не всех подобное привлекает. Заранее подготовленные регулярки можно запрятать в отдельный конфиг(конфиги), штобы не пугать, ну а при необходимости можно просто в них залесть и донатсроить под свой проект. Разбор текста это круто, но тулза пока на ранних стадиях, я еще сам не знаю как все должно быть, еще много вопросов. Если она перерастет во что то более менее серьезное, то можно и о полноценном разборе подумать и прикрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 22:16:05 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
PSV100Максим НПонятно, что сейчас там нет проверки на комментарии и возможно множество других нюансов, но зато прозрачно и просто. Может и просто, но не функционально. Раз уж вспомнились текстовые редакторы, то продолжу эту линию. Посмотри на SublimeText, на его правила задания синтаксиса. Там есть понимание некоего "scope", т.е. области кода. Хорошая штука, имхо, можно от неё плясать. Имеющиеся типовые метки кода (для goto symbol) предназначены, в основном, для того, чтобы прыгнуть в тексте на начало участка, например, на заголовок процедуры, а вот где конец этой процедуры, как правило, этим меткам не важно. Далее посмотри на JEdit. У него есть мощные парсеры кода, которые можно от него оторвать (вроде бы, я как-то видел какой-то проект, где было сказано, что используется разбор от JEdit, не помню точно, может быть это был тоже какой-то велоредактор. Лицензия вроде позволяет, а если поделиться своими доработками, то всем только лучше будет). У него правила для синтаксиса задаются по мотивам эмаксовых mode, кроме регулярок есть и другие способы. Имеется взаимосвязь между mode. Например, если при разборе html встречается код на javascript, то можно указать, что разбором javascript-а будет заниматься соответствующий mode. Или можно задать ряд общих правил, например, разбор комментариев, а в других mode их подмешивать. Но вот явных scope кода вроде как нет. Не помешало бы их добавить, причём реализовать правила корректного определения границ области. Например, чтобы определить границы "begin-end" всего блока кода как тела процедуры, нужно игнорировать или понимать внутренние вложенные области с "begin-end", которые используются внутри sql-операторов (или прочие "end" как "if-end"). Короче говоря, есть реальный потенциал для задания правил разбора SQL, под разные диалекты. Посмотри на плагины SQL и PelczarSql . Там есть примеры организации конфигурируемой системы для работы с метаданными для разных СУБД. Обращаю внимание, что у плагина "SQL" есть концептуальный недочёт - он подразумевает, что у сервера СУБД на самом верхнем уровне есть система всяких "schema" или пользователей как "owner" объектов и т.п. Это не всегда так, у sqlite, FireBird и др. не имеют явных "schema" (точнее, они по-другому управляются). Ну, и там есть примеры организации работы с сервером для выполнения sql-запросов и скриптов. Есть дополнительные плюшки, например, извлечение параметров для sql-запроса из комментариев. Есть примеры парсеров для разбивки текста на отдельные sql-команды, ну и куча всего. Итого, можно задать правила для разбора sql-исходников, под разные диалекты. Связать синтаксические правила с системой метаданных для каждой СУБД, плюс задать правила для логики построения БД, т.е. очередность создания элементов. Это уже реальная почва для универсальных выкрутасов. Тогда от пользователя, фактически, нужны лишь правила для именования объектов согласно потребностям проекта. Далее, можно это дело подкрепить функционалом от плагина Beauty - форматирование кода на основе тех же универсальных парсеров для синтаксического разбора (а также там для ряда языков отдельный семантический анализ). Ну а для манипулирования исходниками можно приспособить Fossil . Он все данные хранит внутри одной sqlite-базы, причём это не только система контроля версий, но и багтрекер с вики в одном флаконе не отходя от кассы. Взаимодействие с git-ом у него из коробки. Можно дополнить fossil-базу своими таблицами, куда помещать разобранные sql-исходники. Через обычный SQL получаем возможность лепить sql-скрипты на любой чих, к тому же используя СКВ и т.д. Думаю, фантазия понятна. Таким образом, необходимо спроектировать правила для разбора SQL, задать правила для манипулирования метаданными из БД, и дать простор для пользователя "селектить" себе нужные sql-скрипты - это и есть мечта конечного пользователя. Ему для своего проекта достаточно задать шаблоны для именования объектов и настроить предпочтения для форматирования. Далее подавай на вход любые sql-скрипты и затем извлекай любые результаты, подкреплённые версиями, плюс документация с требованиями/задачами по проекту. Ещё нужно подумать над комментариями. Внутри блоков комментарии сохраняются как есть. Для исходных sql-скриптов можно задать требования, задающие привязку комментариев к участкам кода, например, многострочные "/* ... */" - предшествуют целевому объекту/коду, "-- ..." - после. Нужно выделять комментарии-доки (дополнительная звёздочка и как "--- ..."). Кроме документации там будут опции/аннотации для сборки и т.п. А также через них можно определять или идентифицировать анонимные блоки кода для исполнения (при создании/накатов). Плюс нужны заготовки для "селектов" с целью формирования указаний для миграторов. В том числе, нужно предусмотреть выборку конкретных sql-операторов и прочих операций, чётко заданных в явной последовательности. Не помешал бы и какой-то придворный мигратор, раз уж такая пьянка. И, в целом, можно не только формировать скрипты, но и исполнять тут же. Это уже какая-то реальная IDE. Возможно, это даже основа для дальнейшего развития всей жаба-инфраструктуры, как развитие компонентной технологии и аспектного программирования, плюс задатки для моделирования :)) В общем, рекомендую по утрам подумать над фантазиями. Или над другим вариантом - а стоит ли... За инфу спасибо, буду думать. Но сейчас я соображаю на счет интеграции и совместной работы с Ликвибэйс (ну или любым другим мигратором). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2013, 22:22:46 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
авторРазбор текста это круто, но тулза пока на ранних стадиях, я еще сам не знаю как все должно быть, еще много вопросов. Если она перерастет во что то более менее серьезное, то можно и о полноценном разборе подумать и прикрутить Есть мнение, что в таких случаях можно кроме кодинга заниматься проработкой и формулированием концепции. Даже не кроме, а прямо вместо. Начинать можно со стандартной формулы изобретения "А это Б отличающийся тем, что ....", формулирование "идеального конечного результата" по ТРИЗ и тд. Для меня пока все еще непонятно, - что это . Но может это потому, что я недостаточно хорошо соображаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 10:06:42 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Vladimir BaskakovавторРазбор текста это круто, но тулза пока на ранних стадиях, я еще сам не знаю как все должно быть, еще много вопросов. Если она перерастет во что то более менее серьезное, то можно и о полноценном разборе подумать и прикрутить Есть мнение, что в таких случаях можно кроме кодинга заниматься проработкой и формулированием концепции. Даже не кроме, а прямо вместо. Начинать можно со стандартной формулы изобретения "А это Б отличающийся тем, что ....", формулирование "идеального конечного результата" по ТРИЗ и тд. Для меня пока все еще непонятно, - что это . Но может это потому, что я недостаточно хорошо соображаю. У меня тоже пока много вопросов. Одно время загорелся идеей, чего то налабал, а увидев это "чего то" начались вопросы. В общем нормальный процесс, я сейчас переосмысливаю... В общем некая тулзня, которая помогает применять и использовать некие бестпрактисы при разработке БД-приложений, стандартизировать его (причем не жестко, а настраиваемо). Как то так. По мере прояснения ситуации буду отписываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 10:54:06 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Ня сейчас переосмысливаю... вполне нормально. Если специализация на БД, то 3-ка продуктов обзорно обязательна - ErWin, Ликвибэйс, РоднаяIDE_СУБД. Хотя бы неделю на каждую. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 11:47:15 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
ну да. некие бестпрактисы при разработке БД-приложений - а собственно - какие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 11:59:09 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н, Чтобы не связываться с разбором текста и прочими сложностями, можно попробовать подойти к решению задачи с другой стороны, плясать от БД. У меня когда-то были мысли сделать некий создаватель специфичных дампов БД. Вместо сваливания всё в один сплошной sql-скрипт можно разбрасывать объекты по определенным файлам. Нужно задать конфигурационные правила, где под разные СУБД указаны типы объектов и их взаимосвязи, шаблоны для SQL-запросов для извлечения метаданных (примеры приводились через плагины для JEdit), как распределять файлы по каталогам и что помещать в каждый файл и т.д. Теперь можно доставать объекты из БД, формировать тексты DDL (опять же, не помешали бы опции по форматированию кода) и составлять целевые файлы. При этом (опционально, конечно) можно контролировать необходимость обновления уже существующего файла, т.е. утилита сама формирует нужный текст и соответственно знает, что должно быть в файле, проверив его содержимое можно понять, обновлять его или нет. И тогда можно запускать утилиту и она как бы будет обновлять только необходимое. Затем без возни в СКВ через обычный просмотр каталога и файлов уже только по датам понимать, что чего изменилось. Нет навязывания способа как работать с БД, т.е. объекты в БД можно создавать через IDE, вручную через скрипты и т.д. Затем, кому нужно, может сделать такой дамп, проанализировать, обновить СКВ и т.д. Причём подобные дампы не помешают и тем, кто вручную ведёт создание sql-исходников. Например, исходники содержат "create" и "alter" и пр. в своей строгой исторической последовательности, а где-то рядом через автодампы формируются те же "create" в текущем актуальном состоянии. Для генерации sql-скриптов (а то и их самостоятельного выполнения), чтобы создавать БД на основе такого дампа, нужно ещё пару вещей. По мотивам Case-средств нужно дополнить систему шаблонов для скриптов организацией неких "pre-" и "post"-операций, с возможностью задания для каждого объекта, для подкаталога (т.е. как для некоего модуля), всей БД. Можно генерировать скрипты лишь по части дампа, указав конкретно такие-то объекты, папки и т.д. Единственное что, поскольку нет разбора содержимого каждого файла, то это вынуждает каждый объект держать, фактически, в отдельном файле. Но это м.б. и плюс, файлы создаются автоматом, по структуре каталогов и по именам файлов уже сразу можно понимать структуру БД (типа аналог "db-explorer"-а). Для формирования файлов в дампе и последующего создания БД нужна какая-нибудь техника для извлечения нужных данных из таблиц и их занесение в БД. Например, под FireBird есть маленькая удобная утилитка для копирования и сравнения данных. Там есть пример удобного DSL вместо XML-портянки, который можно размещать где-то в конфигурации проекта. Утилита при создании дампа может подготовить секции из соответствующих "insert"-ов. Такие дампы могут помочь и при работе со всякими миграторами. Утилита может обновлять "repeatable"-скрипты, т.е. с "create or replace/alter" объекта. При этом эти файлы будут обновляться только по потребности, и миграторы смогут корректно реагировать на модификацию объектов. И вроде как есть потенциал для частичного выполнения операций (как создания дампов, так и "create" объектов), плюс другие плюшки (тот же дамп можно сразу выгружать в один sql-файл). Можно попробовать при выгрузке дампа подкрепить код процедур и прочих объектов каким-нибудь форматером, типа AStyle, но под sql. И т.д. Имхо, подобный функционал может оказаться вполне востребован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 16:06:55 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
PSV100, чел пошёл Ликвибэйс изучать (работать), а ты его опять загрузил)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2013, 16:10:39 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovну да. некие бестпрактисы при разработке БД-приложений - а собственно - какие? В частности приведенные в оракловом документе, несколько страниц назад, так же различного рода соглашения (об именовании, порядке сборки, тестировании, оформления), применяемые в коллективе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 12:26:31 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Liquibase штука интересная и полезная (ознокомился еще раз, думал может чего нибудь не допонял), но для несколько других целей. Кстати, зачем описывать creat'ы и alter'ы в xml-е, т.е. это типа DSL, чтобы с sql'ем на замарачиваться? Причем модификация таблиц на рабочей базе это довольно сложная операция, зависящая от конкретного случая, и отдавать ее на откуп кросс-базовой тулзе я бы не стал. Т.е. лично я xml-описанием точно пользоваться не буду, только чистый sql. Т.о. от всех прелестей остается только сама накатка скриптов (которые опять же нужно в чейнджсеты оформлять), логирование их установки в 2-х табличках, откат, обработка исключительных ситуаций и т.д. Т.о. в итоге работы с ней получим кучу разношерстных sql-скриптов, т.н. чейнджсетов, причем лихо перемешанных с xml-ем. Эти скрипты можно накатить на разные базы, все будет залогировано, повторная накатка разрулена, конфликты обработаны, все ок. Но вот разработчику работать с такими файлами мягко говоря будет не удобно. Т.е. найти код того или иного объекта, посмотреть код связанных с ним объектов, посмотреть историю его изменения и т.д. Повторюсь, все зависит от подхода к разработке, от организации. Т.е. если юзать IDE, которая показывает объекты, изменяет их как вам надо по живому, потом даже какой то скрипт выдает, то конечно можно просто хранить полученные миграционные скрипты в ликвибэсовских чейнджсетах, в файликах и радоваться жизни. И это очень здорово если в такой схеме вас все устраивает, т.к. трудозатрат минимум. И данная, описываемая здесь тулза ничем вам не поможет, а только подросит работы (немного). Но если работа с ИДЕ и полная зависимость от нее вас не устраивает (как меня и PSV100, а может быть вдруг и еще кого-нибудь), по много раз описанным здесь причинам, то возникают некоторые проблемы (так же много раз здесь описанные), которые я и пытаюсь (частично) решить представленной тулзой. Эта тулза способна орагнизовать хранение текущего кода БД. Т.е. я смотрю в СКВ и вижу последнюю (текущюю) версию какой-либо процедуры, а рядом вижу гранты для нее (причем для разных баз они могут быть разные, легко), ее юнит тесты, некий обслуживающий код (например код регистрации в системе) и еще что угодно. ПС возникла идея добавить функционал генерации ликвибейсовских чейнджсетов, т.е. указываются объекты (их имена или критерии поиска), а на выходе получается офрмленный чэйенджсет, возможно уже сохраненный в определенном месте репозитория с определенным именем и номером сверсии. А так же связь между объектом и его чейнджсетами. Но над этим надо еще подумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 13:53:32 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Но если работа с ИДЕ и полная зависимость от нее вас не устраивает (как меня и PSV100, а может быть вдруг и еще кого-нибудь), по много раз описанным здесь причинам, то возникают некоторые проблемы (так же много раз здесь описанные), которые я и пытаюсь (частично) решить представленной тулзой а где зависимость от ИДЕ. Альтерящий скрипт родился - хоть из среды, хоть из емакса страшного, и его надо засунуть. или - новая версия полного криэйта объекта, написана ли рукой в емаксе или автовыгрузкой из базы родилась в ИДЕ, и ее надо засунуть. Тулза по сути - структурированное хоронилище, в котором это рукописное или выгруженно-сформированное закопано. Я не против, но слоган "Снимаю запои зависимость от ИДЕ" не кажется мне отражающим правду жизни.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 17:42:11 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
ну и да. Захороненное по файлам и папкам должно быть легко находимо и извлекаемо для нового редактирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 17:45:39 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovну и да. Захороненное по файлам и папкам должно быть легко находимо и извлекаемо для нового редактирования. Это одно из ключевых свойств, причем нахождение для редактирования/просмотра не только по физическим параметрам (файлик такой-то, папка такая-то, время сохдания/изменения такое-то), но по логическим: "найти все таблицы из модуля <<<Заработная плата>>". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 20:36:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38277305&tid=2129029]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 269ms |
| total: | 444ms |

| 0 / 0 |
