Apinizer Logları için Tablo Oluşturma Komutları
Bu sayfadaki DDL komutları, Apinizer'ın varsayılan tablo adlarını (log_ApiProxyTraffic, log_PolicyCapture, log_AuditEvent, log_Application, log_UnsentMessage, log_TokenTraffic, log_LoginLog) ve şemasız tanım kullanır.
Özel şema veya özel tablo adı tercih ediyorsanız bağlantı tanımındaki Log Hedefi Olarak Kullanım — Tablo Şeması bölümünden yapılandırabilirsiniz. DDL'deki tablo adını değiştirebilir veya şema ön eki ekleyebilirsiniz; ancak kolon adları ve veri tipleri birebir aynı kalmalıdır — aksi halde log kayıtları INSERT sırasında "kolon bulunamadı" hatasıyla başarısız olur.
Özellikle Oracle'da küçük/büyük harf duyarlı (case-sensitive) tablo adları kullanıyorsanız (örn. CREATE TABLE "HR"."logtablosu") bağlantı tanımında tablo adını çift tırnak içinde girmeniz gerekir.
Detay için Veritabanı Bağlantısı sayfasına bakın.
Apinizer, DB Connector ile trafik ve denetim kayıtlarını ilişkisel veritabanlarında saklayabilir. Aşağıdaki tablolar, desteklenen her veritabanı tipi için uygun veri tipleriyle hazırlanmıştır.
Kolon adları tüm veritabanı tiplerinde aynıdır (snake_case). Sadece veri tipleri veritabanına göre farklılık gösterir.
API Proxy Trafik Logu
API Proxy üzerinden geçen tüm HTTP trafiğinin kaydedildiği ana tablodur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_ApiProxyTraffic (
id VARCHAR2(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
correlation_id VARCHAR2(255),
environment_id VARCHAR2(255),
project_id VARCHAR2(255),
application_id VARCHAR2(255),
application_name VARCHAR2(255),
api_proxy_id VARCHAR2(255),
api_proxy_name VARCHAR2(255),
enum_api_type VARCHAR2(255),
proxy_relative_path VARCHAR2(255),
proxy_method_id VARCHAR2(255),
proxy_method_name VARCHAR2(255),
x_forwarded_for VARCHAR2(255),
username_or_key VARCHAR2(255),
req_context_path VARCHAR2(255),
req_remote_addr VARCHAR2(255),
req_http_method VARCHAR2(255),
req_content_type VARCHAR2(255),
req_path_info VARCHAR2(255),
req_query_string VARCHAR2(255),
req_remote_user VARCHAR2(255),
req_session_id VARCHAR2(255),
req_request_uri VARCHAR2(255),
req_char_encoding VARCHAR2(255),
req_content_length NUMBER(10),
req_protocol VARCHAR2(255),
req_scheme VARCHAR2(255),
req_server_name VARCHAR2(255),
req_server_port NUMBER(10),
req_remote_host VARCHAR2(255),
req_remote_port NUMBER(10),
req_local_name VARCHAR2(255),
req_local_addr VARCHAR2(255),
req_local_port NUMBER(10),
from_client_ro_param CLOB,
from_client_ro_header CLOB,
from_client_ro_body CLOB,
to_backend_param CLOB,
to_backend_header CLOB,
to_backend_body CLOB,
routing_address VARCHAR2(255),
routing_retry_count NUMBER(10),
routing_failover_cnt NUMBER(10),
from_backend_ro_header CLOB,
from_backend_ro_body CLOB,
to_client_header CLOB,
to_client_body CLOB,
time_req_pipeline NUMBER(10),
time_resp_pipeline NUMBER(10),
time_routing_total NUMBER(10),
time_api_proxy_total NUMBER(10),
size_request_total NUMBER(10),
size_response_total NUMBER(10),
cache_hit NUMBER(1),
status_code NUMBER(10),
error_type VARCHAR2(255),
parent_error_type VARCHAR2(255),
result_type VARCHAR2(255),
location_lat NUMBER,
location_lon NUMBER,
is_canary_request NUMBER(1),
canary_routing_status VARCHAR2(255),
mirror_count NUMBER(10),
mirror_success_count NUMBER(10),
mirror_failure_count NUMBER(10),
mirror_total_duration NUMBER(19),
mirror_addresses CLOB
);
CREATE TABLE log_ApiProxyTraffic (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP NULL,
correlation_id VARCHAR(255),
environment_id VARCHAR(255),
project_id VARCHAR(255),
application_id VARCHAR(255),
application_name VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
enum_api_type VARCHAR(255),
proxy_relative_path VARCHAR(255),
proxy_method_id VARCHAR(255),
proxy_method_name VARCHAR(255),
x_forwarded_for VARCHAR(255),
username_or_key VARCHAR(255),
req_context_path VARCHAR(255),
req_remote_addr VARCHAR(255),
req_http_method VARCHAR(255),
req_content_type VARCHAR(255),
req_path_info VARCHAR(255),
req_query_string VARCHAR(255),
req_remote_user VARCHAR(255),
req_session_id VARCHAR(255),
req_request_uri VARCHAR(255),
req_char_encoding VARCHAR(255),
req_content_length INT,
req_protocol VARCHAR(255),
req_scheme VARCHAR(255),
req_server_name VARCHAR(255),
req_server_port INT,
req_remote_host VARCHAR(255),
req_remote_port INT,
req_local_name VARCHAR(255),
req_local_addr VARCHAR(255),
req_local_port INT,
from_client_ro_param TEXT,
from_client_ro_header TEXT,
from_client_ro_body LONGTEXT,
to_backend_param TEXT,
to_backend_header TEXT,
to_backend_body LONGTEXT,
routing_address VARCHAR(255),
routing_retry_count INT,
routing_failover_cnt INT,
from_backend_ro_header TEXT,
from_backend_ro_body LONGTEXT,
to_client_header TEXT,
to_client_body LONGTEXT,
time_req_pipeline INT,
time_resp_pipeline INT,
time_routing_total INT,
time_api_proxy_total INT,
size_request_total INT,
size_response_total INT,
cache_hit TINYINT(1),
status_code INT,
error_type VARCHAR(255),
parent_error_type VARCHAR(255),
result_type VARCHAR(255),
location_lat DOUBLE,
location_lon DOUBLE,
is_canary_request TINYINT(1),
canary_routing_status VARCHAR(255),
mirror_count INT,
mirror_success_count INT,
mirror_failure_count INT,
mirror_total_duration BIGINT,
mirror_addresses TEXT
);
CREATE TABLE log_ApiProxyTraffic (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
correlation_id VARCHAR(255),
environment_id VARCHAR(255),
project_id VARCHAR(255),
application_id VARCHAR(255),
application_name VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
enum_api_type VARCHAR(255),
proxy_relative_path VARCHAR(255),
proxy_method_id VARCHAR(255),
proxy_method_name VARCHAR(255),
x_forwarded_for VARCHAR(255),
username_or_key VARCHAR(255),
req_context_path VARCHAR(255),
req_remote_addr VARCHAR(255),
req_http_method VARCHAR(255),
req_content_type VARCHAR(255),
req_path_info VARCHAR(255),
req_query_string VARCHAR(255),
req_remote_user VARCHAR(255),
req_session_id VARCHAR(255),
req_request_uri VARCHAR(255),
req_char_encoding VARCHAR(255),
req_content_length INTEGER,
req_protocol VARCHAR(255),
req_scheme VARCHAR(255),
req_server_name VARCHAR(255),
req_server_port INTEGER,
req_remote_host VARCHAR(255),
req_remote_port INTEGER,
req_local_name VARCHAR(255),
req_local_addr VARCHAR(255),
req_local_port INTEGER,
from_client_ro_param TEXT,
from_client_ro_header TEXT,
from_client_ro_body TEXT,
to_backend_param TEXT,
to_backend_header TEXT,
to_backend_body TEXT,
routing_address VARCHAR(255),
routing_retry_count INTEGER,
routing_failover_cnt INTEGER,
from_backend_ro_header TEXT,
from_backend_ro_body TEXT,
to_client_header TEXT,
to_client_body TEXT,
time_req_pipeline INTEGER,
time_resp_pipeline INTEGER,
time_routing_total INTEGER,
time_api_proxy_total INTEGER,
size_request_total INTEGER,
size_response_total INTEGER,
cache_hit BOOLEAN,
status_code INTEGER,
error_type VARCHAR(255),
parent_error_type VARCHAR(255),
result_type VARCHAR(255),
location_lat DOUBLE PRECISION,
location_lon DOUBLE PRECISION,
is_canary_request BOOLEAN,
canary_routing_status VARCHAR(255),
mirror_count INTEGER,
mirror_success_count INTEGER,
mirror_failure_count INTEGER,
mirror_total_duration BIGINT,
mirror_addresses TEXT
);
CREATE TABLE log_ApiProxyTraffic (
id NVARCHAR(255) PRIMARY KEY,
log_timestamp DATETIME2,
correlation_id NVARCHAR(255),
environment_id NVARCHAR(255),
project_id NVARCHAR(255),
application_id NVARCHAR(255),
application_name NVARCHAR(255),
api_proxy_id NVARCHAR(255),
api_proxy_name NVARCHAR(255),
enum_api_type NVARCHAR(255),
proxy_relative_path NVARCHAR(255),
proxy_method_id NVARCHAR(255),
proxy_method_name NVARCHAR(255),
x_forwarded_for NVARCHAR(255),
username_or_key NVARCHAR(255),
req_context_path NVARCHAR(255),
req_remote_addr NVARCHAR(255),
req_http_method NVARCHAR(255),
req_content_type NVARCHAR(255),
req_path_info NVARCHAR(255),
req_query_string NVARCHAR(255),
req_remote_user NVARCHAR(255),
req_session_id NVARCHAR(255),
req_request_uri NVARCHAR(255),
req_char_encoding NVARCHAR(255),
req_content_length INT,
req_protocol NVARCHAR(255),
req_scheme NVARCHAR(255),
req_server_name NVARCHAR(255),
req_server_port INT,
req_remote_host NVARCHAR(255),
req_remote_port INT,
req_local_name NVARCHAR(255),
req_local_addr NVARCHAR(255),
req_local_port INT,
from_client_ro_param NVARCHAR(MAX),
from_client_ro_header NVARCHAR(MAX),
from_client_ro_body NVARCHAR(MAX),
to_backend_param NVARCHAR(MAX),
to_backend_header NVARCHAR(MAX),
to_backend_body NVARCHAR(MAX),
routing_address NVARCHAR(255),
routing_retry_count INT,
routing_failover_cnt INT,
from_backend_ro_header NVARCHAR(MAX),
from_backend_ro_body NVARCHAR(MAX),
to_client_header NVARCHAR(MAX),
to_client_body NVARCHAR(MAX),
time_req_pipeline INT,
time_resp_pipeline INT,
time_routing_total INT,
time_api_proxy_total INT,
size_request_total INT,
size_response_total INT,
cache_hit BIT,
status_code INT,
error_type NVARCHAR(255),
parent_error_type NVARCHAR(255),
result_type NVARCHAR(255),
location_lat FLOAT,
location_lon FLOAT,
is_canary_request BIT,
canary_routing_status NVARCHAR(255),
mirror_count INT,
mirror_success_count INT,
mirror_failure_count INT,
mirror_total_duration BIGINT,
mirror_addresses NVARCHAR(MAX)
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt kimliği |
| log_timestamp | Log kaydının oluşturulma zamanı |
| correlation_id | İsteğe özgü korelasyon kimliği; aynı istek zincirindeki kayıtları ilişkilendirir |
| environment_id | İsteğin işlendiği ortam kimliği |
| project_id | API'nin ait olduğu proje kimliği |
| application_id | İsteği yapan uygulamanın kimliği |
| application_name | İsteği yapan uygulamanın adı |
| api_proxy_id | İstek için kullanılan API Proxy kimliği |
| api_proxy_name | İstek için kullanılan API Proxy adı |
| enum_api_type | API tipi (REST, SOAP vb.) |
| proxy_relative_path | API Proxy göreli yolu |
| proxy_method_id | Eşleşen metot kimliği |
| proxy_method_name | Eşleşen metot adı |
| x_forwarded_for | İstemcinin gerçek IP adresi (proxy/yük dengeleyici zinciri) |
| username_or_key | Kimlik doğrulamada kullanılan kullanıcı adı veya API anahtarı |
| req_context_path | İstek bağlam yolu |
| req_remote_addr | Uzak adres |
| req_http_method | HTTP metodu (GET, POST, PUT vb.) |
| req_content_type | İsteğin içerik tipi |
| req_path_info | İstek yol bilgisi |
| req_query_string | İstek sorgu dizisi |
| req_remote_user | Uzak kullanıcı |
| req_session_id | Oturum kimliği |
| req_request_uri | İstek URI'si |
| req_char_encoding | İstek karakter kodlaması |
| req_content_length | İstek içerik uzunluğu (byte) |
| req_protocol | Protokol |
| req_scheme | Şema (http/https) |
| req_server_name | Sunucu adı |
| req_server_port | Sunucu portu |
| req_remote_host | Uzak host |
| req_remote_port | Uzak port |
| req_local_name | Yerel ad |
| req_local_addr | Yerel adres |
| req_local_port | Yerel port |
| from_client_ro_param | İstemciden gelen sorgu parametreleri (JSON) |
| from_client_ro_header | İstemciden gelen başlıklar (JSON) |
| from_client_ro_body | İstemciden gelen istek gövdesi |
| to_backend_param | Arka uca gönderilen sorgu parametreleri (JSON) |
| to_backend_header | Arka uca gönderilen başlıklar (JSON) |
| to_backend_body | Arka uca gönderilen istek gövdesi |
| routing_address | Yönlendirme yapılan arka uç adresi |
| routing_retry_count | Yeniden deneme sayısı |
| routing_failover_cnt | Yük devretme sayısı |
| from_backend_ro_header | Arka uçtan gelen yanıt başlıkları (JSON) |
| from_backend_ro_body | Arka uçtan gelen yanıt gövdesi |
| to_client_header | İstemciye gönderilen yanıt başlıkları (JSON) |
| to_client_body | İstemciye gönderilen yanıt gövdesi |
| time_req_pipeline | İstek pipeline süresi (ms) |
| time_resp_pipeline | Yanıt pipeline süresi (ms) |
| time_routing_total | Toplam yönlendirme süresi (ms) |
| time_api_proxy_total | Toplam API Proxy işlem süresi (ms) |
| size_request_total | İstek boyutu (byte) |
| size_response_total | Yanıt boyutu (byte) |
| cache_hit | Yanıtın önbellekten alınıp alınmadığı |
| status_code | HTTP yanıt kodu |
| error_type | Hata tipi |
| parent_error_type | Üst hata tipi |
| result_type | İşlem sonucu |
| location_lat | Coğrafi konum — enlem |
| location_lon | Coğrafi konum — boylam |
| is_canary_request | Canary yönlendirme olup olmadığı |
| canary_routing_status | Canary yönlendirme durumu |
| mirror_count | Yansıtma sayısı |
| mirror_success_count | Başarılı yansıtma sayısı |
| mirror_failure_count | Başarısız yansıtma sayısı |
| mirror_total_duration | Toplam yansıtma süresi (ms) |
| mirror_addresses | Yansıtma adresleri (JSON) |
Önerilen İndeksler
Bu tablo, en yüksek hacimli log tablosudur. Aşağıdaki indeksler en sık kullanılan sorgu kalıplarını karşılar (uçtan uca izleme, zaman aralığı taramaları, proxy/proje bazlı filtreleme, hata analizi).
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_apitraffic_correlation ON log_ApiProxyTraffic(correlation_id);
CREATE INDEX idx_apitraffic_timestamp ON log_ApiProxyTraffic(log_timestamp);
CREATE INDEX idx_apitraffic_proxy ON log_ApiProxyTraffic(api_proxy_id);
CREATE INDEX idx_apitraffic_project ON log_ApiProxyTraffic(project_id);
CREATE INDEX idx_apitraffic_status ON log_ApiProxyTraffic(status_code);
CREATE INDEX idx_apitraffic_result ON log_ApiProxyTraffic(result_type);
CREATE INDEX idx_apitraffic_correlation ON log_ApiProxyTraffic(correlation_id);
CREATE INDEX idx_apitraffic_timestamp ON log_ApiProxyTraffic(log_timestamp);
CREATE INDEX idx_apitraffic_proxy ON log_ApiProxyTraffic(api_proxy_id);
CREATE INDEX idx_apitraffic_project ON log_ApiProxyTraffic(project_id);
CREATE INDEX idx_apitraffic_status ON log_ApiProxyTraffic(status_code);
CREATE INDEX idx_apitraffic_result ON log_ApiProxyTraffic(result_type);
CREATE INDEX idx_apitraffic_correlation ON log_ApiProxyTraffic(correlation_id);
CREATE INDEX idx_apitraffic_timestamp ON log_ApiProxyTraffic(log_timestamp);
CREATE INDEX idx_apitraffic_proxy ON log_ApiProxyTraffic(api_proxy_id);
CREATE INDEX idx_apitraffic_project ON log_ApiProxyTraffic(project_id);
CREATE INDEX idx_apitraffic_status ON log_ApiProxyTraffic(status_code);
CREATE INDEX idx_apitraffic_result ON log_ApiProxyTraffic(result_type);
CREATE INDEX idx_apitraffic_correlation ON log_ApiProxyTraffic(correlation_id);
CREATE INDEX idx_apitraffic_timestamp ON log_ApiProxyTraffic(log_timestamp);
CREATE INDEX idx_apitraffic_proxy ON log_ApiProxyTraffic(api_proxy_id);
CREATE INDEX idx_apitraffic_project ON log_ApiProxyTraffic(project_id);
CREATE INDEX idx_apitraffic_status ON log_ApiProxyTraffic(status_code);
CREATE INDEX idx_apitraffic_result ON log_ApiProxyTraffic(result_type);
Bölümleme (Partitioning)
Bu tablo, canlı trafik altında çok hızlı büyür. log_timestamp üzerinde günlük partition uygulanması güçlü bir şekilde önerilir. Bu sayede saklama politikası DROP PARTITION ile uygulanabilir ve zaman aralığı sorguları yalnızca ilgili partition'ları tarar. Veritabanına özel örnekler için Partition Söz Dizimi bölümüne bakabilirsiniz.
Token Trafik Logu
OAuth/JWT token işlemlerinin kaydedildiği tablodur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_TokenTraffic (
id VARCHAR2(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
correlation_id VARCHAR2(255),
environment_id VARCHAR2(255),
project_id VARCHAR2(255),
application_id VARCHAR2(255),
application_name VARCHAR2(255),
api_proxy_id VARCHAR2(255),
api_proxy_name VARCHAR2(255),
x_forwarded_for VARCHAR2(255),
req_remote_addr VARCHAR2(255),
req_http_method VARCHAR2(255),
req_content_type VARCHAR2(255),
username_or_key VARCHAR2(255),
time_total NUMBER(10),
status_code NUMBER(10),
error_type VARCHAR2(255),
parent_error_type VARCHAR2(255),
result_type VARCHAR2(255),
to_client_header CLOB,
to_client_body CLOB,
auth_token_type VARCHAR2(255),
audience VARCHAR2(255),
client_info VARCHAR2(255),
token_never_expires NUMBER(1),
issued_at TIMESTAMP,
expires_at TIMESTAMP,
expires_in NUMBER(10),
scope VARCHAR2(255),
refresh_token_allowed NUMBER(1),
refresh_token_issued_at TIMESTAMP,
refresh_token_expires_at TIMESTAMP,
refresh_token_expires_in NUMBER(10),
refresh_count NUMBER(10),
max_refresh_count NUMBER(10)
);
CREATE TABLE log_TokenTraffic (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP NULL,
correlation_id VARCHAR(255),
environment_id VARCHAR(255),
project_id VARCHAR(255),
application_id VARCHAR(255),
application_name VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
x_forwarded_for VARCHAR(255),
req_remote_addr VARCHAR(255),
req_http_method VARCHAR(255),
req_content_type VARCHAR(255),
username_or_key VARCHAR(255),
time_total INT,
status_code INT,
error_type VARCHAR(255),
parent_error_type VARCHAR(255),
result_type VARCHAR(255),
to_client_header TEXT,
to_client_body TEXT,
auth_token_type VARCHAR(255),
audience VARCHAR(255),
client_info VARCHAR(255),
token_never_expires TINYINT(1),
issued_at TIMESTAMP NULL,
expires_at TIMESTAMP NULL,
expires_in INT,
scope VARCHAR(255),
refresh_token_allowed TINYINT(1),
refresh_token_issued_at TIMESTAMP NULL,
refresh_token_expires_at TIMESTAMP NULL,
refresh_token_expires_in INT,
refresh_count INT,
max_refresh_count INT
);
CREATE TABLE log_TokenTraffic (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
correlation_id VARCHAR(255),
environment_id VARCHAR(255),
project_id VARCHAR(255),
application_id VARCHAR(255),
application_name VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
x_forwarded_for VARCHAR(255),
req_remote_addr VARCHAR(255),
req_http_method VARCHAR(255),
req_content_type VARCHAR(255),
username_or_key VARCHAR(255),
time_total INTEGER,
status_code INTEGER,
error_type VARCHAR(255),
parent_error_type VARCHAR(255),
result_type VARCHAR(255),
to_client_header TEXT,
to_client_body TEXT,
auth_token_type VARCHAR(255),
audience VARCHAR(255),
client_info VARCHAR(255),
token_never_expires BOOLEAN,
issued_at TIMESTAMP,
expires_at TIMESTAMP,
expires_in INTEGER,
scope VARCHAR(255),
refresh_token_allowed BOOLEAN,
refresh_token_issued_at TIMESTAMP,
refresh_token_expires_at TIMESTAMP,
refresh_token_expires_in INTEGER,
refresh_count INTEGER,
max_refresh_count INTEGER
);
CREATE TABLE log_TokenTraffic (
id NVARCHAR(255) PRIMARY KEY,
log_timestamp DATETIME2,
correlation_id NVARCHAR(255),
environment_id NVARCHAR(255),
project_id NVARCHAR(255),
application_id NVARCHAR(255),
application_name NVARCHAR(255),
api_proxy_id NVARCHAR(255),
api_proxy_name NVARCHAR(255),
x_forwarded_for NVARCHAR(255),
req_remote_addr NVARCHAR(255),
req_http_method NVARCHAR(255),
req_content_type NVARCHAR(255),
username_or_key NVARCHAR(255),
time_total INT,
status_code INT,
error_type NVARCHAR(255),
parent_error_type NVARCHAR(255),
result_type NVARCHAR(255),
to_client_header NVARCHAR(MAX),
to_client_body NVARCHAR(MAX),
auth_token_type NVARCHAR(255),
audience NVARCHAR(255),
client_info NVARCHAR(255),
token_never_expires BIT,
issued_at DATETIME2,
expires_at DATETIME2,
expires_in INT,
scope NVARCHAR(255),
refresh_token_allowed BIT,
refresh_token_issued_at DATETIME2,
refresh_token_expires_at DATETIME2,
refresh_token_expires_in INT,
refresh_count INT,
max_refresh_count INT
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt kimliği |
| log_timestamp | Log kaydının oluşturulma zamanı |
| correlation_id | Korelasyon kimliği |
| environment_id | Ortam kimliği |
| project_id | Proje kimliği |
| application_id | Uygulama kimliği |
| application_name | Uygulama adı |
| api_proxy_id | API Proxy kimliği |
| api_proxy_name | API Proxy adı |
| x_forwarded_for | İstemcinin gerçek IP adresi |
| req_remote_addr | Uzak adres |
| req_http_method | HTTP metodu |
| req_content_type | İsteğin içerik tipi |
| username_or_key | Kullanıcı adı veya API anahtarı |
| time_total | Toplam işlem süresi (ms) |
| status_code | HTTP yanıt kodu |
| error_type | Hata tipi |
| parent_error_type | Üst hata tipi |
| result_type | İşlem sonucu |
| to_client_header | İstemciye gönderilen başlıklar (JSON) |
| to_client_body | İstemciye gönderilen yanıt gövdesi |
| auth_token_type | Token tipi (Bearer, Basic vb.) |
| audience | Token'ın hedef kitlesi |
| client_info | İstemci bilgisi |
| token_never_expires | Token'ın süresinin dolup dolmayacağı |
| issued_at | Token'ın oluşturulma zamanı |
| expires_at | Token'ın geçerlilik bitiş zamanı |
| expires_in | Token'ın geçerlilik süresi (saniye) |
| scope | Token'ın kapsam bilgisi |
| refresh_token_allowed | Yenileme token'ına izin verilip verilmediği |
| refresh_token_issued_at | Yenileme token'ı oluşturulma zamanı |
| refresh_token_expires_at | Yenileme token'ı bitiş zamanı |
| refresh_token_expires_in | Yenileme token'ı geçerlilik süresi (saniye) |
| refresh_count | Yenileme sayısı |
| max_refresh_count | İzin verilen maksimum yenileme sayısı |
Önerilen İndeksler
Token işlemleri sıklıkla kullanıcı/uygulama ve zaman aralığı bazında incelenir. Uçtan uca bir çağrıyı izlerken API trafik tablosu ile correlation_id üzerinden birleştirme de yaygındır.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_tokentraffic_correlation ON log_TokenTraffic(correlation_id);
CREATE INDEX idx_tokentraffic_timestamp ON log_TokenTraffic(log_timestamp);
CREATE INDEX idx_tokentraffic_proxy ON log_TokenTraffic(api_proxy_id);
CREATE INDEX idx_tokentraffic_user ON log_TokenTraffic(username_or_key);
CREATE INDEX idx_tokentraffic_result ON log_TokenTraffic(result_type);
CREATE INDEX idx_tokentraffic_correlation ON log_TokenTraffic(correlation_id);
CREATE INDEX idx_tokentraffic_timestamp ON log_TokenTraffic(log_timestamp);
CREATE INDEX idx_tokentraffic_proxy ON log_TokenTraffic(api_proxy_id);
CREATE INDEX idx_tokentraffic_user ON log_TokenTraffic(username_or_key);
CREATE INDEX idx_tokentraffic_result ON log_TokenTraffic(result_type);
CREATE INDEX idx_tokentraffic_correlation ON log_TokenTraffic(correlation_id);
CREATE INDEX idx_tokentraffic_timestamp ON log_TokenTraffic(log_timestamp);
CREATE INDEX idx_tokentraffic_proxy ON log_TokenTraffic(api_proxy_id);
CREATE INDEX idx_tokentraffic_user ON log_TokenTraffic(username_or_key);
CREATE INDEX idx_tokentraffic_result ON log_TokenTraffic(result_type);
CREATE INDEX idx_tokentraffic_correlation ON log_TokenTraffic(correlation_id);
CREATE INDEX idx_tokentraffic_timestamp ON log_TokenTraffic(log_timestamp);
CREATE INDEX idx_tokentraffic_proxy ON log_TokenTraffic(api_proxy_id);
CREATE INDEX idx_tokentraffic_user ON log_TokenTraffic(username_or_key);
CREATE INDEX idx_tokentraffic_result ON log_TokenTraffic(result_type);
Bölümleme (Partitioning)
Token hacmi genellikle API trafiği hacmiyle orantılı büyür. log_timestamp üzerinde günlük partition önerilir. Bkz. Partition Söz Dizimi.
Log Politikası
Log Politikası'nın her tetiklendiğinde yakaladığı anlık mesaj görüntüsünü (snapshot) saklayan tablodur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_PolicyCapture (
id VARCHAR2(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
correlation_id VARCHAR2(255),
environment_id VARCHAR2(255),
api_proxy_id VARCHAR2(255),
api_proxy_name VARCHAR2(255),
proxy_method_id VARCHAR2(255),
proxy_method_name VARCHAR2(255),
username_or_key VARCHAR2(255),
status_code NUMBER(10),
result_type VARCHAR2(255),
error_type VARCHAR2(255),
from_client_ro_header CLOB,
from_client_ro_param CLOB,
from_client_ro_body CLOB,
capture_region VARCHAR2(50),
capture_location VARCHAR2(50)
);
CREATE TABLE log_PolicyCapture (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP NULL,
correlation_id VARCHAR(255),
environment_id VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
proxy_method_id VARCHAR(255),
proxy_method_name VARCHAR(255),
username_or_key VARCHAR(255),
status_code INT,
result_type VARCHAR(255),
error_type VARCHAR(255),
from_client_ro_header TEXT,
from_client_ro_param TEXT,
from_client_ro_body LONGTEXT,
capture_region VARCHAR(50),
capture_location VARCHAR(50)
);
CREATE TABLE log_PolicyCapture (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
correlation_id VARCHAR(255),
environment_id VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
proxy_method_id VARCHAR(255),
proxy_method_name VARCHAR(255),
username_or_key VARCHAR(255),
status_code INTEGER,
result_type VARCHAR(255),
error_type VARCHAR(255),
from_client_ro_header TEXT,
from_client_ro_param TEXT,
from_client_ro_body TEXT,
capture_region VARCHAR(50),
capture_location VARCHAR(50)
);
CREATE TABLE log_PolicyCapture (
id NVARCHAR(255) PRIMARY KEY,
log_timestamp DATETIME2,
correlation_id NVARCHAR(255),
environment_id NVARCHAR(255),
api_proxy_id NVARCHAR(255),
api_proxy_name NVARCHAR(255),
proxy_method_id NVARCHAR(255),
proxy_method_name NVARCHAR(255),
username_or_key NVARCHAR(255),
status_code INT,
result_type NVARCHAR(255),
error_type NVARCHAR(255),
from_client_ro_header NVARCHAR(MAX),
from_client_ro_param NVARCHAR(MAX),
from_client_ro_body NVARCHAR(MAX),
capture_region NVARCHAR(50),
capture_location NVARCHAR(50)
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt kimliği |
| log_timestamp | Log kaydının oluşturulma zamanı |
| correlation_id | Korelasyon kimliği |
| environment_id | Ortam kimliği |
| api_proxy_id | API Proxy kimliği |
| api_proxy_name | API Proxy adı |
| proxy_method_id | Metot kimliği |
| proxy_method_name | Metot adı |
| username_or_key | Kullanıcı adı veya API anahtarı |
| status_code | HTTP yanıt kodu |
| result_type | İşlem sonucu |
| error_type | Hata tipi |
| from_client_ro_header | İstemciden gelen başlıklar (JSON) |
| from_client_ro_param | İstemciden gelen sorgu parametreleri (JSON) |
| from_client_ro_body | İstemciden gelen istek gövdesi |
| capture_region | Politikanın çalıştığı pipeline aşaması: FROM_CLIENT (İstemciden Gelen), TO_BACKEND (Arka Uca Giden), FROM_BACKEND (Arka Uçtan Gelen), TO_CLIENT (İstemciye Giden) |
| capture_location | Politikanın tanımlandığı seviye: API_PROXY_GROUP (Grup), API_PROXY (Proxy), API_PROXY_METHOD (Metot) |
Önerilen İndeksler
Loglama politikası pipeline'ın birden fazla noktasına (örneğin FROM_CLIENT ve TO_CLIENT) yerleştirildiğinde, istek ve yanıt kayıtları aynı correlation_id değerini paylaşır. Bu nedenle correlation_id indeksi, istek ve yanıtın uçtan uca birleştirilmesi için kritik önemdedir.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_policycapture_correlation ON log_PolicyCapture(correlation_id);
CREATE INDEX idx_policycapture_timestamp ON log_PolicyCapture(log_timestamp);
CREATE INDEX idx_policycapture_proxy ON log_PolicyCapture(api_proxy_id);
CREATE INDEX idx_policycapture_region ON log_PolicyCapture(capture_region);
CREATE INDEX idx_policycapture_correlation ON log_PolicyCapture(correlation_id);
CREATE INDEX idx_policycapture_timestamp ON log_PolicyCapture(log_timestamp);
CREATE INDEX idx_policycapture_proxy ON log_PolicyCapture(api_proxy_id);
CREATE INDEX idx_policycapture_region ON log_PolicyCapture(capture_region);
CREATE INDEX idx_policycapture_correlation ON log_PolicyCapture(correlation_id);
CREATE INDEX idx_policycapture_timestamp ON log_PolicyCapture(log_timestamp);
CREATE INDEX idx_policycapture_proxy ON log_PolicyCapture(api_proxy_id);
CREATE INDEX idx_policycapture_region ON log_PolicyCapture(capture_region);
CREATE INDEX idx_policycapture_correlation ON log_PolicyCapture(correlation_id);
CREATE INDEX idx_policycapture_timestamp ON log_PolicyCapture(log_timestamp);
CREATE INDEX idx_policycapture_proxy ON log_PolicyCapture(api_proxy_id);
CREATE INDEX idx_policycapture_region ON log_PolicyCapture(capture_region);
Bölümleme (Partitioning)
Hacim, akışlara bağlanan loglama politikası sayısına ve bunların ne sıklıkla tetiklendiğine bağlıdır. Yüksek trafikli API'lerde proxy/metot seviyesinde bağlı politikalar için log_timestamp üzerinde günlük partition önerilir. Bkz. Partition Söz Dizimi.
Uygulama Logu
Apinizer platform seviyesindeki uygulama loglarını saklayan tablodur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_Application (
id VARCHAR2(255) PRIMARY KEY,
env_name VARCHAR2(255),
api_proxy_id VARCHAR2(255),
api_proxy_name VARCHAR2(255),
correlation_id VARCHAR2(255),
log_timestamp TIMESTAMP,
log_level VARCHAR2(255),
message CLOB,
stack_trace CLOB,
host_name VARCHAR2(255),
enum_application_log VARCHAR2(255),
total_duration NUMBER(10)
);
CREATE TABLE log_Application (
id VARCHAR(255) PRIMARY KEY,
env_name VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
correlation_id VARCHAR(255),
log_timestamp TIMESTAMP NULL,
log_level VARCHAR(255),
message TEXT,
stack_trace TEXT,
host_name VARCHAR(255),
enum_application_log VARCHAR(255),
total_duration INT
);
CREATE TABLE log_Application (
id VARCHAR(255) PRIMARY KEY,
env_name VARCHAR(255),
api_proxy_id VARCHAR(255),
api_proxy_name VARCHAR(255),
correlation_id VARCHAR(255),
log_timestamp TIMESTAMP,
log_level VARCHAR(255),
message TEXT,
stack_trace TEXT,
host_name VARCHAR(255),
enum_application_log VARCHAR(255),
total_duration INTEGER
);
CREATE TABLE log_Application (
id NVARCHAR(255) PRIMARY KEY,
env_name NVARCHAR(255),
api_proxy_id NVARCHAR(255),
api_proxy_name NVARCHAR(255),
correlation_id NVARCHAR(255),
log_timestamp DATETIME2,
log_level NVARCHAR(255),
message NVARCHAR(MAX),
stack_trace NVARCHAR(MAX),
host_name NVARCHAR(255),
enum_application_log NVARCHAR(255),
total_duration INT
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt kimliği |
| env_name | Ortam adı |
| api_proxy_id | API Proxy kimliği |
| api_proxy_name | API Proxy adı |
| correlation_id | Korelasyon kimliği |
| log_timestamp | Log kaydının oluşturulma zamanı |
| log_level | Log seviyesi (INFO, WARN, ERROR vb.) |
| message | Log mesajı |
| stack_trace | Hata yığın izi |
| host_name | Logun oluştuğu sunucu adı |
| enum_application_log | Uygulama log kaynağı türü |
| total_duration | Toplam işlem süresi (ms) |
Önerilen İndeksler
Uygulama logları çoğunlukla zaman aralığı ve log seviyesine göre (sorun giderme amacıyla) filtrelenir; ayrıca correlation_id üzerinden trafik logları ile birleştirilerek tek bir isteğin platform seviyesindeki olayları geri oluşturulur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_application_correlation ON log_Application(correlation_id);
CREATE INDEX idx_application_timestamp ON log_Application(log_timestamp);
CREATE INDEX idx_application_level ON log_Application(log_level);
CREATE INDEX idx_application_proxy ON log_Application(api_proxy_id);
CREATE INDEX idx_application_correlation ON log_Application(correlation_id);
CREATE INDEX idx_application_timestamp ON log_Application(log_timestamp);
CREATE INDEX idx_application_level ON log_Application(log_level);
CREATE INDEX idx_application_proxy ON log_Application(api_proxy_id);
CREATE INDEX idx_application_correlation ON log_Application(correlation_id);
CREATE INDEX idx_application_timestamp ON log_Application(log_timestamp);
CREATE INDEX idx_application_level ON log_Application(log_level);
CREATE INDEX idx_application_proxy ON log_Application(api_proxy_id);
CREATE INDEX idx_application_correlation ON log_Application(correlation_id);
CREATE INDEX idx_application_timestamp ON log_Application(log_timestamp);
CREATE INDEX idx_application_level ON log_Application(log_level);
CREATE INDEX idx_application_proxy ON log_Application(api_proxy_id);
Bölümleme (Partitioning)
Uygulama logları istikrarlı bir şekilde birikir. Canlı sistemlerde log_timestamp üzerinde günlük partition önerilir. Bkz. Partition Söz Dizimi.
Denetim Olayı
Kullanıcı işlemlerinin denetim kaydını saklayan tablodur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_AuditEvent (
id VARCHAR2(255) PRIMARY KEY,
audit_event_date TIMESTAMP,
principal VARCHAR2(255),
state VARCHAR2(255),
object_id VARCHAR2(255),
object_name VARCHAR2(255),
ref_object_json CLOB,
project_id VARCHAR2(255),
class_name VARCHAR2(255)
);
CREATE TABLE log_AuditEvent (
id VARCHAR(255) PRIMARY KEY,
audit_event_date TIMESTAMP NULL,
principal VARCHAR(255),
state VARCHAR(255),
object_id VARCHAR(255),
object_name VARCHAR(255),
ref_object_json LONGTEXT,
project_id VARCHAR(255),
class_name VARCHAR(255)
);
CREATE TABLE log_AuditEvent (
id VARCHAR(255) PRIMARY KEY,
audit_event_date TIMESTAMP,
principal VARCHAR(255),
state VARCHAR(255),
object_id VARCHAR(255),
object_name VARCHAR(255),
ref_object_json TEXT,
project_id VARCHAR(255),
class_name VARCHAR(255)
);
CREATE TABLE log_AuditEvent (
id NVARCHAR(255) PRIMARY KEY,
audit_event_date DATETIME2,
principal NVARCHAR(255),
state NVARCHAR(255),
object_id NVARCHAR(255),
object_name NVARCHAR(255),
ref_object_json NVARCHAR(MAX),
project_id NVARCHAR(255),
class_name NVARCHAR(255)
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt kimliği |
| audit_event_date | Denetim olayının gerçekleşme zamanı |
| principal | İşlemi gerçekleştiren kullanıcı |
| state | İşlemin durumu (CREATE, UPDATE, DELETE vb.) |
| object_id | İşlem yapılan nesnenin kimliği |
| object_name | İşlem yapılan nesnenin adı |
| ref_object_json | İşlem yapılan nesnenin JSON gösterimi |
| project_id | Proje kimliği |
| class_name | Nesnenin türü |
Önerilen İndeksler
Denetim sorguları en sık tarih aralığı, kullanıcı (principal), etkilenen nesne türü veya projeye göre filtrelenir. Burada partition anahtarı log_timestamp değil, audit_event_date kolonudur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_auditevent_date ON log_AuditEvent(audit_event_date);
CREATE INDEX idx_auditevent_principal ON log_AuditEvent(principal);
CREATE INDEX idx_auditevent_project ON log_AuditEvent(project_id);
CREATE INDEX idx_auditevent_class ON log_AuditEvent(class_name);
CREATE INDEX idx_auditevent_state ON log_AuditEvent(state);
CREATE INDEX idx_auditevent_date ON log_AuditEvent(audit_event_date);
CREATE INDEX idx_auditevent_principal ON log_AuditEvent(principal);
CREATE INDEX idx_auditevent_project ON log_AuditEvent(project_id);
CREATE INDEX idx_auditevent_class ON log_AuditEvent(class_name);
CREATE INDEX idx_auditevent_state ON log_AuditEvent(state);
CREATE INDEX idx_auditevent_date ON log_AuditEvent(audit_event_date);
CREATE INDEX idx_auditevent_principal ON log_AuditEvent(principal);
CREATE INDEX idx_auditevent_project ON log_AuditEvent(project_id);
CREATE INDEX idx_auditevent_class ON log_AuditEvent(class_name);
CREATE INDEX idx_auditevent_state ON log_AuditEvent(state);
CREATE INDEX idx_auditevent_date ON log_AuditEvent(audit_event_date);
CREATE INDEX idx_auditevent_principal ON log_AuditEvent(principal);
CREATE INDEX idx_auditevent_project ON log_AuditEvent(project_id);
CREATE INDEX idx_auditevent_class ON log_AuditEvent(class_name);
CREATE INDEX idx_auditevent_state ON log_AuditEvent(state);
Bölümleme (Partitioning)
Denetim olayları kullanıcı işlemlerinden üretilir (trafik kayıtlarından çok daha az) ve uyumluluk gereği genellikle daha uzun süre saklanır. Genellikle audit_event_date üzerinde aylık partition yeterlidir. Partition Söz Dizimi bölümünde DAY yerine MONTH kullanabilirsiniz.
Login Log
API Manager ve API Portal'a yapılan giriş denemelerini (başarı ve başarısızlık olaylarını) kaydeden tablo.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_LoginLog (
id VARCHAR2(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
source VARCHAR2(50),
principal VARCHAR2(255),
email VARCHAR2(255),
display_name VARCHAR2(255),
event_type VARCHAR2(50),
remote_address VARCHAR2(255),
message CLOB,
error_type VARCHAR2(255),
portal_id VARCHAR2(255),
account_id VARCHAR2(255)
);
CREATE TABLE log_LoginLog (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP NULL,
source VARCHAR(50),
principal VARCHAR(255),
email VARCHAR(255),
display_name VARCHAR(255),
event_type VARCHAR(50),
remote_address VARCHAR(255),
message TEXT,
error_type VARCHAR(255),
portal_id VARCHAR(255),
account_id VARCHAR(255)
);
CREATE TABLE log_LoginLog (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
source VARCHAR(50),
principal VARCHAR(255),
email VARCHAR(255),
display_name VARCHAR(255),
event_type VARCHAR(50),
remote_address VARCHAR(255),
message TEXT,
error_type VARCHAR(255),
portal_id VARCHAR(255),
account_id VARCHAR(255)
);
CREATE TABLE log_LoginLog (
id NVARCHAR(255) PRIMARY KEY,
log_timestamp DATETIME2,
source NVARCHAR(50),
principal NVARCHAR(255),
email NVARCHAR(255),
display_name NVARCHAR(255),
event_type NVARCHAR(50),
remote_address NVARCHAR(255),
message NVARCHAR(MAX),
error_type NVARCHAR(255),
portal_id NVARCHAR(255),
account_id NVARCHAR(255)
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt tanımlayıcısı |
| log_timestamp | Giriş olayının gerçekleştiği zaman |
| source | Giriş kaynağı (API_MANAGER, API_PORTAL) |
| principal | Kullanıcı principal'ı (API Manager girişi) |
| Kullanıcı e-postası (API Portal girişi) | |
| display_name | Kullanıcı görünen ismi |
| event_type | Olay tipi (LOGIN_SUCCESS, LOGIN_FAILURE) |
| remote_address | İstemci uzak IP adresi |
| message | Sonuç mesajı veya başarısızlık nedeni |
| error_type | Hata sınıfı (başarısız girişler için) |
| portal_id | Portal tanımlayıcısı (portal girişleri için) |
| account_id | Hesap tanımlayıcısı (portal girişleri için) |
Önerilen Index'ler
Login logları; zaman aralığı, kullanıcı (e-posta/principal), giriş kaynağı ve olay tipi (güvenlik denetimi ve kilitlenmiş hesap incelemesi) için sorgulanır.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_loginlog_timestamp ON log_LoginLog(log_timestamp);
CREATE INDEX idx_loginlog_email ON log_LoginLog(email);
CREATE INDEX idx_loginlog_principal ON log_LoginLog(principal);
CREATE INDEX idx_loginlog_source ON log_LoginLog(source);
CREATE INDEX idx_loginlog_event ON log_LoginLog(event_type);
CREATE INDEX idx_loginlog_timestamp ON log_LoginLog(log_timestamp);
CREATE INDEX idx_loginlog_email ON log_LoginLog(email);
CREATE INDEX idx_loginlog_principal ON log_LoginLog(principal);
CREATE INDEX idx_loginlog_source ON log_LoginLog(source);
CREATE INDEX idx_loginlog_event ON log_LoginLog(event_type);
CREATE INDEX idx_loginlog_timestamp ON log_LoginLog(log_timestamp);
CREATE INDEX idx_loginlog_email ON log_LoginLog(email);
CREATE INDEX idx_loginlog_principal ON log_LoginLog(principal);
CREATE INDEX idx_loginlog_source ON log_LoginLog(source);
CREATE INDEX idx_loginlog_event ON log_LoginLog(event_type);
CREATE INDEX idx_loginlog_timestamp ON log_LoginLog(log_timestamp);
CREATE INDEX idx_loginlog_email ON log_LoginLog(email);
CREATE INDEX idx_loginlog_principal ON log_LoginLog(principal);
CREATE INDEX idx_loginlog_source ON log_LoginLog(source);
CREATE INDEX idx_loginlog_event ON log_LoginLog(event_type);
Partitioning (Bölümleme)
Login log hacmi trafik loglarına göre tipik olarak düşüktür. Güvenlik denetimi için sıkça gerekli olan uzun saklama süreleri için log_timestamp üzerinde aylık bölümleme yeterlidir. Örnekler için Bölümleme Söz Dizimi bölümüne bakın ve aralık için DAY yerine MONTH kullanın.
Gönderilemeyen Mesaj
Bağlantı hatası nedeniyle iletilememiş log kayıtlarını geçici olarak saklayan tablodur.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE TABLE log_UnsentMessage (
id VARCHAR2(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
connector_id VARCHAR2(50),
content CLOB
);
CREATE TABLE log_UnsentMessage (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP NULL,
connector_id VARCHAR(50),
content LONGTEXT
);
CREATE TABLE log_UnsentMessage (
id VARCHAR(255) PRIMARY KEY,
log_timestamp TIMESTAMP,
connector_id VARCHAR(50),
content TEXT
);
CREATE TABLE log_UnsentMessage (
id NVARCHAR(255) PRIMARY KEY,
log_timestamp DATETIME2,
connector_id NVARCHAR(50),
content NVARCHAR(MAX)
);
| Kolon | Açıklama |
|---|---|
| id | Kayıt kimliği |
| log_timestamp | Kaydın oluşturulma zamanı |
| connector_id | Verinin gönderilmeye çalışıldığı konnektör kimliği |
| content | Gönderilemeyen log kaydının içeriği (JSON) |
Önerilen İndeksler
Bu tablodaki kayıtlar geçicidir: Bir konnektör erişilemediğinde eklenir, gönderim başarılı olunca silinir. Yeniden gönderim aramaları ve temizlik için az sayıda indeks yeterlidir.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
CREATE INDEX idx_unsent_timestamp ON log_UnsentMessage(log_timestamp);
CREATE INDEX idx_unsent_connector ON log_UnsentMessage(connector_id);
CREATE INDEX idx_unsent_timestamp ON log_UnsentMessage(log_timestamp);
CREATE INDEX idx_unsent_connector ON log_UnsentMessage(connector_id);
CREATE INDEX idx_unsent_timestamp ON log_UnsentMessage(log_timestamp);
CREATE INDEX idx_unsent_connector ON log_UnsentMessage(connector_id);
CREATE INDEX idx_unsent_timestamp ON log_UnsentMessage(log_timestamp);
CREATE INDEX idx_unsent_connector ON log_UnsentMessage(connector_id);
Bölümleme (Partitioning)
Bu tablo kısa bir zaman penceresi içinde tüketilen geçici kayıtları barındırır. Partition gerekli değildir. Tablo beklenmedik şekilde büyürse (uzun süreli kesintiler), partition yerine operasyonel temizlik daha uygun bir çözümdür.
Partition Söz Dizimi
Aşağıdaki örnekler log_timestamp üzerinde günlük partition kullanır. Tablo adını ve başlangıç sınır tarihini ortamınıza göre değiştirin. log_AuditEvent tablosu için log_timestamp yerine audit_event_date kolonunu kullanın ve günlük aralık yerine aylık aralık tercih edin.
- Oracle
- MySQL/MariaDB
- PostgreSQL
- SQL Server
-- CREATE TABLE sırasında uygulayın (kolon listesinden sonra):
)
PARTITION BY RANGE (log_timestamp)
INTERVAL (NUMTODSINTERVAL(1, 'DAY'))
(
PARTITION p_initial VALUES LESS THAN (TIMESTAMP '2026-01-01 00:00:00')
);
-- Aylık varyant (örneğin log_AuditEvent için):
-- INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
-- Partition anahtarı PRIMARY KEY'in parçası olmalıdır.
-- Tablo tanımında birincil anahtarı şu şekilde düzenleyin:
-- PRIMARY KEY (id, log_timestamp)
ALTER TABLE log_ApiProxyTraffic
PARTITION BY RANGE (TO_DAYS(log_timestamp)) (
PARTITION p_initial VALUES LESS THAN (TO_DAYS('2026-01-01')),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
-- Yeni günlük partition'ları zamanlanmış bir işle önceden ekleyin:
ALTER TABLE log_ApiProxyTraffic REORGANIZE PARTITION p_future INTO (
PARTITION p20260421 VALUES LESS THAN (TO_DAYS('2026-04-22')),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
-- CREATE TABLE sırasında tablo tanımını şu şekilde güncelleyin:
CREATE TABLE log_ApiProxyTraffic (
/* ... kolonlar ... */
) PARTITION BY RANGE (log_timestamp);
-- Her gün için bir alt tablo oluşturun (zamanlanmış iş):
CREATE TABLE log_ApiProxyTraffic_p20260421
PARTITION OF log_ApiProxyTraffic
FOR VALUES FROM ('2026-04-21') TO ('2026-04-22');
-- Eski partition'ı hızlıca silin:
DROP TABLE log_ApiProxyTraffic_p20260101;
-- 1) Partition fonksiyonu (günlük sınırlar):
CREATE PARTITION FUNCTION pf_logs_daily (DATETIME2)
AS RANGE RIGHT FOR VALUES ('2026-01-01', '2026-01-02', '2026-01-03');
-- 2) Partition scheme:
CREATE PARTITION SCHEME ps_logs_daily
AS PARTITION pf_logs_daily ALL TO ([PRIMARY]);
-- 3) Tabloyu scheme üzerine oluşturun:
CREATE TABLE log_ApiProxyTraffic (
/* ... kolonlar ... */
) ON ps_logs_daily(log_timestamp);
-- 4) Zamanlanmış iş ile yeni sınırlar ekleyin:
ALTER PARTITION SCHEME ps_logs_daily NEXT USED [PRIMARY];
ALTER PARTITION FUNCTION pf_logs_daily() SPLIT RANGE ('2026-04-22');
Yeni günlük partition'ların önceden oluşturulması gerekir (örneğin zamanlanmış bir iş ile). Kayıt geldiğinde hedef partition mevcut değilse SQL Server ve MySQL'de ekleme başarısız olur; Oracle'da yalnızca INTERVAL partition kullanıldığında otomatik oluşturulur.
Veri Tipi Karşılık Tablosu
Aşağıdaki tablo, farklı veritabanları arasındaki veri tipi eşleştirmelerini göstermektedir.
| Kullanım | Oracle | MySQL/MariaDB | PostgreSQL | SQL Server |
|---|---|---|---|---|
| Kısa metin | VARCHAR2(255) | VARCHAR(255) | VARCHAR(255) | NVARCHAR(255) |
| Uzun metin | CLOB | TEXT / LONGTEXT | TEXT | NVARCHAR(MAX) |
| Tam sayı | NUMBER(10) | INT | INTEGER | INT |
| Büyük tam sayı | NUMBER(19) | BIGINT | BIGINT | BIGINT |
| Ondalıklı sayı | NUMBER | DOUBLE | DOUBLE PRECISION | FLOAT |
| Mantıksal (boolean) | NUMBER(1) | TINYINT(1) | BOOLEAN | BIT |
| Tarih/Zaman | TIMESTAMP | TIMESTAMP NULL | TIMESTAMP | DATETIME2 |