Amazon Athena: S3 Üzerinde Sunucusuz SQL
Athena'da standart SQL ile S3 verilerini doğrudan sorgulayın, Parquet ve ORC gibi sütun tabanlı biçimlerle optimize edin ve maliyetleri denetlemek için bölümlendirin.
Amazon Athena: S3 Üzerinde Sunucusuz SQL, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
Amazon Athena Nedir?
Amazon Athena, Amazon S3'te depolanan verilere karşı doğrudan standart SQL çalıştırmanızı sağlayan sunucusuz, etkileşimli bir sorgu hizmetidir. Sağlanacak sunucu veya yönetilecek küme yoktur ve yalnızca her sorguda taranan veri için ödeme yaparsınız (taranan TB başına yaklaşık 5 ABD doları). Athena, arka planda Presto'yu kullanır ve tablo meta verileri için Glue Data Catalogue ile yerel olarak tümleşir.
Athena'yı Ayarlama: Workgroup'lar ve Çıktı Konumu
Sorguları çalıştırmadan önce bir Athena Workgroup yapılandırın ve sorgu sonuçlarının çıktısı için bir S3 yolu belirtin. Workgroup'lar, ekipler arasındaki sorgu geçmişini ve maliyet takibini ayırmanıza, sonuçlarda şifrelemeyi zorunlu kılmanıza ve aşırı maliyetleri önlemek için sorgu başına veri tarama sınırları belirlemenize olanak tanır. Her sorgu sonucu, yapılandırılan S3 çıktı bucket'ına CSV olarak yazılır.
# Create a workgroup with an encrypted output location
aws athena create-work-group \
--name analytics-team \
--configuration '{
"ResultConfiguration": {
"OutputLocation": "s3://athena-results-123/analytics-team/",
"EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
},
"EnforceWorkGroupConfiguration": true,
"PublishCloudWatchMetricsEnabled": true,
"BytesScannedCutoffPerQuery": 10737418240
}'İlk Sorgunuzu Çalıştırma
Athena'yı bir Glue Data Catalogue veritabanına yönlendirin ve ANSI SQL çalıştırın. Athena SELECT, JOIN, GROUP BY, pencere işlevlerini ve CTE'leri destekler. Ayrıca sorgu sonuçlarını Parquet biçiminde yeni bir tablo olarak kaydetmek için CREATE TABLE AS SELECT (CTAS) kullanabilirsiniz; böylece sonraki sorguların daha hızlı çalışması için ara sonuçlar kalıcı hâle getirilir.
-- Query total sales by month from partitioned S3 data
SELECT
year,
month,
SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;
-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;Maliyet Optimizasyonu: Partition Budama
Athena, taranan veri TB başına ücret alır. En etkili maliyet azaltma yöntemi partition budamadır: WHERE koşulunuza her zaman partition sütunlarını ekleyin. Veriler year/month/day şeklinde partition'lara ayrılmışsa bu sütunlara göre filtreleme yapmak, Athena'nın diğer partition'ları taramasını önler. Petabayt ölçeğinde bir tabloda partition filtresi olmadan basit bir sorgu yüzlerce dolara mal olabilir.
-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';
-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';Maliyet Optimizasyonu: Sütunlu Biçim
Verileri CSV veya JSON yerine Apache Parquet ya da ORC biçiminde depolamak, Athena'nın sorgu başına taradığı veri miktarını önemli ölçüde azaltır. 50 sütunun 3'üne erişen sütunlu bir sorgu, diskte yalnızca bu 3 sütunun verilerini tarar. Yerleşik sıkıştırmayla (Snappy, Zstd) birlikte Parquet dosyaları genellikle eşdeğer CSV dosyalarından 5–10 kat daha küçüktür ve bu da maliyet tasarrufunu katlar.
-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
-- query reads only 2 columns -> scans ~2 GB -> $0.01
-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;Data Source Connector'larıyla Federated Sorgular
Athena Federated Query, Lambda tabanlı data source connector'ları kullanarak Athena'nın kapsamını S3'ün ötesine taşır ve RDS, DynamoDB, Redshift, Elasticsearch ile özel kaynaklardaki verileri sorgulamanızı sağlar. Bir connector Lambda işlevini Serverless Application Repository'den dağıtır, bunu Athena data source'u olarak kaydeder ve ardından verileri önceden taşımadan tek bir SQL JOIN ile S3 tabloları ve canlı veritabanları arasında sorgu çalıştırırsınız.
-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';Athena ve QuickSight Tümleştirmesi
Amazon QuickSight, bir data source olarak doğrudan Athena'ya bağlanır ve iş analistlerinin herhangi bir ara veritabanı olmadan S3 verilerinden etkileşimli panolar oluşturmasını sağlar. QuickSight, panoların hızlı oluşturulması için Athena sorgu sonuçlarını önbelleğe almak üzere SPICE (Super-fast, Parallel, In-memory Calculation Engine) kullanır. Bu sunucusuz BI yığını (S3 + Glue + Athena + QuickSight), uygun maliyetli analizler için yaygın bir sınav modelidir.
Athena Sorgu Performansını Ayarlama
Partition'lara ayırma ve sütunlu biçimin yanı sıra Athena sorgularını şu yöntemlerle daha da iyileştirebilirsiniz: büyük dosyaları bölün (paralellik için dosya başına 128 MB–1 GB hedefleyin), sık birleştirilen sütunlar için bucket'lama kullanın, SELECT * kullanmaktan kaçının ve kesin değerler gerekli olmadığında approx_distinct() ile approx_percentile() gibi yaklaşık toplama işlevlerini kullanın. Bu teknikler hem maliyeti hem de gecikmeyi azaltır.
-- Use approx_distinct for fast cardinality estimate
SELECT
year,
approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;Athena'ya Erişimi Denetleme
Athena, erişim denetimi için IAM ile tümleşir: kullanıcıların Athena sorgularını çalıştırma (athena:StartQueryExecution), S3 çıktı bucket'ına erişme ve temel S3 verilerini okuma izinlerine sahip olması gerekir. Ayrıntılı sütun ve satır erişimi için Athena'yı Lake Formation ile birlikte kullanın. Ayrıca workgroup ARN'sindeki IAM koşul anahtarlarıyla bir workgroup'u belirli veritabanlarıyla sınırlandırabilirsiniz.
# Minimum IAM policy for an Athena analyst
{
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:StopQueryExecution",
"glue:GetDatabase",
"glue:GetTable",
"glue:GetPartitions",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "*"
}Sorgu Sonuçlarını Kaydetme ve Zamanlanmış Sorgular
Athena sorgu sonuçları S3'te CSV dosyaları olarak depolanır ve 7 gün boyunca önbelleğe alınır; bu nedenle aynı sorgunun bu süre içinde yeniden çalıştırılması verilerin tekrar taranmasını gerektirmez. Düzenli raporlama ihtiyaçları için Athena Scheduled Queries kullanarak bir sorguyu cron zamanlamasıyla çalıştırın ve sonuçları yeni bir S3 konumuna veya doğrudan bir tabloya kaydedin. Alternatif olarak bir Step Functions durum makinesinden veya EventBridge kuralından Athena sorgusu tetikleyebilirsiniz.
# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
--query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
--work-group analytics-team \
--query 'QueryExecutionId' --output text)
# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_IDAthena ve Redshift: Doğru Aracı Seçme
SAA-C03 sınavı için Athena ile Redshift arasında ne zaman seçim yapacağınızı bilin. S3 üzerinde altyapı yönetimi gerektirmeyen, geçici ve seyrek sorgular için Athena'yı seçin. Karmaşık JOIN işlemlerinde saniyenin altında yanıt sürelerine ihtiyacınız varsa, özel bir analiz ekibi yüzlerce eşzamanlı sorgu çalıştırıyorsa veya bir data warehouse'u S3 verileriyle genişletmek için Redshift Spectrum'ı kullanmak istiyorsanız Redshift'i seçin. Temel gösterge, sorguların sıklığı ve karmaşıklığıdır.
Hızlı Kontrol
Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: Athena taranan TB başına ücret alır; bu nedenle partition budama ve Parquet biçimi temel maliyet denetimleridir, Athena Federated Query, Lambda connector'ları aracılığıyla SQL'i S3 dışındaki data source'lara genişletir ve Athena geçici sorgular için en uygunken Redshift yüksek eşzamanlılığa sahip analizler için uygundur. Sırada, gerçek zamanlı veri akışını ve analizini inceleyeceğimiz Kinesis var.
Sıkça Sorulan Sorular
“Amazon Athena: S3 Üzerinde Sunucusuz SQL” dersi ücretsiz mi?
Evet — “Amazon Athena: S3 Üzerinde Sunucusuz SQL” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
“Amazon Athena: S3 Üzerinde Sunucusuz SQL” dersinde ne öğreneceğim?
Athena'da standart SQL ile S3 verilerini doğrudan sorgulayın, Parquet ve ORC gibi sütun tabanlı biçimlerle optimize edin ve maliyetleri denetlemek için bölümlendirin. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Amazon Athena: S3 Üzerinde Sunucusuz SQL” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- S3 Üzerinde Veri Gölü Oluşturma
- AWS Glue: ETL ve Veri Kataloğu
- Amazon Athena: S3 Üzerinde Sunucusuz SQL
- Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz