Добрый вечер Павел, On Thu, 8 Feb 2024 at 19:33, Pavel Zhdanovich <openmeeti...@12winds.ru> wrote: > > Здравствуйте, Максим! > (Прошу прощения, промахнулся с ответом ) > Попробую немного объяснить замысел. > Мы хотим использовать базу данных OpenMeetings для анализа данных. > Задача у меня возникла уже довольно давно. В 2020 году нас всех > отправили на карантин, и я, как и другие университетские преподаватели, > начал проводить занятия дистанционно и использовал для этого > OpenMeetings, который у меня был развернут дома. Могу, кстати, > похвастаться, что не провел ни одной минуты занятий со своими студентами > в проприетарных системах видеоконференций, не считая случая, когда меня > включили в комиссию и принудительно подключили к Zoom. 🙂
это отличные новости :) > Руководство требовало от нас предоставлять отчеты о проведенных > занятиях: сколько часов проведено, сколько студентов присутствовало, > сколько пропускало и т.д. Мне было лень проводить переклички, запускать > голосовалки и т.п., как это делали коллеги, а потом считать вручную. Я > просто подключался к БД (Postgres) и писал SQL-запрос. > Позже я поставил Елизавете задачу написать несколько аналогичных > запросов, в которых уже появляется некая производная сущность "встреча" > или "конференция". Это ситуация, когда двое или более пользователей > одновременно находятся в одной комнате, скажем, более 1 минуты. Такие > запросы уже пишутся с применением Window Functions (OLAP Functions в DB2 > и т.п.). Парочку из них Елизавета, думаю, сможет здесь показать. Я не > знаю, настолько ли это всеобщая задача, чтобы предлагать включить ее в > основной проект. это очень даже актуальная задача :)) https://issues.apache.org/jira/browse/OPENMEETINGS-858 https://issues.apache.org/jira/browse/OPENMEETINGS-1111 мне казалось что тут можно/нужно улучшать таблицу `conference_log` :)) и я бы принял такой PR (пусть и на уровне запроса) и прикрутил бы к нему и "веб-морду" и REST > С другой стороны, и не такая уж узкоспецифическая. > Скорее, это что-то в жанре "OpenMeetings SQL Cookbook". 🙂 > Так вот, для таких запросов могут понадобиться новые индексы и > определения внешних ключей, так как оптимизаторы в СУБД используют их > при составлении планов запросов, содержащих joins. > А поскольку внешние ключи сейчас определяются в приложении, которое > монопольно использует БД, мы решили посоветоваться насчет их определения > на уровне БД при помощи DDL, так как к базе данных подключаются и другие > приложения. но, если честно, я пока совсем не понимаю как тут помогут те ключи, которые упомянуты в документе :( может можно это как-то на примере показать? :) зы индексы можно добавить > > С уважением, > Павел Жданович > > > 08.02.2024 06:19, Maxim Solodovnik пишет: > > Здравствуйте Елизавета, > > > > очень извиняюсь за долгий ответ (не стесняйтесь меня пинать если я > > сильно тихий :)) > > ну и плюс ответ написать было сложно :( > > > > БД описывается аннотациями JPA > > вот пример: > > https://github.com/apache/openmeetings/blob/master/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java#L417 > > > > > > по пунктам: > > - **Блок "Первичные ключи для таблиц"** > > > > например таблица `om_user_right` создаётся вот такими аннотациями: > > @ElementCollection(fetch = FetchType.EAGER) > > @Column(name = "om_right") > > @CollectionTable(name = "om_user_right", joinColumns = > > @JoinColumn(name = "user_id")) > > @Enumerated(EnumType.STRING) > > > > для этой таблицы не нужен Primary Key > > индивидуальный доступ к элементам не нужен > > элементы этой "подтаблицы" всегда достаются **все** при работе с > > объектом пользователя > > вставка/удаление происходят автоматически, редактирование не нужно > > > > остальные таблицы этого блока такие же > > > > > > - **Блок "Внешние ключи для таблиц"** > > > > эти ключи будет очень затруднительно добавить используя аннотации JPA > > (похоже единственный способ - добавить @OneToOne аннотацию) > > в результате при запросе `menu_group` (например) будет каждый раз > > тащиться ещё и куча связанных сущностей > > > > то есть запросы станут очень **тяжёлыми** > > > > не могли бы Вы прокомментировать всё что я написал > > и может у Вас есть какой-то анализ: какой в этом всём смысл? ну то > > есть добавление ключей > > > > За > > - увеличит связность > > > > Против > > - замедлит базу > > - замедлит все запросы: добавление @OneToOne/@OneToMany добавляет > > JOINы и кучу колонок из связанных таблиц в каждый запрос :((( > > > > на мой взгляд "против" сильно перевешивает .... > > > > On Sun, 28 Jan 2024 at 20:36, Елизавета Фролова <frolova0...@gmail.com> > > wrote: > >> https://docs.google.com/document/d/12WmqQKdNSr0o_TAnCMkAm4EMx1MrrSqD50VAV9_Kk_Q/edit?usp=sharing > >> добрый день! прикрепила ссылку для просмотра ключей, созданных в базе > >> данных > >> > >> вт, 23 янв. 2024 г. в 06:23, Maxim Solodovnik <solomax...@gmail.com>: > >> > >>> On Mon, 22 Jan 2024 at 23:49, Елизавета Фролова <frolova0...@gmail.com> > >>> wrote: > >>>> Запросы я перенесла в документ Word, да. > >>>> Создавала ключи там, где, как мне казалось, их нет. > >>> давайте где-нибудь выложим этот документ? :) > >>> (на ум приходит: google docs или > >>> https://cwiki.apache.org/confluence/display/OPENMEETINGS) :) > >>> > >>>> Пн, 22 янв. 2024 г. в 19:39, Maxim Solodovnik <solomax...@gmail.com>: > >>>> > >>>>> Доброй ночи Елизавета, > >>>>> > >>>>> from mobile (sorry for typos ;) > >>>>> > >>>>> > >>>>> On Mon, Jan 22, 2024, 23:14 Елизавета Фролова <frolova0...@gmail.com> > >>>>> wrote: > >>>>> > >>>>>> Здравствуйте! > >>>>>> Меня зовут Елизавета, я студентка Волгоградского государственного > >>>>>> университета. > >>>>>> Моя бакалаврская работа связана с работой с базой данных > >>> OpenMeetings. С > >>>>>> вами уже связывался наш научный руководитель Жданович Павел > >>> Борисович. > >>>>>> Хотела бы показать Вам, что у меня уже готово. > >>>>>> Я работала с созданием первичных и внешних ключей, где они были > >>> нужны. > >>>>>> Как я могу прислать свою работу? > >>>>>> > >>>>> Я уже писал Павлу что (вроде как) ключи в базе есть > >>>>> > >>>>> Сейчас они заданы в виде аннотаций JPA > >>>>> > >>>>> В каком виде ваша работа? > >>>>> PR? Документ? :) > >>>>> > >>> > >>> > >>> -- > >>> Best regards, > >>> Maxim > >>> > > > > > -- Best regards, Maxim