|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Всем привет! Есть класс Event: Код: java 1. 2. 3. 4. 5. 6. 7.
Необходимо сохранять объекты класса Event в БД через Spring + Hibernate. В каком виде лучше хранить данную сущность:? 1. Одна таблица Event, но тогда поле properties будет как BLOB. 2. Сделать две таблицы, отношение один ко многим. В 1-ой таблице id, во 2-ой id, key, value. Соответственно сначала добавляем запись в 1-ю, получаем id и записываем соответствующую запись в 2-ю таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 11:51 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Molasar, Ты же уже спрашивал. Хранить в бд не сущности бизнеса - глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 11:58 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123Molasar, Ты же уже спрашивал. Хранить в бд не сущности бизнеса - глупость. Про то, в каком виде хранить Properties, я не спрашивал. Не понял про не сущности бизнеса - глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:05 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
MolasarПро то, в каком виде хранить Properties, я не спрашивал.было тут про то как хранить мессаги в базе. Не твоё? ... В базе хранят бизнес сущности - Паровоз, Выленки, Контрагент, .... Но никак не Event, Handle, переменная, функция. Понятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:15 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123MolasarПро то, в каком виде хранить Properties, я не спрашивал.было тут про то как хранить мессаги в базе. Не твоё? ... В базе хранят бизнес сущности - Паровоз, Выленки, Контрагент, .... Но никак не Event, Handle, переменная, функция. Понятно? Мессаги моё)))) Но тут конкретно про таблицы и схему отношений. В моём случае объекты Event будут содержать информацию о событиях, происходящих в системе, для дальнейшего аудита. Если всё записывать в лог-файл, то неудобно будет потом делать выборку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:20 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Думаю, в моём случае нужно использовать две таблицы, чтобы можно было по полям key, value делать выборку данных. BLOB - двоичный тип, доступа к значением полей нет. Получается нужно скачать всю БД в List<Event> и только потом обрабатывать данные. Что очень плохо) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:24 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
MolasarМессаги моёссыль дай ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:26 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Molasar, Нужна отдельная база и писать нужно туда без тормозов т.к. событий миллион в минуту. Аудит логов не относится к ИС? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:28 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123MolasarМессаги моёссыль дай https://www.sql.ru/forum/1311504/voprosy-po-activemq ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:29 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123Molasar, Нужна отдельная база и писать нужно туда без тормозов т.к. событий миллион в минуту. Аудит логов не относится к ИС? Так и будет: выделенная машина под аудит и биллинг. Под типовые запросы на запись - хранимые процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:31 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123Аудит логов не относится к ИС?если нет, то пиши без хибера. Быстрее будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:32 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123если нет, то пиши без хибера. Быстрее будет.Petro123 взломали? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:51 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
вадя, ) дык ты всегда против хибера. А я и то и то люблю). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 13:27 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123, автор) дык ты всегда против хибера. А я и то и то люблю). За что можно любить хибер?:) Он же тяжелый с кучей дополнительных абстракций в сравнении с jdbc. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:30 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusЗа что можно любить хибер?:) Он же тяжелый с кучей дополнительных абстракций в сравнении с jdbc.+медленный ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:43 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusЗа что можно любить хибер?:)вообще - для десктопа, для не знающих sql - шанс что-то сделать... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:44 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
вадя, авторвообще - для десктопа, для не знающих sql - шанс что-то сделать... Действительно шанс:) hibernate.cfg.xml писать с маппингами и конфигами для коннекшена к бд. Аннотации писать с таблицами, id...Это минимум как я понимаю:) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:47 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusЗа что можно любить хибер?:) Он же тяжелый с кучей дополнительных абстракций в сравнении с jdbc. За что можно любить java?:) Она же тяжелая с кучей дополнительных абстракций в сравнении с .... Каждый инструмент нужно использовать под то, для чего он разрабатывался. А хибер разрабатывался для клепания формочек с базовым CRUD для энтерпрайз админок, с чем он блестяще и справляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:57 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusPetro123, автор) дык ты всегда против хибера. А я и то и то люблю). За что можно любить хибер?:) Он же тяжелый с кучей дополнительных абстракций в сравнении с jdbc. эта куча всего избавляет Вас от повторяющегося кода. у Вас 20 сущностей в системе и вам для каждой сущности придется писать CRUD операции на jdbc. Это же жестяк. А потом еще предусмотреть расширение другими кверями. От этого код раздувается и все больше вырисовывается велосипед который придумали. Юзайте просто нативный sql с хибером. в чем беда? Хотя где шансы что запросы с jdbc будут оптимальными? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:59 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
забыл ник, авторА хибер разрабатывался для клепания формочек с базовым CRUD для энтерпрайз админок, с чем он блестяще и справляется. Просто не вижу преимуществ над чистым JDBC для этих же целей. Базовый CRUD - insert, delete, update? Если только это, то сетапить хибер дольще по ощущениям, чем запилить на JDBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:01 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Tsyklop, автор Хотя где шансы что запросы с jdbc будут оптимальными? Я думал хибер внутри юзает jdbc. Но могу ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:03 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Tsyklop, автору Вас 20 сущностей в системе и вам для каждой сущности придется писать CRUD операции на jdbc. Это же жестяк. А потом еще предусмотреть расширение другими кверями. От этого код раздувается и все больше вырисовывается велосипед который придумали Дело вкуса. Если crud самые базовые, то не вижу сложностей их написать. Зато в хибер с его состояниями разбираться - transient/managed/detached...для самого элементарного. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:05 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusЗа что можно любить хибер?а как ты получишь классы без ОРМ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:06 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123, через ResultSet. Как собственно и делает это хибер, насколько мне известно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:07 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusPetro123, через ResultSet. Как собственно и делает это хибер, насколько мне известно :)смешно. А маппинг аннотациями как? А сохранение один ко многим? Смешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:17 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123, авторсмешно. А маппинг аннотациями как? А сохранение один ко многим? Смешно. На самом деле не смешно. А так да, это прийдется пописать ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:25 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusтак да, это прийдется пописать ручками.пишите ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:43 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusTsyklop, автор Хотя где шансы что запросы с jdbc будут оптимальными? Я думал хибер внутри юзает jdbc. Но могу ошибаться. Да. Хибер работает "via JDBC". Это написано на титульной страничке hibernate.org/orm/ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:44 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mayton, авторДа. Хибер работает "via JDBC". Это написано на титульной страничке hibernate.org/orm/ Не только там, открой для себя гугл. Что сказать-то хотел? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:58 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mr_virtusmayton, авторДа. Хибер работает "via JDBC". Это написано на титульной страничке hibernate.org/orm/ Не только там, открой для себя гугл. Что сказать-то хотел? (пожимая плечами) Какая странная реакция. Ну как будет угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 15:59 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
mayton, Нормальная реакция на твой сарказм в предыдущем ответе. Если его там не было, то ок - был неправ. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 16:01 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
MolasarПод типовые запросы на запись - хранимые процедуры.ну хранимки могут и не только типрвые запросы, они много больше могут и Petro123Быстрее будет. Molasar+ Hibernate. вот только от хибера избавиться надо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 20:47 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
вадя, тебе повезло. В биллинге хибер не нужен. А ты разве не знал, что хибер для CRUD. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 22:43 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Petro123вадя, тебе повезло. В биллинге хибер не нужен. А ты разве не знал, что хибер для CRUD. Я планирую делать 2 реализации на Хибере и JDBC. Потом буду тестить под нагрузкой оба варианта. О результатах сообщу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 09:11 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Molasar, я бы начал тестировать ваше железо+базу на момент выдержки нагрузки и нужной вам производительности. Может так случится, что после тестирования хибер сам собой отпадет... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 09:32 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Molasar, Да. Присоединяюсь ко всем - тестируйте. А оба варианта это скилы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 09:38 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
MolasarВсем привет! Есть класс Event: Код: java 1. 2. 3. 4. 5. 6. 7.
Необходимо сохранять объекты класса Event в БД через Spring + Hibernate. В каком виде лучше хранить данную сущность:? 1. Одна таблица Event, но тогда поле properties будет как BLOB. 2. Сделать две таблицы, отношение один ко многим. В 1-ой таблице id, во 2-ой id, key, value. Соответственно сначала добавляем запись в 1-ю, получаем id и записываем соответствующую запись в 2-ю таблицу. Способ хранения может быть любым. В данном случае (1) и (2) правильные. Но можно выбирать оптимальные стратегии хранения исходя из того как часто эти записи будут модифицироваться. Например. Вариант 1: Вся сущность event сериализируется в JSON и так и хранится в одной табличке. Как varchar. Этот вариант хорош когда модификаций не будет. Место экономится. Или BLOB если varchar уже закончился по размеру. Вариант 2: Сущности properties (key,value) хранятся в отдельной табличке оптимизированной под частые изменения. При этом получаем скорость обновления пропертей. Если конечно это необходимо. Расход места будет чуть больше. И прочие варианты. Смешанные. Например если properties содержит в себе такие-же объекты properties (дерево) то можно просто делать 1 табличку дерево где есть родительские и дочерние записи. Вобщем вариантов на самом деле еще больше. И поле id, я-бы сделал не враппером а примитивом. Всё таки id предполагает что это всегда NOT NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 10:33 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
maytonИ поле id, я-бы сделал не враппером а примитивом. Всё таки id предполагает что это всегда NOT NULLэто оно в бд not null, а до базы это вообще-то признак нового объекта ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 10:52 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
maytonMolasarВсем привет! Есть класс Event: Код: java 1. 2. 3. 4. 5. 6. 7.
Необходимо сохранять объекты класса Event в БД через Spring + Hibernate. В каком виде лучше хранить данную сущность:? 1. Одна таблица Event, но тогда поле properties будет как BLOB. 2. Сделать две таблицы, отношение один ко многим. В 1-ой таблице id, во 2-ой id, key, value. Соответственно сначала добавляем запись в 1-ю, получаем id и записываем соответствующую запись в 2-ю таблицу. Способ хранения может быть любым. В данном случае (1) и (2) правильные. Но можно выбирать оптимальные стратегии хранения исходя из того как часто эти записи будут модифицироваться. Например. Вариант 1: Вся сущность event сериализируется в JSON и так и хранится в одной табличке. Как varchar. Этот вариант хорош когда модификаций не будет. Место экономится. Или BLOB если varchar уже закончился по размеру. Вариант 2: Сущности properties (key,value) хранятся в отдельной табличке оптимизированной под частые изменения. При этом получаем скорость обновления пропертей. Если конечно это необходимо. Расход места будет чуть больше. И прочие варианты. Смешанные. Например если properties содержит в себе такие-же объекты properties (дерево) то можно просто делать 1 табличку дерево где есть родительские и дочерние записи. Вобщем вариантов на самом деле еще больше. И поле id, я-бы сделал не враппером а примитивом. Всё таки id предполагает что это всегда NOT NULL. В данном случае данные будут только добавляться в таблицу. Это что-то типа лога, журнала событий. В дальнейшем необходимо будет читать таблицу, делать выборку, поэтому вариант с одной таблицей и BLOB не подходит, т.к. для того чтобы что-то выбрать необходимо будет выкачивать всю базу, превращать BLOB в HashMap. JSON как varchar по этой причине тоже отпадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 10:57 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
1) Какая предполагается нагрузка? Количество сообщений в день, количество запросов на выборку? 2) Если нагрузка небольшая то в принципе пофиг на чем писать, что на хибере что ждбс что бд что nosql, если же нагрузка большая, то имеет смысл подумать о чем-то нереляционном, в том числе elasticsearch. Но что-то мне подсказывает что там нагрузка небольшая, так что.. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 11:16 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Molasar, Ты запиши логи. А потом отдельный процесс их разгребет. Биллинг это вроде отдельный подход и технологии. И даже область знаний) Как в OLAP/OLTP ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 12:09 |
|
Запись Properties в БД
|
|||
---|---|---|---|
#18+
Molasarmaytonпропущено... Способ хранения может быть любым. В данном случае (1) и (2) правильные. Но можно выбирать оптимальные стратегии хранения исходя из того как часто эти записи будут модифицироваться. Например. Вариант 1: Вся сущность event сериализируется в JSON и так и хранится в одной табличке. Как varchar. Этот вариант хорош когда модификаций не будет. Место экономится. Или BLOB если varchar уже закончился по размеру. Вариант 2: Сущности properties (key,value) хранятся в отдельной табличке оптимизированной под частые изменения. При этом получаем скорость обновления пропертей. Если конечно это необходимо. Расход места будет чуть больше. И прочие варианты. Смешанные. Например если properties содержит в себе такие-же объекты properties (дерево) то можно просто делать 1 табличку дерево где есть родительские и дочерние записи. Вобщем вариантов на самом деле еще больше. И поле id, я-бы сделал не враппером а примитивом. Всё таки id предполагает что это всегда NOT NULL. В данном случае данные будут только добавляться в таблицу. Это что-то типа лога, журнала событий. В дальнейшем необходимо будет читать таблицу, делать выборку, поэтому вариант с одной таблицей и BLOB не подходит, т.к. для того чтобы что-то выбрать необходимо будет выкачивать всю базу, превращать BLOB в HashMap. JSON как varchar по этой причине тоже отпадает. Так ты сам спросил - сам и ответил? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 13:45 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121286]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 529ms |
0 / 0 |