Taşıma sonrası doğrulama (satır sayısı/checksum)
Oracle
-- Kaynak ve hedefte satır sayılarını karşılaştır
SELECT 'musteri' tablo, COUNT(*) adet FROM musteri;
-- İçerik farkını nesne düzeyinde bulmak için DBMS_COMPARISON (db link ile)
BEGIN DBMS_COMPARISON.CREATE_COMPARISON(
comparison_name => 'KARSILASTIR_MUSTERI',
schema_name => 'MAGAZA', object_name => 'MUSTERI',
dblink_name => 'HEDEF_DB'); END;
/
-- SELECT DBMS_COMPARISON.COMPARE('KARSILASTIR_MUSTERI', scan_info) FROM dual;En hızlı kontrol her iki tarafta tablo bazında COUNT(*) karşılaştırmaktır. Satır düzeyinde gerçek içerik farkını bulmak için DBMS_COMPARISON paketi kullanılır: database link üzerinden kaynak ve hedef tabloyu satır satır karşılaştırır ve farkları raporlar/yakınsatabilir. Sağlama için ORA_HASH veya STANDARD_HASH ile kolon özeti alınabilir.
PostgreSQL
-- Satır sayısı
SELECT count(*) FROM musteri;
-- Tüm tablo içeriğinin sıralı özeti (sağlama) — iki tarafta karşılaştır
SELECT md5(string_agg(t.satir, '' ORDER BY t.satir)) AS ozet
FROM (SELECT md5(musteri::text) AS satir FROM musteri) t;İlk adım her tabloda count(*) karşılaştırmaktır. İçerik doğrulaması için satırların metin gösterimlerini md5'leyip sıralı olarak birleştirip tekrar özetlemek, iki taraf arasında satır-bağımsız bir sağlama sağlar. Büyük veride yalnızca değişebilir/anahtar kolonlar seçilerek özet alınır; PK'ye göre sıralama tekrarlanabilirlik için önemlidir.
MySQL
-- Tablonun yerleşik sağlaması (iki sunucuda çalıştırıp karşılaştır)
CHECKSUM TABLE musteri;
-- Satır sayısı
SELECT COUNT(*) FROM musteri;
-- Canlı/büyük ortamda tercih edilen araç (satır bloklarını online karşılaştırır):
-- pt-table-checksum h=kaynak,D=magaza (Percona Toolkit)MySQL'de CHECKSUM TABLE tablo içeriğinin tek bir sağlamasını verir; kaynak ve hedefte çalıştırılıp karşılaştırılır (motor/sürüm aynı olmalı). Satır sayısı için COUNT(*). Canlı üretimde ve replikasyon tutarlılığında endüstri standardı Percona Toolkit'in pt-table-checksum aracıdır; blok blok, online ve düşük etkiyle karşılaştırır.
SQL Server
-- Satır düzeyi tam karşılaştırma (fark üreten resmi araç)
tablediff -sourceserver S1 -sourcedatabase magaza -sourcetable musteri \
-destinationserver S2 -destinationdatabase magaza -destinationtable musteri
-- Hızlı toplu sağlama (tek sorguyla, iki tarafta karşılaştır):
SELECT COUNT_BIG(*) adet, CHECKSUM_AGG(BINARY_CHECKSUM(*)) ozet FROM dbo.musteri;SQL Server'da satır düzeyinde farkı bulan resmi komut satırı aracı tablediff'tir (hangi satırların eklendiğini/değiştiğini üretir, opsiyonel -f ile onarım betiği yazar). Hızlı bütünsel kontrol için CHECKSUM_AGG(BINARY_CHECKSUM(*)) tek bir tablo özeti verir; COUNT_BIG(*) ile birlikte iki taraf karşılaştırılır (satır sırasından bağımsızdır).
MongoDB
// Belge sayısını karşılaştır (kaynak ve hedefte)
db.musteri.countDocuments({});
// İçerik sağlaması için dbHash (koleksiyon/DB düzeyinde md5 özeti):
db.runCommand({ dbHash: 1, collections: ["musteri"] });
// -> md5 alanı iki ortamda karşılaştırılır.İlk kontrol her iki tarafta countDocuments() ile belge sayısını karşılaştırmaktır (estimatedDocumentCount hızlıdır ama metadata'ya dayanır, kesin sayım için countDocuments). İçerik doğrulaması için dbHash komutu koleksiyon/veritabanı düzeyinde bir md5 özeti üretir; iki ortamın hash'leri karşılaştırılır. Index'ler ayrıca getIndexes() ile denetlenir.
Redis
# Anahtar sayısını karşılaştır (kaynak ve hedefte)
redis-cli DBSIZE
# Bellek/veri özeti ve anahtar tipi dağılımı için:
redis-cli INFO keyspace # db0:keys=... bilgisi
# Tam içerik doğrulaması için: her anahtarda DUMP alıp hedefle karşılaştır
# (ör. redis-cli --scan | xargs -I{} redis-cli DUMP {})Redis'te temel doğrulama DBSIZE ile toplam anahtar sayısını karşılaştırmaktır; veritabanı bazında dağılım INFO keyspace ile görülür. Redis'te yerleşik tablo-checksum yoktur; birebir içerik doğrulaması gerekiyorsa anahtar başına DUMP serileştirmesi alınıp iki taraf karşılaştırılır (TTL farkları göz önünde tutulmalı). riot compare aracı da kullanılabilir.
Elasticsearch
# Belge sayısını karşılaştır (kaynak ve hedef kümede)
GET musteri/_count
# Ayrıntı: sağlık/segment/depolama karşılaştırması için
GET _cat/indices/musteri?v&h=index,docs.count,store.size
# Örnekleme ile içerik: aynı _id'lerde GET musteri/_doc/<id> karşılaştırElasticsearch'te temel doğrulama her iki kümede GET <index>/_count ile belge sayısını karşılaştırmaktır (_cat/indices docs.count da hızlı özet verir). Karşılaştırmada _count esas alınmalı: _cat/indices docs.count Lucene düzeyinde sayar (nested alt belgeler dahil, ör. iki nested öğeli tek belge 3 sayılır); bu yüzden _count'tan farklı olabilir. İçerik doğrulaması için aynı _id kümesinde belgeler örneklenerek veya bir hash alanı üzerinden karşılaştırılır.