|
|
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н, Любовь к ООП это диагноз. А вот в РСУБД ооп не пускают. И это правильно))))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 10:38:19 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н1. Пробовал JAXB, загружаю xml-файлы в классы, но дальше проблема как с этими классами работать, как делать запросы и выборки. 2. Есть идея заюзать inmemory-database (например HSQLDB) через ORM (например Hibernate) и сеарелизовать все это дело в xml-файлы, но как то навороченно получается. В общем прошу совета. Есть возможность делать запросы к объектам при помощи XPATH. То есть ты загружаешь при помощи JAXB из XML в JavaBean, а потом по объектной модели делаешь запросы XPath (аккуратно). Я столкнулся с тем, что при больших объектных деревьях, лучще использовать абсолютные пути, например, не пользоваться // и *. Ну и сортировки по-моему в XPATH нету. Код: java 1. 2. 3. 4. 5. Подробнее см. api org.apache.commons.jxpath.JXPathContext от appache. И ещё, если ты пишешь что-то универсальное, то в этом случае очень помогает BeanCommon. Например, Object value = PropertyUtils.getProperty("любой объект", "имя свойства") Кстати "имя свойства" может быть и сложным. Например, "nsi.list[5].mapList(vasa).id" В объекте в nsi есть объект со свойством list - массив или List, взять его 6-ой элемент в котором есть HashMap с именем mapList в котором есть ключ "vasa" а в значении объект со свойством id. Подробнее см. api BeanCommon от appache. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 13:37:01 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123Максим Н, Ты упорно хочешь разделить по живому таблицу и FK по разным файлам. Тогда как по рознь не живут. Это как пример, яркий пример, у меня по этому поводу пунктик (а может быть даже целый пункт, бывает удобно развернуть базу, накатив таблицы, а потом ФК, не парясь с последовательностью, да и вообще мало ли какие случаи бывают). Но я не кого не заставляю так делать, просто показываю как можно будет сделать, гибкость, что можно хранить объекты как угодно где угодно, а потом без труда собрать, организовать в другую структуру и т.д. и т.п. Все это зависит от настройки, пртотипы xml-ин я уже показывал выше. А то что в среднестатистической ИДЕ'шке при просмотре кода таблицы вам вываливается все с потрохами (тэйблспэйсами, параметрами хранения, триггерами индексами и прочими) это нормально? Petro123У тебя ложки и вилки в разных ящиках на кухне? В одном, но разделены перегородкой, слева вилки - справа ложки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 14:00:24 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим НPetro123У тебя ложки и вилки в разных ящиках на кухне? В одном, но разделены перегородкой, слева вилки - справа ложки. У меня тоже )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 15:30:44 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим НLeonidv, авторЭто решается средствами типа maven, при большом желании. В точку. Я как раз начинал с Ant'а (потом даже пробовал заюзать Thor)(Maven наверное тоже подошел бы, но он имхо немного для других целей...). Тут maven как раз хорошо подходит, хотя, конечно, там overhead'а будет слишком много. В целом, я понял, что вы хотите. Спасибо за развернутый ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 15:31:58 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н, Я и говорю, что в обычной схеме, fk в одном create table. Ты их по файлам раскидывать сам будешь? И где тогда автоматизация? Для ложек файл это ящик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 18:31:45 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим НРазве процесс создания и ее сборки из исходников, хранящихся в СКВ, это не одно и то же? А как же ночные билды?Отделяйте процесс разработки от процесса тестирования. И "оба два" от реальной системы клиента. У разработки и тестирования разные цели и разные задачи. Одна из задач разработки - обеспечение оборачиваемости. А это противоречит одной из задач реальной системы - обеспечение стабильности. С тестированием всё ещё проще - его нельзя сокращать. Если есть баг, проявляющийся только после недели аптайма - можно не тестировать его исправление, но нельзя сократить время этого теста.За частую разработчики не имеют никакого доступа к продакшн-базам (коммерческая тайна, соображения безопасности, 152-й фз и т.д.), не говоря уже о рабочих бэкапах и т.д."Не имеют никакого доступа" ещё не значит "не могут получить". Кроме того, в реальной системе, которая уже отчуждена и работает у клиента порядок будет именно таким, как расписал я.Я же говорю о системных грантах, системных пользователях, для разработчиков, тестировщиков администраторов и т.д. Кто то может править процедуры, кто то таблицы, кто то только для отдельных модулей и т.д.Ответьте на один простой вопрос - кто является владельцем схемы вашего приложения?И почему не может быть скриптов, которые обновляют тестовые данные (да и вообще всю структуру), покореженные разработчиками и тестировщиками за рабочий день?Зачем? Если разработчик или/и тестеровщик покорёжили что-то, это что-то создаётся с нуля или разворачивается из бэкапа. Без всяких хитроумных скриптов с неестественым интеллектом.Почему я не могу собрать свежую версию базы (у которой еще нет рабочего дампа, нет релизы), развернуть на отдельной машине например для тестов?Можете, но если "ещё нет рабочего дампа" это должно быть или создание нового эталона или обновление существующего. В реальности должно быть и то и другое. Первое для новых клиентов, второе - для сущестующих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 19:19:34 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, авторЗачем? Если разработчик или/и тестеровщик покорёжили что-то, это что-то создаётся с нуля или разворачивается из бэкапа. Без всяких хитроумных скриптов с неестественым интеллектом. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 20:41:47 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123Я и говорю, что в обычной схеме, fk в одном create table. Во многих РСУБД (про которые знаю) если создавать FK прямо в create table, то он получит сгенеренное непонятное имя, а вот если alter table'ом, то можно задать имя, оформленное по внутренним разработческим стандартам (если они есть) и во время ошибок ссылочной целостности точно знать с какой таблицей проблема. Поэтому можно рассматривать (но опять же не обязательно) FK как отдельный именованный объект (тоже и с ПК и констрейнтами). Ну и имхо здорово если есть возможность как то выделить отдельно эти вещи, отдельно накатить или не накатить. Petro123 Ты их по файлам раскидывать сам будешь? И где тогда автоматизация? По файлам не обязательно расскидывать, можно в одном, но выделив например комментариями. Если предполагается ручное программирование (сторонником чего я являюсь), то нет никакого труда выделить отдельно ДДЛ таблицы и ее ФК, ПК в отдельные файлы или в отдельные операторы при создании таблицы. Если чрез визуалку, то есть средства типа DBMS_METADATA (для других баз наверное тоже что то похожеее есть), которые позволяют сгенерить код соданного объекта в нужном виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 22:19:37 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123Максим Н, Любовь к ООП это диагноз. А вот в РСУБД ооп не пускают. И это правильно))))) LOL Не в ООП дело. Просто для меня странно сложившееся отношение к разработке БД. Т.е. если например Java-программист разрабатывает пользовательский интерфейс и использует какой-либо визуальный построитель форм, то это считается не круто. Считается, что он плохо разбирается в этом вопросе, а с использованием билдера (и само собой нагенеренного кода) нельзя добиться большей гибкости и производительности. Ну а крутой специалист сделает все ручками, ну или по крайней мере будет в курсе какой код генерится, что имеено он делает, ну а где лучше написать самостоятельно. А вот в мире БД надизайнить базу в навороченном визуальном интерфейсе, выгрузить сгенеренный код (или вообще целый дамп), иногда даже не задумываясь что там нагенерилось, и почему именно такой, это вполне нормально. Несмотря на то, что большинство СУБД обладают своим собственным языком, с широкими возможностями и особенностями, и визуальными средствами всех тонкостей не опишешь. Но многими разработчиками он воспринимается как некий низкоуровневый машинный код, на котором ИДЕ общается с СУБД. Часто разработчикам приходится изучать не саму СУБД (или не только ее), а визуальный редактор для нее предназначенный, и зачастую сам этот редактор иногда и ассоциируется с СУБД. Люди становятся заложниками ИДЕшек. Я уже молчу что эти среды делают с исходным кодом объектов, доставая его из потрохов базы. Это сравнимо с декомпиляцией приложения. И такой подход навязывается многими инструментами, а вот инструментов с альтернативным подходом не так много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 22:44:43 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Шаров Сергей, Спасибо большое, за JXPathContext отдельное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 22:46:43 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н А если в одном файле, т.к нужна очередность операторов. То получаем скрипт. Банальный скрипт. Хочешь один. ... или 15. А еще нужно перенакатывать его. Поэтому пишут CREATE REPLACE PROCEDURE..... А еще пишут сначала мастер таблицу потом чилдрен потом fk а потом каскад. И это все руками. Ты же хочешь в одиночку GWT для бд написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 22:54:20 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, авторОтделяйте процесс разработки от процесса тестирования. И "оба два" от реальной системы клиента. У разработки и тестирования разные цели и разные задачи. Одна из задач разработки - обеспечение оборачиваемости. А это противоречит одной из задач реальной системы - обеспечение стабильности. С тестированием всё ещё проще - его нельзя сокращать. Если есть баг, проявляющийся только после недели аптайма - можно не тестировать его исправление, но нельзя сократить время этого теста. Согласен, способов и целей сборки может быть много, в зависимости от приложения и от того как оно разрабатывается. авторОтветьте на один простой вопрос - кто является владельцем схемы вашего приложения? Я не говорю про конкретное приложение, а про общий случай. авторЗачем? Если разработчик или/и тестеровщик покорёжили что-то, это что-то создаётся с нуля или разворачивается из бэкапа. Без всяких хитроумных скриптов с неестественым интеллектом. Иногда процесс создания базы с нуля или развертывания из бэкапа (которого просто может и не быть еще, т.к. база в разработке) может быть весьма время затратным. Так что невижу ничего страшного просто накатить тестовые или (и) справочные данные на конкретные таблицы. Ну и не вижу в этих скриптах ничего хтроумного и неестественного, наоборот все просто как хозяйственное мыло - простые понятные скрипты с DML'ем лежат в СКВ и мы их просто достаем по необходимости для конкретных таблиц конкретного модуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 22:58:06 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н, 》 Люди становятся заложниками ИДЕшек. Это что то новое. Расшифруй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 23:04:17 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123Максим Н А если в одном файле, т.к нужна очередность операторов. То получаем скрипт. Банальный скрипт. Хочешь один. ... или 15. А еще нужно перенакатывать его. Поэтому пишут CREATE REPLACE PROCEDURE..... А еще пишут сначала мастер таблицу потом чилдрен потом fk а потом каскад. И это все руками. Ты же хочешь в одиночку GWT для бд написать. Очредность операторов это уже к вопросам сборки относится. Я предлагаю хранить объекты в структурированном виде в СКВ (причем в конф. файлах описанно что и где именно), а вот как их собирать в скрипт тут возможны любые варианты в зависимости от потребностей разработчика, это тоже настривается (я тут писал уже про опции сборки). GWT не хочу, только нативный sql, но помочь хранить его организованно и структурированно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 23:08:02 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123Максим Н, 》 Люди становятся заложниками ИДЕшек. Это что то новое. Расшифруй. Сами ИДЕ навязвают способ работы с БД, нашел объект в дереве (обычно жестком и ненастраиваемом), наклацал кнопок и тут же этот объект изменился в подключенной базе (наживую получается), ну а потом предоставляются удобнейшие средства для того чтобы аккуратно выковырить код этого объекта и засунуть в дамп, или сделать diff скрипт с его предыдущей версией из другой базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 23:16:07 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н, Опять теория. У меня и сейчас скрипт в скв. Пришел к тебе программист. Он уже знает SQL. Где ему писать очередность Одного объекта из 2 х таблиц с каскадом? А потом расписаться за что? За спрингКонфиг и кучу файлов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 23:19:32 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н, Про ide. Не нравится вживую тогда erwin. Кто виноват что ты его пишешь но никогда не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 23:24:43 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123Максим Н, Про ide. Не нравится вживую тогда erwin. Кто виноват что ты его пишешь но никогда не видел. Принцип тот же самый что и с ИДЕшками, та же визуалка, та же кодогенерация. erwin я не пишу, возможно я не могу нормально объяснить свою идею. Чуть позже выложу ссылку на прототип, если есть интерес, тогда будет понятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2013, 23:37:09 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н......... Люди становятся заложниками ИДЕшек. .............. Сами ИДЕ навязвают способ работы с БД Максим! Вы хотите освободить от привычного и знакомого гнета ИДЕ заменив на непривычный - Вашей системы? Это хороший первый шаг к мировому господству. (шутка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2013, 09:07:24 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Vladimir BaskakovМаксим Н......... Люди становятся заложниками ИДЕшек. .............. Сами ИДЕ навязвают способ работы с БД Максим! Вы хотите освободить от привычного и знакомого гнета ИДЕ заменив на непривычный - Вашей системы? Это хороший первый шаг к мировому господству. (шутка) Почему бы и нет?(шутка) А если серьезно, мне просто нужен легкий и ненавязчивый инструмент, который подошел бы под вышеописанный способ работы с БД и ее кодом (которым я собственно и пользуюсь). То что ИДЕ это абсолютное зло, я не говорил, да и не считаю так, сам активно пользуюсь (но по своему), а IBExpert иногда даже снится мне по ночам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2013, 13:13:54 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим На IBExpert иногда даже снится мне по ночам вот ты выше и писал всё как в эксперте: - прав клик на объекте таблица - свойства. - индексы, права, поля, ограничения разложены по вкладкам. - всё удобно и объектно. То что изменения сразу на базу в реал-тайме - удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2013, 13:22:11 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Petro123вот ты выше и писал всё как в эксперте: - прав клик на объекте таблица - свойства. - индексы, права, поля, ограничения разложены по вкладкам. - всё удобно и объектно. Petro123То что изменения сразу на базу в реал-тайме - удобнее. Не всегда так удобнее. Собственно, потенциальный инструментарий автора этой темы не заменяет типовые IDE-DB, а дополняет их, т.к. в большинстве случаев всякие IDE не занимаются ведением каталога исходников. У нас в команде большинство так и работают - через IDE в реал-тайм вносят правки в базу, из логов операций или прочих других режимов достают тексты SQL, чего там IDE нагенерировала, и переносят их в sql-файлы проекта (не всегда это приемлемо, т.к. IDE генерирует тексты по своим правилам (частенько плохо или вовсе ненастраиваемым), что даёт неудобства для полноценного ведения проекта, поэтому есть и свои генерилки текстов). Лично я предпочитаю по возможности sql-ить в текстовом редакторе. Другое дело, что не всех и всегда нагибает жизнь, многим SQL-каталог и не нужен, и Максим Н правильно подметил, что некоторые СУБД знают только на уровне IDE для нее, для них IDE и СУБД - фактически, синонимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2013, 15:38:23 |
|
||
|
Выбор СУБД для небольшой Java-утилиты
|
|||
|---|---|---|---|
|
#18+
Максим Н[...] Пример описания типа "таблица": Код: xml 1. 2. 3. 4. Планируется ли какой-то синтаксический разбор текста или только на уровне поиска/регулярок ? Почему спрашиваю. Я всё больше и больше задумываюсь над свои тулзом, о котором говорил выше по постам, и прихожу к выводу, что не плохо бы иметь потенциал для снижения количества sql-файлов в проекте. При большом количестве объектов в БД и прочего кода как-то напрягает принцип разработки, когда каждый объект и прочий чих оформляется в отдельном файле, получается многовато файлов, причём частенько с небольшим (относительно) количеством кода. В соответствующем посте я указывал на деление sql-проекта по логическим модулям/подмодулям, в идеале при таком подходе хотелось бы иметь только один sql-файл модуля и его возможную историю изменений (парный update-файл). Для этого нужно делать кое-какой разбор текста: понимать DDL-операторы - create/replace/alter объектов, понимать заголовок хранимой процедуры/функции и пропускать тело, разделять sql-операторы, пропускать комментарии и т.д. Задача немалая, но вполне подъёмная, минус - СУБД-зависимая. Подобный разбор текста всё-равно нужен, если, скажем, делать поддержку комментариев-доков. Какие-то потуги в плане разбора текста планируются или всё как можно проще ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2013, 15:44:30 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38250485&tid=2129029]: |
0ms |
get settings: |
15ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
41ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
107ms |
get tp. blocked users: |
2ms |
| others: | 274ms |
| total: | 487ms |

| 0 / 0 |
