PostgreSQL Kursu
PostgreSQL ve SQL öğren: veri tipleri, kısıtlar, JOIN'ler, gruplama, window fonksiyonları, EXPLAIN ile index'ler, transaction'lar ve eşzamanlılık.
2 kategoride 14 ders
PostgreSQL Temelleri
PostgreSQL ve İlişkisel Model
İlişkisel bir veritabanının ne olduğu, PostgreSQL'in özellikle ne olduğu, Spring Boot → Spring Data JPA → Hibernate → SQL → PostgreSQL yığını, ve bu projenin gerçek TopicRepository'sinin bir çağrısının bu yığından nasıl geçtiği -- hiç SQL sözdizimi olmadan, yalnızca zihinsel model. PostgreSQL kursunun ve PostgreSQL Foundations kategorisinin 1.'si.
PostgreSQL'e Bağlanmak: psql ve Gerçek Bir Spring Boot DataSource
Docker ile yerel bir PostgreSQL çalıştır, psql ile doğrudan bağlan, ve bu projenin kendi Spring Boot DataSource yapılandırmasının PostgreSQL seviyesinde gerçekte ne anlama geldiğini gör. PostgreSQL Foundations kategorisinin 2.'si.
Databases, Schemas, Tables, and Basic SQL Syntax
Sunucu → veritabanı → şema → tablo hiyerarşisi, CREATE TABLE sözdizimi bu projenin kendi gerçek V1__init_schema.sql'i üzerinden okunarak, kolon tanımları/kısıtlar, SQL yorumları, ve DDL ile DML arasındaki ilk ayrım. PostgreSQL Foundations kategorisinin 3.'sü.
PostgreSQL Data Types
INTEGER/BIGINT/BIGSERIAL, VARCHAR/TEXT, BOOLEAN, ve DATE/TIMESTAMP/TIMESTAMPTZ -- her birinin bu projenin kendi gerçek Topic/TopicTranslation/Question entity'lerindeki karşılık gelen Java alan türüne (Long/String/boolean/LocalDateTime) nasıl eşlendiği. PostgreSQL Foundations kategorisinin 4.'sü.
Constraints and Keys
PRIMARY KEY, FOREIGN KEY ve referential integrity, ON DELETE CASCADE vs. RESTRICT (bu projenin kendi quiz_question_link tablosundaki gerçek kontrastıyla), composite UNIQUE, CHECK kısıtları, ve BIGSERIAL PRIMARY KEY'in GenerationType.IDENTITY'ye nasıl bağlandığı. PostgreSQL Foundations kategorisinin 5.'si.
Inserting, Updating, and Deleting Data
INSERT/UPDATE/DELETE, bu projenin kendi gerçek INSERT ... SELECT ve UPDATE ... WHERE migration'larıyla, RETURNING, ON CONFLICT (upsert), ve Flyway'in migration'ların neden hiç ON CONFLICT'e ihtiyaç duymadığını nasıl garanti ettiği. PostgreSQL Foundations kategorisinin 6.'sı.
SELECT and Filtering
SELECT'in temel şekli, SELECT * yerine kolonları açıkça adlandırma, karşılaştırma/mantıksal operatörler, LIKE desen eşleştirme, IN/BETWEEN, ve NULL'ın neden = ile değil yalnızca IS NULL ile filtrelenebildiği -- bu projenin kendi gerçek topic/category tablosu üzerinde. PostgreSQL Foundations kategorisinin 7.'si.
Sorting, Limiting, and Pagination
ORDER BY, LIMIT/OFFSET, ve NULLS FIRST/LAST -- Spring Data JPA kursundaki Pageable/Sort/Page<T>'in altta gerçekte hangi ham SQL'e dönüştüğü, bu projenin kendi gerçek topic tablosu üzerinde. PostgreSQL Foundations kategorisinin 8.'i.
JOINs
INNER/LEFT/RIGHT/FULL JOIN, bu projenin kendi gerçek topic→category→course zinciriyle ve gerçek TopicRepository.findBySlugWithCategoryAndCourse JPQL join fetch'iyle -- ve "henüz İngilizce'de yayınlanmamış topic'leri bulma" gibi gerçek bir LEFT JOIN örneğiyle. PostgreSQL Foundations kategorisinin 9.'u.
Aggregation and GROUP BY
COUNT/SUM/AVG/MIN/MAX, GROUP BY, ve HAVING -- Spring Data JPA'nın Pageable/Sort/projection kelime dağarcığında hiç karşılığı olmayan, tamamen yeni materyal -- bu projenin kendi gerçek "kategori başına topic" LEFT JOIN + GROUP BY sorgusuyla. PostgreSQL Foundations kategorisinin 10.'u ve SONUNCUSU.
İleri PostgreSQL
Subqueries, CTEs, and Window Functions
Scalar ve korelasyonlu subquery'ler, WITH (CTE) zincirleme, ve window fonksiyonları (ROW_NUMBER, RANK, PARTITION BY) -- GROUP BY'nin aksine satırları çökertmeden onlar arasında hesaplama, bu projenin kendi gerçek topic tablosuyla. Advanced PostgreSQL kategorisinin 1.'i.
PostgreSQL-Specific Data Types: UUID, JSON/JSONB, and Arrays
UUID (BIGSERIAL'a alternatif olarak, trade-off'larla), JSON vs. JSONB, ->/->>/@> ile JSONB sorgulama, ve array'ler (ANY/@>/unnest) -- bu projenin gerçek şemasının hiçbirini kullanmadığı dürüstçe belirtilerek, illüstratif ama bu projenin domain'ine bağlı örneklerle. Advanced PostgreSQL kategorisinin 2.'si.
Indexes and Query Performance with EXPLAIN
EXPLAIN/EXPLAIN ANALYZE, Seq Scan vs. Index Scan, bu projenin kendi gerçek idx_topic_category B-tree index'iyle CREATE INDEX, partial/expression index'ler, ve OFFSET'in maliyetine keyset pagination'la geri dönüş. Advanced PostgreSQL kategorisinin 3.'ü.
Transactions and Concurrency in PostgreSQL
psql'de gerçek BEGIN/COMMIT/ROLLBACK, MVCC'nin mekanik açıklaması (xmin/xmax), SELECT ... FOR UPDATE ile satır-seviyesi kilitleme, ve bilerek üretilip açıklanan bir deadlock -- "Transaction Management"in isolation kapsamını TEKRARLAMADAN. Advanced PostgreSQL kategorisinin 4.'ü ve SONUNCUSU -- PostgreSQL kursunun 14/14 topic'ini tamamlıyor.