• Можно ли делать запрос к промежуточной таблице многие-ко-многим для извлечения конкретной информации?

    @TRIG Автор вопроса
    ThunderCat, но нам будет достаточно информации только о конкретной книге, чтобы авторов найти?
    Извините, я просто совсем новичок и плохо понимаю проектирование.
    Написано
  • Можно ли делать запрос к промежуточной таблице многие-ко-многим для извлечения конкретной информации?

    @TRIG Автор вопроса
    Тут больше теоретический вопрос по использованию промежуточных таблиц.
    К ним не возбраняется обращаться для извлечения информации? Это приемлемый вариант в реальном проекте?
    Или есть способы лучше/корректней/правильней, если мы хотим найти авторов конкретной книги?
    Написано
  • Как именно должжна работать функция SetCursor?

    @TRIG Автор вопроса
    res2001, я попробую проверить. Но изменения то должны быть при корректном коде или я не верно понимаю суть функции SetCursor?
    Написано
  • Какой тип базы данных использовать при большом объеме информации и высокой скорости её записи/чтения?

    @TRIG Автор вопроса
    AUser0, это ни к чему объяснять, потому что уровень архитектуры программы мы даже не затрагиваем.
    Меня только вопрос нагрузки и производительности БД интересует, при том если будет необходимо последовательно совершать запись и чтение за единицу времени (1с).
    Это как бы теоретический вопрос о пределах возможностей той или иной БД, до практики еще далеко.
    Написано
  • Какой тип базы данных использовать при большом объеме информации и высокой скорости её записи/чтения?

    @TRIG Автор вопроса
    Сергей Горностаев, а если каждая вставка имеет размер в 1 мб и при этом ее нужно получить еще обратно? И это все менее чем за 1 секунду.
    Написано
  • Какой тип базы данных использовать при большом объеме информации и высокой скорости её записи/чтения?

    @TRIG Автор вопроса
    Задержки критичны, т.е. с учетом всех операций, превышение в 1 секунду на весь цикл может быть фатально.
    Запись и чтение всех показаний должно также производиться за 1 секунду. В эту же секунду происходит примитивный анализ в виде сравнения показаний за предыдущую секунду с показаниями текущей секунды.
    Да, все еще и одновременно для всей тысячи приборов.

    На счет флоатов не уверен. Там скорее всего даблы, т.к. числа не умещаются в диапазон флоатов (пример 99999.99999).
    1000 * (30 * 64 * 2) = 3840000 бит (0.5 мегабайта)
    Т.е. как минимум данные в чистом виде, без доп. флагов и временных отметок составляют до 0.5 мб в секунду.
    Если туда докинуть временные метки (8 бит), флаги (8 бит) и еще что-нибудь примитивное, то 1 мб в секунду - это видимо предел объемов передаваемой полезной информации (исключая служебную) в одну сторону (запись) и столько же в другую (чтение).
    Прям со всеми-всеми издержками и объемами 5 мб в секунду - это прям сказочно. Больше - это практически невозможно.
    Ключом по логике вещей в TSDB служит временная отметка и/или отметка о приборе. По сути больше ничего не нужно.

    Стабильность канала передачи и скорости обработки информации тут не учитывается, но как бы и фиг бы с ним, т.к. это уже другой раздел ПО. Скорость даже в 100 мбит/секунду у канала вообще избыточна, даже половины хватит.
    Пока стоит вопрос о выборе именно типа БД.
    Написано
  • Какой тип базы данных использовать при большом объеме информации и высокой скорости её записи/чтения?

    @TRIG Автор вопроса
    Было бы здорово применять комплексный подход, однако стоящая задача еще не до конца определена и понятна.
    Я пытаюсь разбить такую нечеткую задачу на разные области.

    Важно понять, какой тип БД лучше подходит для информации, которая записывается и извлекается строго по заданным временным промежуткам, при том, что сама информация примитивна и однотипна, но в довольно больших объемах.
    Пускай это даже будет теоретический вопрос.
    Написано
  • Какой тип базы данных использовать при большом объеме информации и высокой скорости её записи/чтения?

    @TRIG Автор вопроса
    Анализ - это по сути сравнение данных за предыдущий временной промежуток с текущим. Разница, как вы поняли, это как раз 1 секунда (максимум).
    Сложные типы данных - это я об объектах. Фактически будут одни примитивные типы.

    Схема работы ПО проста:
    1. Сняли данные с приборов
    2. Записали в БД
    3. Сняли следующую порцию данных
    4. Записали их в БД
    5. Сравнили друг с другом, и сделали что-то, если колебания достигли какой-то константы (критическая отметка, например).

    Естественно, я тут не учитываю многопоточность, параллелизм и т.д. Но это все предполагается в ПО по умолчанию.
    Вопрос не в сложности анализа для каждого прибора, а в объемах информации.
    Прогнозирования тоже нет, мы не пытаемся смотреть в будущее.

    А между приборами нет никаких связей, даже косвенных. Каждый прибор живет своей жизнью. Поэтому о консистентности речи даже не идет.

    Важна исключительно скорость записи и чтения в БД. Примитивный анализ второстепенен и по результатам запустит (если запустит) уже совсем другие процессы, информация о которых если и будет записана, то в другое место и в другом потоке.

    Правильно ли выбран тип БД под такие задачи? Или есть варианты лучше?
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Василий Банников, ну вот отдельная таблица и есть как абстрактное "Расписание", чтобы по цепочке извлечь минимальную информацию, отобразить её в расписании и там получить реакцию от пользователя на пункт в расписании в виде задачи.
    Джоин джоином, но от пользователя нужна обратная связь и её регистрирование.

    В общем, не суть. Если в одной таблице есть несколько FK из других таблиц - можно ли в следующую таблицу их просто копировать из нее? Это основной вопрос, т.к. это учебный проект, общего с реальностью не имеющий
    Как на картинке.649589214afb6765663995.png
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    alexalexes, "Вам под каждую новую задачу придется вписывать нового исполнителя."
    Таки да, т.к. это лишь абстрактный кусочек БД. Задачи - это весьма маленькие действия, на которые достаточно одного человека, иначе и правда не обойтись без связи "многие-ко-многим" и еще одной промежуточной таблицы.

    А расписание нужно, чтобы пользователь мог реагировать на него через спикеров, и реакция записывалась не к самим задачам.
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Василий Банников, каким тогда образом реализовать вывод расписания, если не иметь такой таблицы, что в себе аккумулирует данные из других таблиц? Эта таблица избыточна? Но что если у пользователя предусмотрена реакция на какие-то задачи в виде обратной связи (пометки там всякие), которые надо регистрировать?
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Валентин Бируля, но у меня есть условное расписание на много-много дней. И задач тоже много-много.
    При этом само расписание может быть еще дополнено своими полями.
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Валентин Бируля, вы видите иначе подобный вариант? таблицы, конечно, не настоящие и не имеют такое количество полей.
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Василий Банников, в чем тут проблема? В скорости работы?
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    TRIG, правильнее даже спросить, будет ли ЭТОТ вариант корректным схематически?
    Или в последней таблице "Расписание" я могу указывать лишь FK id_исполнителя???
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Нет, не верно.

    БД имеет такие связи таблиц:
    Руководители -> Задачи -> Исполнители -> Расписание

    В таблице "Расписание" нужна информация о предыдущих сущностях (их атрибуты) в виде FK.
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    alexalexes, допустим, у исполнителя и руководителя есть имя, а у задачи название.
    Можно ли теперь в таблице "Расписание" получить всю эту информацию за счет одного FK_Исполнитель?

    Могу более схематически указать:
    Руководители {id_руководителя(PK), имя} -> Задачи {id_задачи(PK), название, id_руководителя(FK)} -> Исполнители {id_исполнителя(PK), имя, id_задачи(FK)} -> Расписание {id_расписания(PK), id_исполнителя(FK)}

    или

    Руководители {id_руководителя(PK), имя} -> Задачи {id_задачи(PK), название, id_руководителя(FK)} -> Исполнители {id_исполнителя(PK), имя, id_задачи(FK)} -> Расписание {id_расписания(PK), id_исполнителя(FK), id_задачи(FK), id_руководителя(FK)}

    Т.е. в таблице "Расписание" должна быть информация (поля) из ВСЕХ предыдущих таблиц, даже если это будут просто вложенные сущности со ссылками друг на друга. Или проще говоря, через эту таблицу нужно узнать, кто руководитель, какую задачу выдал и кто выполнил.
    Написано
  • Может ли быть вложенным Foreign Key?

    @TRIG Автор вопроса
    Akina, речь о ссылках через FK.

    Т.е. можно ли теперь в таблице "Расписание" вывести информацию из таблицы "Руководители", если у них между собой нет никакой прямой связи, а лишь цепочка FK в разных таблицах?

    БД имеет такие связи таблиц:
    Руководители -> Задачи -> Исполнители -> Расписание
    Написано