#wip: SQL Building. Docker container done.

This commit is contained in:
KyMAN 2026-03-03 21:53:09 +01:00
parent 36e6187c04
commit a363133891
5 changed files with 454 additions and 49 deletions

5
.gitignore vendored
View File

@ -3,4 +3,7 @@
__pycache__ __pycache__
*.[Ss]ecrets.* *.[Ss]ecrets.*
*.[Ss]ecret.* *.[Ss]ecret.*
/Python/pyodbc.py /Python/pyodbc.py
/SQLServer/data
/SQLServer/temporary
/SQLServer/scripts

5
SQLServer/Dockerfile Normal file
View File

@ -0,0 +1,5 @@
from mcr.microsoft.com/mssql/server:2022-latest
expose 1433/tcp
user root
env ACCEPT_EULA=Y
env MSSQL_SA_PASSWORD=Abc123..

View File

@ -9,6 +9,9 @@ create procedure dbo.tables_drop as begin
set nocount on set nocount on
-- Level Plains. -- Level Plains.
if object_id(N'dbo.MachineInterfacesPlain', N'U') is not null drop table dbo.MachineInterfacesPlain
if object_id(N'dbo.MachineDisksPlain', N'U') is not null drop table dbo.MachineDisksPlain
if object_id(N'dbo.MachinePlain', N'U') is not null drop table dbo.MachinePlain
-- Level 2. -- Level 2.
if object_id(N'dbo.MachineInterfacesData', N'U') is not null drop table dbo.MachineInterfacesData if object_id(N'dbo.MachineInterfacesData', N'U') is not null drop table dbo.MachineInterfacesData
@ -52,7 +55,7 @@ create procedure dbo.tables_create as begin
date_out datetime, date_out datetime,
constraint machines_pk primary key clustered (id), constraint machines_pk primary key clustered (id),
constraint machines_uk_key unique ([key]), constraint machines_uk_key unique ([key]),
constraint machines_ck_key check ([key] like '[a-zA-Z0-9][a-zA-Z0-9_]{0,31}') with (fillfactor = 90) constraint machines_ck_key check ([key] like '[a-zA-Z0-9][a-zA-Z0-9_]{0,31}')
) )
if object_id(N'dbo.Domains', N'U') is null create table dbo.Domains( if object_id(N'dbo.Domains', N'U') is null create table dbo.Domains(
@ -63,7 +66,7 @@ create procedure dbo.tables_create as begin
date_out datetime, date_out datetime,
constraint domains_pk primary key clustered (id), constraint domains_pk primary key clustered (id),
constraint domains_uk_domain unique nonclustered (domain asc) with (fillfactor = 90), constraint domains_uk_domain unique nonclustered (domain asc) with (fillfactor = 90),
constraint domains_ck_domain check ([domain] like '[a-zA-Z0-9_-.]{1,64}') with (fillfactor = 90) constraint domains_ck_domain check ([domain] like '[a-zA-Z0-9_-.]{1,64}')
) )
@ -75,7 +78,7 @@ create procedure dbo.tables_create as begin
date_out datetime, date_out datetime,
constraint hostnames_pk primary key clustered (id), constraint hostnames_pk primary key clustered (id),
constraint hostnames_uk_name unique nonclustered ([name] asc) with (fillfactor = 90), constraint hostnames_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
constraint hostnames_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}') with (fillfactor = 90) constraint hostnames_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}')
) )
if object_id(N'dbo.Disks', N'U') is null create table dbo.Disks( if object_id(N'dbo.Disks', N'U') is null create table dbo.Disks(
@ -87,17 +90,17 @@ create procedure dbo.tables_create as begin
date_in datetime not null constraint disks_df_date_in default getdate(), date_in datetime not null constraint disks_df_date_in default getdate(),
date_out datetime, date_out datetime,
constraint disks_pk primary key clustered (id), constraint disks_pk primary key clustered (id),
constraint disks_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90), -- constraint disks_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90),
constraint disks_ck_name check ( constraint disks_ck_name check (
[name] like '[a-zA-Z0-9_-]{1,32}' or [name] like '[a-zA-Z0-9_-]{1,32}' or
mountpoint like '[A-Z]:' mountpoint like '[A-Z]:'
) with (fillfactor = 90), ),
constraint disks_ck_size check (size >= 0 and size < power(2, 53)) with (fillfactor = 90), constraint disks_ck_size check (size >= 0 and size < power(2, 53)),
constraint disks_ck_mountpoint check ( constraint disks_ck_mountpoint check (
mountpoint like '/%' or mountpoint like '/%' or
mountpoint like '[a-zA-Z]:\%' or mountpoint like '[a-zA-Z]:\%' or
mountpoint like '\\%' mountpoint like '\\%'
) with (fillfactor = 90) )
) )
if object_id(N'dbo.Interfaces', N'U') is null create table dbo.Interfaces( if object_id(N'dbo.Interfaces', N'U') is null create table dbo.Interfaces(
@ -107,19 +110,20 @@ create procedure dbo.tables_create as begin
date_in datetime not null constraint interfaces_df_date_in default getdate(), date_in datetime not null constraint interfaces_df_date_in default getdate(),
date_out datetime, date_out datetime,
constraint interfaces_pk primary key clustered (id), constraint interfaces_pk primary key clustered (id),
constraint interfaces_uk_machine_name unique nonclustered (machine asc, [name] asc) with (fillfactor = 90), -- constraint interfaces_uk_machine_name unique nonclustered ([name] asc) with (fillfactor = 90),
constraint interfaces_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}') with (fillfactor = 90) constraint interfaces_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}')
) )
if object_id(N'dbo.CandlesTimes', N'U') is null create table dbo.CandlesTimes( if object_id(N'dbo.CandlesTimes', N'U') is null create table dbo.CandlesTimes(
id integer not null identity(1, 1), id integer not null identity(1, 1),
[from] datetime not null, [from] datetime not null,
[to] datetime not null, [to] datetime not null,
iterations integer not null,
date_in datetime not null constraint candles_times_df_date_in default getdate(), date_in datetime not null constraint candles_times_df_date_in default getdate(),
date_out datetime, date_out datetime,
constraint candles_times_pk primary key clustered (id), constraint candles_times_pk primary key clustered (id),
constraint candles_times_uk_from_to unique nonclustered ([from] asc, [to] asc) with (fillfactor = 90), constraint candles_times_uk_from_to unique nonclustered ([from] asc, [to] asc) with (fillfactor = 90),
constraint candles_times_ck_from_to check ([from] < [to]) with (fillfactor = 90) constraint candles_times_ck_from_to check ([from] < [to])
) )
if object_id(N'dbo.BigData', N'U') is null create table dbo.BigData( if object_id(N'dbo.BigData', N'U') is null create table dbo.BigData(
@ -138,7 +142,7 @@ create procedure dbo.tables_create as begin
date_in datetime not null constraint messages_df_date_in default getdate(), date_in datetime not null constraint messages_df_date_in default getdate(),
date_out datetime, date_out datetime,
constraint messages_pk primary key clustered (id), constraint messages_pk primary key clustered (id),
constraint messages_ck_key check ([key] like '[a-zA-Z_][a-zA-Z0-9_]{0,127}') with (fillfactor = 90) constraint messages_ck_key check ([key] like '[a-zA-Z_][a-zA-Z0-9_]{0,127}')
) )
if object_id(N'dbo.Databases', N'U') is null create table dbo.Databases( if object_id(N'dbo.Databases', N'U') is null create table dbo.Databases(
@ -148,7 +152,7 @@ create procedure dbo.tables_create as begin
date_out datetime, date_out datetime,
constraint databases_pk primary key clustered (id), constraint databases_pk primary key clustered (id),
constraint databases_uk_name unique nonclustered ([name] asc) with (fillfactor = 90), constraint databases_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
constraint databases_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,63}') with (fillfactor = 90) constraint databases_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,63}')
) )
-- Level 1. -- Level 1.
@ -173,23 +177,23 @@ create procedure dbo.tables_create as begin
constraint machine_cpu_ck_cpu_in check ( constraint machine_cpu_ck_cpu_in check (
[in] between 0 and 100 and [in] between 0 and 100 and
[in] between minimum and maximum [in] between minimum and maximum
) with (fillfactor = 90), ),
constraint machine_cpu_ck_cpu_out check ( constraint machine_cpu_ck_cpu_out check (
[out] between 0 and 100 and [out] between 0 and 100 and
[out] between minimum and maximum [out] between minimum and maximum
) with (fillfactor = 90), ),
constraint machine_cpu_ck_cpu_minimum check ( constraint machine_cpu_ck_cpu_minimum check (
minimum between 0 and 100 and minimum between 0 and 100 and
minimum <= maximum minimum <= maximum
) with (fillfactor = 90), ),
constraint machine_cpu_ck_cpu_maximum check ( constraint machine_cpu_ck_cpu_maximum check (
maximum between 0 and 100 and maximum between 0 and 100 and
maximum >= minimum maximum >= minimum
) with (fillfactor = 90), ),
constraint machine_cpu_ck_cpu_average check ( constraint machine_cpu_ck_cpu_average check (
average between 0 and 100 and average between 0 and 100 and
average between minimum and maximum average between minimum and maximum
) with (fillfactor = 90) )
) )
if object_id(N'dbo.MachineRAM', N'U') is null create table dbo.MachineRAM( if object_id(N'dbo.MachineRAM', N'U') is null create table dbo.MachineRAM(
@ -213,31 +217,31 @@ create procedure dbo.tables_create as begin
on delete no action, on delete no action,
constraint machine_ram_ck_memory_total check ( constraint machine_ram_ck_memory_total check (
total between 0 and power(2, 53) - 1 total between 0 and power(2, 53) - 1
) with (fillfactor = 90), ),
constraint machine_ram_ck_memory_in check ( constraint machine_ram_ck_memory_in check (
[in] between 0 and power(2, 53) - 1 and [in] between 0 and power(2, 53) - 1 and
[in] between minimum and maximum and [in] between minimum and maximum and
[in] <= total [in] <= total
) with (fillfactor = 90), ),
constraint machine_ram_ck_memory_out check ( constraint machine_ram_ck_memory_out check (
[out] between 0 and power(2, 53) - 1 and [out] between 0 and power(2, 53) - 1 and
[out] between minimum and maximum and [out] between minimum and maximum and
[out] <= total [out] <= total
) with (fillfactor = 90), ),
constraint machine_ram_ck_memory_minimum check ( constraint machine_ram_ck_memory_minimum check (
minimum between 0 and power(2, 53) - 1 and minimum between 0 and power(2, 53) - 1 and
minimum <= total and minimum <= total and
minimum <= maximum minimum <= maximum
) with (fillfactor = 90), ),
constraint machine_ram_ck_memory_maximum check ( constraint machine_ram_ck_memory_maximum check (
maximum between 0 and power(2, 53) - 1 and maximum between 0 and power(2, 53) - 1 and
maximum between total and minimum maximum between total and minimum
) with (fillfactor = 90), ),
constraint machine_ram_ck_memory_average check ( constraint machine_ram_ck_memory_average check (
average between 0 and power(2, 53) - 1 and average between 0 and power(2, 53) - 1 and
average between minimum and maximum and average between minimum and maximum and
average <= total average <= total
) with (fillfactor = 90) )
) )
if object_id(N'dbo.MachineDisks', N'U') is null create table dbo.MachineDisks( if object_id(N'dbo.MachineDisks', N'U') is null create table dbo.MachineDisks(
@ -285,7 +289,7 @@ create procedure dbo.tables_create as begin
on update no action on update no action
on delete no action, on delete no action,
constraint procedures_uk_name unique nonclustered ([database] asc, [name] asc) with (fillfactor = 90), constraint procedures_uk_name unique nonclustered ([database] asc, [name] asc) with (fillfactor = 90),
constraint procedures_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,63}') with (fillfactor = 90) constraint procedures_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,63}')
) )
-- Level 2. -- Level 2.
@ -304,18 +308,18 @@ create procedure dbo.tables_create as begin
on update no action on update no action
on delete no action, on delete no action,
constraint machine_disks_space_ck_free check ( constraint machine_disks_space_ck_free check (
free between 0 and power(2, 53) - 1 and free between 0 and power(2, 53) - 1 -- and
free <= isnull(( -- free <= isnull((
select top 1 disks.[size] -- select top 1 disks.[size]
from dbo.Disks disks -- from dbo.Disks disks
join dbo.MachineDisks machine_disks on machine_disks.[disk] = disks.id -- join dbo.MachineDisks machine_disks on machine_disks.[disk] = disks.id
where -- where
disks.date_out is null and -- disks.date_out is null and
machine_disks.date_out is null and -- machine_disks.date_out is null and
machine_disks.belongs = 1 and -- machine_disks.belongs = 1 and
machine_disks.id = machine_disk -- machine_disks.id = machine_disk
), 0) -- ), 0)
) with (fillfactor = 90) )
) )
if object_id(N'dbo.MachineInterfacesTraffic', N'U') is null create table dbo.MachineInterfacesTraffic( if object_id(N'dbo.MachineInterfacesTraffic', N'U') is null create table dbo.MachineInterfacesTraffic(
@ -336,13 +340,13 @@ create procedure dbo.tables_create as begin
on delete no action, on delete no action,
constraint machine_interfaces_traffic_ck_bytes check ( constraint machine_interfaces_traffic_ck_bytes check (
bytes between 0 and power(2, 53) - 1 bytes between 0 and power(2, 53) - 1
) with (fillfactor = 90), ),
constraint machine_interfaces_traffic_ck_packages check ( constraint machine_interfaces_traffic_ck_packages check (
packages between 0 and power(2, 31) - 1 packages between 0 and power(2, 31) - 1
) with (fillfactor = 90), ),
constraint machine_interfaces_traffic_ck_errors check ( constraint machine_interfaces_traffic_ck_errors check (
errors between 0 and power(2, 31) - 1 errors between 0 and power(2, 31) - 1
) with (fillfactor = 90) )
) )
if object_id(N'dbo.MachineInterfacesData', N'U') is null create table dbo.MachineInterfacesData( if object_id(N'dbo.MachineInterfacesData', N'U') is null create table dbo.MachineInterfacesData(
@ -360,14 +364,14 @@ create procedure dbo.tables_create as begin
constraint machine_interfaces_data_ck_is_ipv6 check ( constraint machine_interfaces_data_ck_is_ipv6 check (
(is_ipv6 = 0 and [address] like '[0-9]%.%.%.%') or (is_ipv6 = 0 and [address] like '[0-9]%.%.%.%') or
(is_ipv6 = 1 and [address] like '%:%') (is_ipv6 = 1 and [address] like '%:%')
) with (fillfactor = 90), ),
constraint machine_interfaces_data_ck_address check ( constraint machine_interfaces_data_ck_address check (
([address] like '[0-9]%.%.%.%' and mask between 0 and 32) or ([address] like '[0-9]%.%.%.%' and mask between 0 and 32) or
([address] like '%:%' and mask between 0 and 128) ([address] like '%:%' and mask between 0 and 128)
) with (fillfactor = 90), ),
constraint machine_interfaces_data_ck_mask check ( constraint machine_interfaces_data_ck_mask check (
(mask between 0 and (case when is_ipv6 = 1 then 128 else 32 end)) (mask between 0 and (case when is_ipv6 = 1 then 128 else 32 end))
) with (fillfactor = 90) )
) )
if object_id(N'dbo.Exceptions', N'U') is null create table dbo.Exceptions( if object_id(N'dbo.Exceptions', N'U') is null create table dbo.Exceptions(
@ -395,28 +399,165 @@ create procedure dbo.tables_create as begin
on delete no action on delete no action
) )
-- Level Plains. -- Level Plains 1.
if object_id(N'dbo.MachinePlain', N'U') is null create table dbo.MachinePlain(
id integer not null identity(1, 1),
[key] varchar(32) not null,
machine integer not null,
candle_time integer not null,
machine_ram integer not null,
machine_cpu integer not null,
ram_total bigint not null,
ram_in bigint not null,
ram_out bigint not null,
ram_minimum bigint not null,
ram_maximum bigint not null,
ram_average bigint not null,
cpu_in float not null,
cpu_out float not null,
cpu_minimum float not null,
cpu_maximum float not null,
cpu_average float not null,
date_in datetime not null constraint machine_plain_df_date_in default getdate(),
date_out datetime,
constraint machine_plain_pk primary key clustered (id),
constraint machine_plain_fk_machine foreign key (machine) references dbo.Machines(id)
on update no action
on delete no action,
constraint machine_plain_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
on update no action
on delete no action,
constraint machine_plain_fk_machine_ram foreign key (machine_ram) references dbo.MachineRAM(id)
on update no action
on delete no action,
constraint machine_plain_fk_machine_cpu foreign key (machine_cpu) references dbo.MachineCPU(id)
on update no action
on delete no action,
constraint machine_plain_uk_key unique ([key]),
constraint machine_plain_ck_key check ([key] like '[a-zA-Z0-9][a-zA-Z0-9_]{0,31}'),
constraint machine_plain_ck_memory_total check (
ram_total between 0 and power(2, 53) - 1
),
constraint machine_plain_ck_memory_in check (
ram_in between 0 and power(2, 53) - 1 and
ram_in between ram_minimum and ram_maximum and
ram_in <= ram_total
),
constraint machine_plain_ck_memory_out check (
ram_out between 0 and power(2, 53) - 1 and
ram_out between ram_minimum and ram_maximum and
ram_out <= ram_total
),
constraint machine_plain_ck_memory_minimum check (
ram_minimum between 0 and power(2, 53) - 1 and
ram_minimum <= ram_total and
ram_minimum <= ram_maximum
),
constraint machine_plain_ck_memory_maximum check (
ram_maximum between 0 and power(2, 53) - 1 and
ram_maximum between ram_total and ram_minimum
),
constraint machine_plain_ck_memory_average check (
ram_average between 0 and power(2, 53) - 1 and
ram_average between ram_minimum and ram_maximum and
ram_average <= ram_total
),
constraint machine_plain_ck_cpu_in check (
cpu_in between 0 and 100 and
cpu_in between cpu_minimum and cpu_maximum
),
constraint machine_plain_ck_cpu_out check (
cpu_out between 0 and 100 and
cpu_out between cpu_minimum and cpu_maximum
),
constraint machine_plain_ck_cpu_minimum check (
cpu_minimum between 0 and 100 and
cpu_minimum <= cpu_maximum
),
constraint machine_plain_ck_cpu_maximum check (
cpu_maximum between 0 and 100 and
cpu_maximum >= cpu_minimum
),
constraint machine_plain_ck_cpu_average check (
cpu_average between 0 and 100 and
cpu_average between cpu_minimum and cpu_maximum
)
)
-- Level Plains 1.
if object_id(N'dbo.MachineInterfacesPlain', N'U') is null create table dbo.MachineInterfacesPlain( if object_id(N'dbo.MachineInterfacesPlain', N'U') is null create table dbo.MachineInterfacesPlain(
id integer not null identity(1, 1), id integer not null identity(1, 1),
plain integer not null,
machine integer not null, machine integer not null,
interface integer not null, interface integer not null,
machine_interface integer not null, machine_interface integer not null,
candle_time integer not null, candle_time integer not null,
[name] varchar(32) not null,
bytes bigint not null, bytes bigint not null,
packages integer not null, packages integer not null,
errors integer not null, errors integer not null,
is_ipv6 bit not null constraint machine_interfaces_data_df_is_ipv6 default 0, is_ipv6 bit not null constraint machine_interfaces_plain_df_is_ipv6 default 0,
[address] varchar(45) not null, [address] varchar(45) not null,
mask tinyint not null, mask tinyint not null,
belongs bit not null constraint machine_interfaces_plain_df_belongs default 1, belongs bit not null constraint machine_interfaces_plain_df_belongs default 1,
date_in datetime not null constraint machine_interfaces_plain_df_date_in default getdate(), date_in datetime not null constraint machine_interfaces_plain_df_date_in default getdate(),
date_out datetime, date_out datetime,
constraint machine_interfaces_plain_pk primary key clustered (id), constraint machine_interfaces_plain_pk primary key clustered (id),
constraint machine_interfaces_plain_fk_plain foreign key (plain) references dbo.MachinePlain(id)
on update no action
on delete no action,
constraint machine_interfaces_plain_fk_machine foreign key (machine) references dbo.Machines(id) constraint machine_interfaces_plain_fk_machine foreign key (machine) references dbo.Machines(id)
on update no action on update no action
on delete no action, on delete no action,
constraint machine_interfaces_plain_fk_interface foreign key (interface) references dbo.Interfaces(id)
on update no action
on delete no action,
constraint machine_interfaces_plain_uk_machine_interface unique nonclustered (machine asc, [interface] asc) with (fillfactor = 90), constraint machine_interfaces_plain_uk_machine_interface unique nonclustered (machine asc, [interface] asc) with (fillfactor = 90),
constraint machine_interfaces_plain_ck_interface check ([interface] like '[a-zA-Z0-9_-]{1,32}') with (fillfactor = 90) -- constraint machine_interfaces_plain_uk_machine_name unique nonclustered ([name] asc) with (fillfactor = 90),
constraint machine_interfaces_plain_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}'),
constraint machine_interfaces_plain_ck_interface check ([interface] like '[a-zA-Z0-9_-]{1,32}')
)
if object_id(N'dbo.MachineDisksPlain', N'U') is null create table dbo.MachineDisksPlain(
id integer not null identity(1, 1),
plain integer not null,
machine integer not null,
[disk] integer not null,
machine_disk integer not null,
candle_time integer not null,
[name] varchar(32) not null,
[size] bigint not null,
mountpoint varchar(128) not null,
free bigint not null,
belongs bit not null constraint machine_disks_plain_df_belongs default 1,
date_in datetime not null constraint machine_disks_plain_df_date_in default getdate(),
date_out datetime,
constraint machine_disks_plain_pk primary key clustered (id),
constraint machine_disks_plain_fk_plain foreign key (plain) references dbo.MachinePlain(id)
on update no action
on delete no action,
constraint machine_disks_plain_fk_machine foreign key (machine) references dbo.Machines(id)
on update no action
on delete no action,
constraint machine_disks_plain_fk_disk foreign key ([disk]) references dbo.Disks(id)
on update no action
on delete no action,
constraint machine_disks_plain_uk_machine_disk unique nonclustered (machine asc, [disk] asc) with (fillfactor = 90),
-- constraint machine_disks_plain_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90),
constraint machine_disks_plain_ck_name check (
[name] like '[a-zA-Z0-9_-]{1,32}' or
mountpoint like '[A-Z]:'
),
constraint machine_disks_plain_ck_size check (size >= 0 and size < power(2, 53)),
constraint machine_disks_plain_ck_mountpoint check (
mountpoint like '/%' or
mountpoint like '[a-zA-Z]:\%' or
mountpoint like '\\%'
),
constraint machine_disks_plain_ck_free check (
free between 0 and power(2, 53) - 1 and
free <= [size]
)
) )
end end
@ -451,8 +592,8 @@ go
if object_id(N'dbo.hash_big_data', N'FN') is not null drop function dbo.hash_big_data if object_id(N'dbo.hash_big_data', N'FN') is not null drop function dbo.hash_big_data
go go
create function dbo.hash_big_data (@value varchar(max)) returns binary(64) as begin create function dbo.hash_big_data (@value varchar(max)) returns binary(64) begin
return select top 1 convert(binary(64), hashbytes('SHA2_256', convert(nvarchar(max), @value))) return (select top 1 convert(binary(64), hashbytes('SHA2_256', convert(nvarchar(max), @value))))
end end
go go
@ -606,4 +747,235 @@ where
messages.date_out is null and messages.date_out is null and
parameters.date_out is null and parameters.date_out is null and
exception.date_out is null exception.date_out is null
go go
if object_id(N'dbo.get_basic_data_ids', N'P') is not null drop procedure dbo.get_basic_data_ids
go
create procedure dbo.get_basic_data_ids
@key varchar(32),
@candle_start datetime,
@candle_end datetime,
@candle_interations integer,
@machine_id integer output,
@candle_time_id integer output
as begin
set nocount on
set @machine_id = (
select top 1 id from dbo.Machines where
date_out is null and
[key] = @key
)
if @machine_id is null begin
insert into dbo.BasicData([key]) values (@key)
set @machine_id = scope_identity()
end
set @machine_id = @machine_id
set @candle_time_id = (
select top 1 id from dbo.CandlesTimes where
date_out is null and
[from] = @candle_start and
[to] = @candle_end and
iterations = @candle_interations
)
if @candle_time_id is null begin
insert into dbo.CandlesTimes([from], [to], iterations) values (@candle_start, @candle_end, @candle_interations)
set @candle_time_id = scope_identity()
end
set @candle_time_id = @candle_time_id
end
go
if object_id(N'dbo.set_machine_data', N'P') is not null drop procedure dbo.set_machine_data
go
create procedure dbo.set_machine_data
@key varchar(32),
@candle_start datetime,
@candle_end datetime,
@candle_interations integer,
@ram_total bigint,
@ram_in bigint,
@ram_out bigint,
@ram_minimum bigint,
@ram_maximum bigint,
@ram_average bigint,
@cpu_in float,
@cpu_out float,
@cpu_minimum float,
@cpu_maximum float,
@cpu_average float
as begin
declare @machine_id integer
declare @candle_time_id integer
declare @machine_ram_id integer
declare @machine_cpu_id integer
set nocount on
execute dbo.get_basic_data_ids
@key,
@candle_start,
@candle_end,
@candle_interations,
@machine_id output,
@candle_time_id output
insert into dbo.MachineRAM(machine, candle_time, total, [in], [out], minimum, maximum, average) values
(@machine_id, @candle_time_id, @ram_total, @ram_in, @ram_out, @ram_minimum, @ram_maximum, @ram_average)
set @machine_ram_id = scope_identity()
insert into dbo.MachineCPU(machine, candle_time, [in], [out], minimum, maximum, average) values
(@machine_id, @candle_time_id, @cpu_in, @cpu_out, @cpu_minimum, @cpu_maximum, @cpu_average)
set @machine_cpu_id = scope_identity()
if (select top 1 id from dbo.MachinePlain where
date_out is null and
machine = @machine_id and
candle_time = @candle_time_id
) is null
insert into dbo.MachinePlain([key], machine, candle_time, machine_ram, machine_cpu, ram_total, ram_in, ram_out, ram_minimum, ram_maximum, ram_average, cpu_in, cpu_out, cpu_minimum, cpu_maximum, cpu_average) values
(@key, @machine_id, @candle_time_id, @machine_ram_id, @machine_cpu_id, @ram_total, @ram_in, @ram_out, @ram_minimum, @ram_maximum, @ram_average, @cpu_in, @cpu_out, @cpu_minimum, @cpu_maximum, @cpu_average)
else
update dbo.MachinePlain set
machine_ram = @machine_ram_id,
machine_cpu = @machine_cpu_id,
ram_total = @ram_total,
ram_in = @ram_in,
ram_out = @ram_out,
ram_minimum = @ram_minimum,
ram_maximum = @ram_maximum,
ram_average = @ram_average,
cpu_in = @cpu_in,
cpu_out = @cpu_out,
cpu_minimum = @cpu_minimum,
cpu_maximum = @cpu_maximum,
cpu_average = @cpu_average
where
date_out is null and
[key] = @key and
candle_time = @candle_time_id
end
go
if object_id(N'dbo.set_machine_interface_data', N'P') is not null drop procedure dbo.set_machine_interface_data
go
create procedure dbo.set_machine_interface_data
@key varchar(32),
@candle_start datetime,
@candle_end datetime,
@candle_interations integer,
@name varchar(32),
@bytes bigint,
@packages integer,
@errors integer,
@is_ipv6 bit,
@address varchar(45),
@mask tinyint
as begin
declare @machine_id integer
declare @candle_time_id integer
declare @interface_id integer = (select top 1 id from dbo.Interfaces where
date_out is null and
[name] = @name
)
declare @machine_interface_id integer
declare @machine_interface_data_id integer
declare @machine_interface_traffic_id integer
set nocount on
execute dbo.get_basic_data_ids
@key,
@candle_start,
@candle_end,
@candle_interations,
@machine_id output,
@candle_time_id output
if @interface_id is null begin
insert into dbo.Interfaces([name]) values (@name)
set @interface_id = scope_identity()
end
set @machine_interface_id = (
select top 1 id from dbo.MachineInterfaces where
date_out is null and
machine = @machine_id and
[interface] = @interface_id and
[name] = @name
)
if @machine_interface_id is null begin
insert into dbo.MachineInterfaces(machine, [interface], [name]) values (@machine_id, @interface_id, @name)
set @machine_interface_id = scope_identity()
end
set @machine_interface_data_id = (
select top 1 id from dbo.MachineInterfacesData where
date_out is null and
machine_interface = @machine_interface_id and
is_ipv6 = @is_ipv6 and
[address] = @address and
mask = @mask
)
if @machine_interface_data_id is null begin
insert into dbo.MachineInterfacesData(machine_interface, is_ipv6, [address], mask) values
(@machine_interface_id, @is_ipv6, @address, @mask)
set @machine_interface_data_id = scope_identity()
end else begin
set @machine_interface_data_id = (
select top 1 id from dbo.MachineInterfacesData where
date_out is null and
machine_interface = @machine_interface_id
)
if @machine_interface_data_id is null begin
insert into dbo.MachineInterfacesData(machine_interface, is_ipv6, [address], mask) values
(@machine_interface_id, @is_ipv6, @address, @mask)
set @machine_interface_data_id = scope_identity()
end else
update dbo.MachineInterfacesData set
is_ipv6 = @is_ipv6,
[address] = @address,
mask = @mask
where
date_out is null and
machine_interface = @machine_interface_id and
candle_time = @candle_time_id
end
insert into dbo.MachineInterfacesTraffic(machine_interface, candle_time, bytes, packages, errors) values
(@machine_interface_id, @candle_time_id, @bytes, @packages, @errors)
set @machine_interface_traffic_id = scope_identity()
if (select top 1 id from dbo.MachineInterfacesPlain where
date_out is null and
machine = @machine_id and
[interface] = @interface_id and
candle_time = @candle_time_id
) is null
insert into dbo.MachineInterfacesPlain(plain, machine, [interface], machine_interface, candle_time, [name], bytes, packages, errors, is_ipv6, [address], mask) values
(null, @machine_id, @interface_id, @machine_interface_id, @candle_time_id, @name, @bytes, @packages, @errors, @is_ipv6, @address, @mask)
else
update dbo.MachineInterfacesPlain set
machine_interface = @machine_interface_id,
bytes = @bytes,
packages = @packages,
errors = @errors,
is_ipv6 = @is_ipv6,
[address] = @address,
mask = @mask
where
date_out is null and
machine = @machine_id and
[interface] = @interface_id and
candle_time = @candle_time_id
end
go

4
SQLServer/docker.rebuild.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
directory=`dirname $(readlink -f "$0")`
[ "$(docker images -q nucelar-monitor:sql-server 2>/dev/null)" ] && docker image remove nucelar-monitor:sql-server --force
docker build -f $directory/Dockerfile -t nucelar-monitor:sql-server $directory --no-cache

21
docker-compose.yml Normal file
View File

@ -0,0 +1,21 @@
services:
nucelar-monitor-sql-server:
image: nucelar-monitor:sql-server
container_name: nucelar-monitor-sql-server
volumes:
- ./SQLServer/data:/var/opt/mssql
- ./SQLServer/temporary:/temporary
- ./SQLServer/scripts:/scripts
ports:
- 21433:1433/tcp
networks:
nucelar-monitor-network:
ipv4_address: 172.20.201.222
networks:
nucelar-monitor-network:
driver: bridge
ipam:
config:
- subnet: 172.20.201.0/24