Как правильно составить таблицу с похожими данными? - PullRequest
0 голосов
/ 04 января 2019

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

Вот моя текущая схема:

CREATE TABLE webservice_historylog (
    id_webServiceConnection BIGINT PRIMARY KEY AUTO_INCREMENT,
    id_Location varchar,
    datetime_Connect datetime,
    response_TimeMs int,
    status_Code varchar(5),
    status_Message varchar(255)
);

CREATE TABLE internet_historylog (
        id_internetConnection BIGINT PRIMARY KEY AUTO_INCREMENT,
        id_Location varchar,
        datetime_Connect datetime,
        response_TimeMs int,
        status_Code varchar(5),
        status_Message varchar(255)
);

CREATE TABLE postgresql_historylog (
        id_postgresqlConnection BIGINT PRIMARY KEY AUTO_INCREMENT,
        id_Location varchar,
        datetime_Connect datetime,
        response_TimeMs int,
        status_Code varchar(5),
        status_Message varchar(255)
);

Я могу сделать из нее таблицу я думаю ..

Или я должен сделать это под одной таблицей?Вот так ..

CREATE TABLE connection_historylog (
            id_Connection BIGINT PRIMARY KEY AUTO_INCREMENT,
            id_Location varchar,
            connectionType varchar, # Internet, WebService, Databases
            datetime_Connect datetime,
            response_TimeMs int,
            status_Code varchar(5),
            status_Message varchar(255)
);

То, что я хотел:

Улучшено быстродействие для долгосрочных целей, потому что оно активно пишет, как каждую минуту.Это также повлияет на то, как я буду называть эти данные позже.Больше информации можно спросить.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Одна таблица, но в первую очередь потому, что это, вероятно, «правильный» путь.

Другие примечания:

  • Производительность записи будет одинаковой в любом случае.
  • Один INSERT в минуту тривиален.Даже 1 / секунда тривиальна.1000 / сек могут стать рискованными.
  • Производительность чтения зависит от того, какую фильтрацию / сортировку вы будете выполнять.Как только мы увидим SELECTs, мы сможем обсудить INDEXes.
  • 1 строка / минута меньше миллиона строк / год, поэтому я не думаю, что что-либо нуждается в обсуждении масштабирования.
  • Ничто (пока) не указывает на то, что PARTITIONing будет полезным.
0 голосов
/ 04 января 2019

В общем, вы должны поместить аналогичную таблицу в одну таблицу.Это имеет много преимуществ с течением времени:

  • Запросы, которые рассматривают различные типы данных, намного проще - и их легче оптимизировать.
  • Вы можете добавлять новые типы просто, ну, в общем,вставка в существующую таблицу.
  • Обслуживание и операции проще.Например, добавление индекса должно происходить только для одной таблицы, а не для нескольких таблиц.
  • В среде только для вставки таблицы будут заполнены страницами данных, что лучше для производительности.

Чтобы такая среда работала лучше, вам понадобятся индексы и, возможно, разбиение.Конкретные индексы зависят от того, как будут использоваться данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...