Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Архитектурный вопрос. / 13 сообщений из 13, страница 1 из 1
25.12.2013, 20:14
    #38512505
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
Есть много приложений. Все эти приложения обращаются на сервлет для получения данных из БД:
Пример обращения к сервлету
Выдать все данные по указанным параметрам, переданным в сервлет, в указанном формате (doc, pdf, xml...)
Пример запроса к сервлету:
<Query><Param id='name'>SELECT_ALL</Param><Param id='id'>40</Param></Query>

Действия сервлета
На входе поступает строка: <Query><Param id='name'>SELECT_ALL</Param><Param id='id'>40</Param></Query>
В соответствии с тегами (параметрами) на входе, он залезает в файл с запросами, находит запрос по параметру название запроса, подставляет параметры и выполняет сам запрос. Результат возвращает.

И так. Я хочу обратиться к БД с запросом для получения данных. Для этого я обращаюсь на контейнер сервлетов, он ищет файл, читает его, и посылает запрос к БД. БД обрабатывает запрос и выдает результат. Сервлет получает результат с БД и оборачивает в удобный вид.
Внимание! Вопрос!
Все вроде хорошо. Но каждый раз приходится лезть в этот файл с запросами и делать из него чтение. Насколько мне известно, в Java I/O не самая быстрая вещь. К тому же, вероятность того, что кто-то этот файл однажды убьет - высока.
Может ли решение этой проблемы быть связано с надстройками над JDBC, такими как JPA, Hibernate?
А может все идеально и это я такой Василий?
-
Один важный нюанс. Нельзя изменять таблицы.

Жду мнений.
...
Рейтинг: 0 / 0
25.12.2013, 20:21
    #38512509
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
eldarkaa,
Да и запросы. Вот допустим разновидности одного запроса.
Код: java
1.
2.
3.
<Query><Param id='name'>SELECT_ALL</Param></Query>
<Query><Param id='name'>SELECT_ALL</Param><Param id='id'>40</Param></Query>
<Query><Param id='name'>SELECT_ALL</Param><Param id='id'>40</Param><Param id='age'>40</Param></Query>


Может все же спасет DAO с перегружаемым конструктором или методом?
...
Рейтинг: 0 / 0
25.12.2013, 20:26
    #38512510
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
идеи такие:
сделать вместо обращение с указанием файла, обращение к сущности (DAO)
для каждой системы - свое DAO (перегружаемое)
так мы избавимся от лишнего чтения файла, но где тогда хранить все эти "запросы-конструкторы?"
...
Рейтинг: 0 / 0
25.12.2013, 20:45
    #38512519
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
Файлы кэшировать не судьба? В файлах то что? Шаблоны запросов?
...
Рейтинг: 0 / 0
25.12.2013, 21:11
    #38512530
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
Лагман,
да, в файлах шаблоны запросов
...
Рейтинг: 0 / 0
25.12.2013, 21:34
    #38512551
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
Почему файлы лежат там, где их кто-то убъет?
...
Рейтинг: 0 / 0
25.12.2013, 21:58
    #38512564
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
К каждой системе существует такой файл шаблонов запросов.
Сейчас их около 30 и их будет еще больше.
Сейчас чтобы отредактировать такой файл, нужно его извлечь из системы с соотв. правами, подправить (тут можно нечаянно не своему запросу что-то исправить) где надо, и залить.. Тогда мы получим, что делали апдейт для одного, а повредили другое.
Я хотел обратить внимание на это, словом "убить".
-
Почему нет кэширования? Исторически так сложилось и это будет исправлено.
...
Рейтинг: 0 / 0
25.12.2013, 22:14
    #38512579
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
eldarkaa ,
Ваша проблема к Java отношения особо не имеет. Вам надо просто где-то хранить метаинформацию. В конечном счете, это все равно будет некий "файл", будь это файл в папке, файл данных СУБД, или файл данных в удаленном облаке. Это не принципиально.
Вот и думайте, как его хранить.
Хотите - просто киньте на диск, и все.
Хотите - воспользуйтесь средствами ОС (напр. shadow copy) в Windows.
Хотите - руками делайте копии этих файлов каждый день, чтобы откатиться.
Хотите - используйте какую-нибудь систему контроля версий, напр. локальный SVN, распределенные Git, и т.д.
Хотите - закиньте их в СУБД.
Хотите - закиньте их в облако (Azure, S3, OenStack, etc, Microsoft Office).
И т.д..

Касательно перформанса и "медленного IO в Java". Во-первых, IO медленный не в Java, а по своей сути. Медленный относительно работы с оперативной памяти. Во-вторых, что бы запаривать о проблемах с проиводительностью, нужно быть достоверно уверенным, что они либо уже есть, либо гарантированно появятся.
Вот конкретно сейчас вас перформанс парит? Сколько у вас сейчас юзеров? Как часто обращаются к этим файлам? Как быстро растет количество обращений к файлам? Как быстро растет размер этих файлов? Если это просто метаданные, то их вряд ли будет много. И если проведете элементарный математический расчет вкупе с несложным лоад-тестированием, то можете прийти к совершенно неожиданным выводам, начиная от "жопа уже настала, надо срочно что-то менять", до "такими темпами моего занюханного Intel Core i3 хватит еще на 10 лет для этого приложения".
Если же все таки проблема есть, то решений опять таки масса. Закинуть файлы в облако, закинуть их в СУБД или кластер СУБД, закинуть их в память, сделать memory mapped, воспользоваться каким-нибудь коробочным кэшом, и т.д., и т.п.
...
Рейтинг: 0 / 0
26.12.2013, 00:21
    #38512676
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
eldarkaaВыдать все данные по указанным параметрам, переданным в сервлет, в указанном формате (doc, pdf, xml...)
маловато параметров.))) Где параметры в каком формате выдать данные внутри *.doc?
...
Рейтинг: 0 / 0
26.12.2013, 00:24
    #38512678
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
eldarkaaидеи такие:
сделать вместо обращение с указанием файла, обращение к сущности (DAO)
для каждой системы - свое DAO (перегружаемое)
так мы избавимся от лишнего чтения файла, но где тогда хранить все эти "запросы-конструкторы?"
у тебя просто экспорт данных?
Т.е. почему не используется ОРМ?
...
Рейтинг: 0 / 0
26.12.2013, 00:27
    #38512680
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
eldarkaaК каждой системе существует такой файл шаблонов запросов.
Сейчас их около 30 и их будет еще больше.
одна Система или их несколько - делится по предметной области.
Т.е. у каждой системы (ИС) - свои запросы и шаблоны запросов, свой ОРМ и маппинг.
...
Рейтинг: 0 / 0
26.12.2013, 00:28
    #38512681
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
cdtyjv,
+1
...
Рейтинг: 0 / 0
26.12.2013, 15:14
    #38513242
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос.
eldarkaa Жду мнений.


Вся эта твоя херь знаешь, что полезного делает ?
НИЧЕГО.
А кода небось дохерища.
Вот в этом и проблема.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Архитектурный вопрос. / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]