コード例 #1
0
        private async Task CreateEventLogItemsDatabaseAsync(CancellationToken cancellationToken = default)
        {
            var commandDbText = $@"CREATE DATABASE IF NOT EXISTS {_databaseName}";

            await using var cmdDb = _connection.CreateCommand();
            cmdDb.CommandText     = commandDbText;
            await cmdDb.ExecuteNonQueryAsync(cancellationToken);

            await _connection.ChangeDatabaseAsync(_databaseName, cancellationToken);

            var commandText =
                $@"CREATE TABLE IF NOT EXISTS {TableName}
                (
                    FileName LowCardinality(String),
                    EndPosition Int64 Codec(DoubleDelta, LZ4),
                    LgfEndPosition Int64 Codec(DoubleDelta, LZ4),
                    Id Int64 Codec(DoubleDelta, LZ4),
                    DateTime DateTime('UTC') Codec(Delta, LZ4),
                    TransactionStatus LowCardinality(String),
                    TransactionDate DateTime('UTC') Codec(Delta, LZ4),
                    TransactionNumber Int64 Codec(DoubleDelta, LZ4),
                    UserUuid LowCardinality(String),
                    User LowCardinality(String),
                    Computer LowCardinality(String),
                    Application LowCardinality(String),
                    Connection Int64 Codec(DoubleDelta, LZ4),
                    Event LowCardinality(String),
                    Severity LowCardinality(String),
                    Comment String Codec(ZSTD),
                    MetadataUuid String Codec(ZSTD),
                    Metadata LowCardinality(String),
                    Data String Codec(ZSTD),
                    DataPresentation String Codec(ZSTD),
                    Server LowCardinality(String),
                    MainPort Int32 Codec(DoubleDelta, LZ4),
                    AddPort Int32 Codec(DoubleDelta, LZ4),
                    Session Int64 Codec(DoubleDelta, LZ4)
                )
                engine = MergeTree()
                PARTITION BY (toYYYYMM(DateTime))
                ORDER BY (DateTime, EndPosition)
                SETTINGS index_granularity = 8192;";

            await using var cmd = _connection.CreateCommand();
            cmd.CommandText     = commandText;
            await cmd.ExecuteNonQueryAsync(cancellationToken);
        }