{"id":32302,"date":"2025-10-20T05:31:37","date_gmt":"2025-10-20T02:31:37","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/"},"modified":"2025-10-20T05:31:37","modified_gmt":"2025-10-20T02:31:37","slug":"day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/","title":{"rendered":"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu"},"content":{"rendered":"<p><body><\/p>\n<p>Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL&#8217;i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.<\/p>\n<p>G\u00fcn\u00fcm\u00fczde veri, her t\u00fcrl\u00fc i\u015f uygulamas\u0131n\u0131n ve dijital hizmetin temelini olu\u015fturuyor. Web sitelerinden mobil uygulamalara, e-ticaret platformlar\u0131ndan kurumsal ERP sistemlerine kadar, her yerde b\u00fcy\u00fck hacimli verilerin depolanmas\u0131, i\u015flenmesi ve g\u00fcvenli bir \u015fekilde eri\u015filebilir olmas\u0131 gerekiyor. \u0130\u015fte tam bu noktada, g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir veritaban\u0131 y\u00f6netim sistemine olan ihtiya\u00e7 ortaya \u00e7\u0131k\u0131yor. Peki, piyasada bunca se\u00e7enek varken neden \u00f6zellikle PostgreSQL&#8217;e odaklanmal\u0131y\u0131z?<\/p>\n<p>Bir geli\u015ftirici veya sistem y\u00f6neticisi olarak, do\u011fru veritaban\u0131 se\u00e7imi, projenizin performans\u0131, \u00f6l\u00e7eklenebilirli\u011fi ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi \u00fczerinde do\u011frudan bir etkiye sahiptir. Yanl\u0131\u015f bir se\u00e7im, ilerleyen s\u00fcre\u00e7lerde maliyetli hatalara, performans darbo\u011fazlar\u0131na ve hatta veri kay\u0131plar\u0131na yol a\u00e7abilir. Bu nedenle, projenize ba\u015flamadan \u00f6nce veritaban\u0131 teknolojileri hakk\u0131nda derinlemesine bilgi sahibi olmak ve ihtiya\u00e7lar\u0131n\u0131za en uygun \u00e7\u00f6z\u00fcm\u00fc se\u00e7mek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. PostgreSQL, y\u0131llard\u0131r sekt\u00f6rdeki en sayg\u0131n ve tercih edilen ili\u015fkisel veritabanlar\u0131ndan biri olarak \u00f6ne \u00e7\u0131kmaktad\u0131r ve bunun pek \u00e7ok ge\u00e7erli nedeni vard\u0131r.<\/p>\n<p>Bu makalenin amac\u0131, sizleri PostgreSQL&#8217;in d\u00fcnyas\u0131na sorunsuz bir \u015fekilde sokmak, kurulumundan temel yap\u0131land\u0131rmas\u0131na kadar t\u00fcm s\u00fcre\u00e7leri anla\u015f\u0131l\u0131r bir dille aktarmakt\u0131r. \u0130ster yeni ba\u015flayan bir geli\u015ftirici olun ister mevcut bilginizi tazelemek isteyin, bu rehber size sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sunacakt\u0131r. \u00d6yleyse, veri y\u00f6netimindeki bu \u00f6nemli yolculu\u011fa \u00e7\u0131kmaya haz\u0131r m\u0131s\u0131n\u0131z? Haydi, PostgreSQL&#8217;in g\u00fcc\u00fcn\u00fc ve esnekli\u011fini ke\u015ffetmeye ba\u015flayal\u0131m!<\/p>\n<h2>PostgreSQL Nedir ve Neden Tercih Etmelisiniz? Temel Kavramlara Giri\u015f<\/h2>\n<p>PostgreSQL, d\u00fcnyadaki en geli\u015fmi\u015f a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinden (RDBMS) biridir. K\u0131rk y\u0131l\u0131 a\u015fk\u0131n bir s\u00fcredir aktif olarak geli\u015ftirilmekte olup, performans\u0131, g\u00fcvenilirli\u011fi ve zengin \u00f6zellik seti ile tan\u0131n\u0131r. Bir\u00e7ok ki\u015fi i\u00e7in MySQL&#8217;e bir alternatif olarak g\u00f6r\u00fclse de, PostgreSQL \u00f6zellikle kurumsal d\u00fczeydeki uygulamalar i\u00e7in sundu\u011fu ileri d\u00fczey \u00f6zellikler ve esneklik sayesinde kendi ni\u015fini olu\u015fturmu\u015ftur.<\/p>\n<p>PostgreSQL&#8217;i tercih etmeniz i\u00e7in bir\u00e7ok neden bulunmaktad\u0131r:<\/p>\n<ul>\n<li><strong>A\u00e7\u0131k Kaynak ve \u00dccretsiz:<\/strong> PostgreSQL tamamen a\u00e7\u0131k kaynak kodludur ve kullan\u0131m\u0131 \u00fccretsizdir. Bu, lisans maliyetleri olmadan g\u00fc\u00e7l\u00fc bir veritaban\u0131 \u00e7\u00f6z\u00fcm\u00fcne sahip olman\u0131z anlam\u0131na gelir. Ayr\u0131ca, geni\u015f ve aktif bir toplulu\u011fa sahip olmas\u0131 sayesinde s\u00fcrekli geli\u015ftirilir ve desteklenir.<\/li>\n<li><strong>Geli\u015fmi\u015f \u00d6zellikler:<\/strong> ACID (Atomicity, Consistency, Isolation, Durability) uyumlulu\u011fu, geli\u015fmi\u015f indeksleme t\u00fcrleri (GIN, GIST), e\u015fzamanl\u0131l\u0131k kontrol\u00fc (MVCC &#8211; Multi-Version Concurrency Control), d\u0131\u015f anahtarlar, tetikleyiciler, sakl\u0131 prosed\u00fcrler ve kullan\u0131c\u0131 tan\u0131ml\u0131 fonksiyonlar gibi bir\u00e7ok ileri d\u00fczey \u00f6zellik sunar. JSON, XML, HSTORE, diziler gibi \u00e7e\u015fitli veri t\u00fcrlerini do\u011fal olarak destekler, bu da modern uygulama geli\u015ftirme i\u00e7in b\u00fcy\u00fck bir esneklik sa\u011flar.<\/li>\n<li><strong>G\u00fcvenilirlik ve Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc:<\/strong> Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ve g\u00fcvenilirli\u011fini en \u00fcst d\u00fczeyde tutmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. \u0130\u015flem (transaction) y\u00f6netiminde olduk\u00e7a sa\u011flamd\u0131r ve veri kayb\u0131n\u0131 en aza indiren mekanizmalar sunar.<\/li>\n<li><strong>Geni\u015fletilebilirlik:<\/strong> En g\u00fc\u00e7l\u00fc yanlar\u0131ndan biri geni\u015fletilebilirli\u011fidir. Kendi veri tiplerinizi, fonksiyonlar\u0131n\u0131z\u0131, operat\u00f6rlerinizi ve hatta indeks t\u00fcrlerinizi tan\u0131mlayabilirsiniz. PostGIS gibi co\u011frafi veri i\u015fleme uzant\u0131lar\u0131 veya TimescaleDB gibi zaman serisi veritaban\u0131 uzant\u0131lar\u0131, PostgreSQL&#8217;in sadece bir veritaban\u0131 olmaktan \u00f6teye ge\u00e7mesini sa\u011flar.<\/li>\n<li><strong>Performans:<\/strong> Do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda ve indekslendi\u011finde, PostgreSQL y\u00fcksek performansl\u0131 ve b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar i\u00e7in m\u00fckemmel bir se\u00e7imdir. \u00d6zellikle karma\u015f\u0131k sorgular ve y\u00fcksek yazma y\u00fck\u00fc olan senaryolarda g\u00fcc\u00fcn\u00fc g\u00f6sterir.<\/li>\n<li><strong>Topluluk ve Destek:<\/strong> B\u00fcy\u00fck ve canl\u0131 bir geli\u015ftirici ve kullan\u0131c\u0131 toplulu\u011funa sahiptir. Bu, sorun ya\u015fad\u0131\u011f\u0131n\u0131zda veya yard\u0131ma ihtiya\u00e7 duydu\u011funuzda kolayca destek bulabilece\u011finiz anlam\u0131na gelir.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: B\u00fcy\u00fck Bir Veri Analizi \u015eirketi \u0130\u00e7in PostgreSQL<\/strong><\/p>\n<p>Diyelim ki, &#8220;VeriVizyon&#8221; ad\u0131nda b\u00fcy\u00fcmekte olan bir veri analizi \u015firketi, her g\u00fcn terabaytlarca m\u00fc\u015fteri etkile\u015fim verisini i\u015flemekle y\u00fck\u00fcml\u00fc. Mevcut MySQL tabanl\u0131 sistemleri, artan veri hacmi ve karma\u015f\u0131k analitik sorgular kar\u015f\u0131s\u0131nda yava\u015flamaya ba\u015flam\u0131\u015f, hatta kritik raporlama s\u00fcre\u00e7lerinde aksakl\u0131klar ya\u015fan\u0131yordu. \u015eirket, verimlili\u011fi art\u0131rmak ve gelecekteki b\u00fcy\u00fcme potansiyelini desteklemek i\u00e7in daha sa\u011flam, esnek ve y\u00fcksek performansl\u0131 bir veritaban\u0131 \u00e7\u00f6z\u00fcm\u00fcne ihtiya\u00e7 duyuyordu. Y\u00f6netim, maliyetleri d\u00fc\u015f\u00fck tutmak amac\u0131yla a\u00e7\u0131k kaynak bir \u00e7\u00f6z\u00fcme y\u00f6neldi. Yap\u0131lan ara\u015ft\u0131rmalar sonucunda, PostgreSQL&#8217;in geli\u015fmi\u015f indeksleme se\u00e7enekleri (\u00f6zellikle GIN ve GIST indeksleri), JSONB deste\u011fi ile yar\u0131 yap\u0131land\u0131r\u0131lm\u0131\u015f verileri etkin bir \u015fekilde depolama yetene\u011fi ve PostGIS uzant\u0131s\u0131 sayesinde co\u011frafi verileri kolayca i\u015fleyebilmesi gibi \u00f6zellikleri dikkatlerini \u00e7ekti. Ayr\u0131ca, MVCC (Multi-Version Concurrency Control) mimarisi sayesinde yo\u011fun okuma\/yazma i\u015flemleri s\u0131ras\u0131nda bile tutarl\u0131 performans sa\u011flayabilmesi, kritik raporlama s\u00fcre\u00e7leri i\u00e7in vazge\u00e7ilmez bir avantajd\u0131. VeriVizyon, mevcut sistemini PostgreSQL&#8217;e ta\u015f\u0131yarak sorgu performans\u0131nda %40&#8217;a varan iyile\u015fmeler kaydetti ve yeni analitik \u00f6zellikler eklemek i\u00e7in \u00e7ok daha esnek bir altyap\u0131ya sahip oldu. Bu ge\u00e7i\u015f, sadece operasyonel verimlili\u011fi art\u0131rmakla kalmad\u0131, ayn\u0131 zamanda \u015firketin veri odakl\u0131 b\u00fcy\u00fcme stratejisine de \u00f6nemli katk\u0131 sa\u011flad\u0131.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: PostgreSQL&#8217;in MVCC mimarisi, okuma ve yazma i\u015flemlerinin birbirini engellemeden ayn\u0131 anda ger\u00e7ekle\u015fmesine olanak tan\u0131r. Bu sayede yo\u011fun i\u015f y\u00fcklerinde bile y\u00fcksek performans ve e\u015fzamanl\u0131l\u0131k sunar.\n    <\/div>\n<p>Sonu\u00e7 olarak, PostgreSQL sadece basit bir veritaban\u0131 de\u011fil, modern uygulamalar\u0131n gereksinimlerini kar\u015f\u0131layabilen, geni\u015fletilebilir ve g\u00fcvenilir bir veri y\u00f6netim platformudur. Geli\u015ftiricilerin ve i\u015fletmelerin karma\u015f\u0131k veri zorluklar\u0131n\u0131 a\u015fmalar\u0131na yard\u0131mc\u0131 olan kapsaml\u0131 bir ara\u00e7 setidir.<\/p>\n<h2>Ad\u0131m Ad\u0131m PostgreSQL Kurulumu: \u0130\u015fletim Sistemine \u00d6zel Rehberler<\/h2>\n<p>PostgreSQL&#8217;i sisteminize kurmak, kullan\u0131lan i\u015fletim sistemine g\u00f6re k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar g\u00f6sterir. Ancak genel s\u00fcre\u00e7 olduk\u00e7a basittir. Bu b\u00f6l\u00fcmde, en pop\u00fcler i\u015fletim sistemleri olan Windows, macOS ve Linux (Ubuntu \u00f6rne\u011fi \u00fczerinden) i\u00e7in ad\u0131m ad\u0131m kurulum rehberlerini bulacaks\u0131n\u0131z. Kurulumdan \u00f6nce, sisteminizin minimum gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olman\u0131z \u00f6nemlidir, ancak \u00e7o\u011fu modern bilgisayar bu gereksinimleri rahatl\u0131kla kar\u015f\u0131layacakt\u0131r.<\/p>\n<h3>Windows&#8217;da PostgreSQL Kurulumu Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Windows kullan\u0131c\u0131lar\u0131 i\u00e7in PostgreSQL kurulumu, genellikle bir grafiksel y\u00fckleyici (installer) arac\u0131l\u0131\u011f\u0131yla olduk\u00e7a kolayd\u0131r. EnterpriseDB taraf\u0131ndan sa\u011flanan resmi y\u00fckleyiciyi kullanman\u0131z\u0131 \u00f6neririz.<\/p>\n<ol>\n<li><strong>Y\u00fckleyiciyi \u0130ndirin:<\/strong> <a href=\"https:\/\/www.postgresql.org\/download\/windows\/\">PostgreSQL resmi web sitesinden<\/a> Windows i\u00e7in uygun s\u00fcr\u00fcm\u00fc indirin. Genellikle &#8220;Interactive installer by EnterpriseDB&#8221; ba\u011flant\u0131s\u0131n\u0131 aramal\u0131s\u0131n\u0131z.<\/li>\n<li><strong>Kurulum Sihirbaz\u0131n\u0131 Ba\u015flat\u0131n:<\/strong> \u0130ndirdi\u011finiz <code>.exe<\/code> dosyas\u0131n\u0131 \u00e7ift t\u0131klayarak kurulum sihirbaz\u0131n\u0131 ba\u015flat\u0131n. Y\u00f6netici izinleri isteyebilir, onaylay\u0131n.<\/li>\n<li><strong>Kurulum Konumu Se\u00e7in:<\/strong> PostgreSQL&#8217;in kurulaca\u011f\u0131 dizini se\u00e7in. Varsay\u0131lan konum (<code>C:\\Program Files\\PostgreSQL\\<version><\/code>) genellikle uygundur.<\/li>\n<li><strong>Bile\u015fenleri Se\u00e7in:<\/strong> Kurulacak bile\u015fenleri se\u00e7meniz istenir. Genellikle a\u015fa\u011f\u0131daki bile\u015fenler varsay\u0131lan olarak se\u00e7ilidir ve de\u011fi\u015ftirmenize gerek yoktur:\n<ul>\n<li><strong>PostgreSQL Server:<\/strong> Ana veritaban\u0131 sunucusu.<\/li>\n<li><strong>pgAdmin 4:<\/strong> PostgreSQL&#8217;i y\u00f6netmek i\u00e7in kullan\u0131lan web tabanl\u0131 grafik aray\u00fcz\u00fc.<\/li>\n<li><strong>Stack Builder:<\/strong> Ek ara\u00e7lar ve s\u00fcr\u00fcc\u00fcler y\u00fcklemenizi sa\u011flar (\u015fimdilik gerekmez).<\/li>\n<li><strong>Command Line Tools:<\/strong> <code>psql<\/code> gibi komut sat\u0131r\u0131 ara\u00e7lar\u0131.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Veri Dizini Se\u00e7in:<\/strong> Veritaban\u0131 dosyalar\u0131n\u0131z\u0131n saklanaca\u011f\u0131 dizini se\u00e7in. Varsay\u0131lan konum genellikle uygundur (\u00f6rne\u011fin, <code>C:\\Program Files\\PostgreSQL\\<version>\\data<\/code>).<\/li>\n<li><strong>S\u00fcper Kullan\u0131c\u0131 Parolas\u0131 Belirleyin:<\/strong> Veritaban\u0131 s\u00fcper kullan\u0131c\u0131s\u0131 (<code>postgres<\/code>) i\u00e7in bir parola belirleyin. Bu parola \u00f6nemlidir, unutmay\u0131n.<\/li>\n<li><strong>Port Numaras\u0131 Se\u00e7in:<\/strong> PostgreSQL sunucusunun dinleyece\u011fi port numaras\u0131n\u0131 se\u00e7in. Varsay\u0131lan <code>5432<\/code> genellikle uygundur. \u00c7ak\u0131\u015fma yoksa de\u011fi\u015ftirmeyin.<\/li>\n<li><strong>Varsay\u0131lan Yerel Ayar\u0131 (Locale) Ayarlay\u0131n:<\/strong> Veritaban\u0131n\u0131n varsay\u0131lan yerel ayar\u0131n\u0131 (dil, karakter seti vb.) se\u00e7in. &#8220;Default locale&#8221; b\u0131rakmak genellikle en iyisidir.<\/li>\n<li><strong>\u00d6zet ve Kurulum:<\/strong> T\u00fcm ayarlar\u0131 g\u00f6zden ge\u00e7irin ve &#8220;Next&#8221; butonuna basarak kurulumu ba\u015flat\u0131n. Kurulum tamamland\u0131\u011f\u0131nda &#8220;Finish&#8221; butonuna t\u0131klay\u0131n. Stack Builder&#8217;\u0131 ba\u015flatmak isteyip istemedi\u011finizi sorarsa, bu rehber i\u00e7in &#8220;hay\u0131r&#8221; diyebilirsiniz.<\/li>\n<li><strong>Kurulum Sonras\u0131 Kontrol:<\/strong> Ba\u015flat men\u00fcs\u00fcnden <code>pgAdmin 4<\/code>&#8216;\u00fc arayarak \u00e7al\u0131\u015ft\u0131r\u0131n. Taray\u0131c\u0131n\u0131zda a\u00e7\u0131lacakt\u0131r. Belirledi\u011finiz s\u00fcper kullan\u0131c\u0131 parolas\u0131 ile PostgreSQL sunucunuza ba\u011flanabilirsiniz. Komut istemcisi (cmd) a\u00e7\u0131p <code>psql -U postgres<\/code> komutunu deneyerek de komut sat\u0131r\u0131 ara\u00e7lar\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz. Parolan\u0131z soruldu\u011funda girin.<\/li>\n<\/ol>\n<h3>macOS&#8217;ta PostgreSQL Kurulumu S\u00fcreci<\/h3>\n<p>macOS kullan\u0131c\u0131lar\u0131 i\u00e7in PostgreSQL kurman\u0131n birka\u00e7 pop\u00fcler yolu vard\u0131r. Homebrew paketi y\u00f6neticisi veya EnterpriseDB&#8217;nin grafiksel y\u00fckleyicisi en s\u0131k tercih edilenlerdir.<\/p>\n<h4>Homebrew ile Kurulum (\u00d6nerilen)<\/h4>\n<ol>\n<li><strong>Homebrew&#8217;i Y\u00fckleyin (Hen\u00fcz Yoksa):<\/strong> Terminali a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:\n<pre><code class=\"language-bash\">\n\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"\n            <\/pre>\n<p><\/code><br \/>\n            Kurulum talimatlar\u0131n\u0131 takip edin.<\/li>\n<li><strong>PostgreSQL'i Y\u00fckleyin:<\/strong> Homebrew arac\u0131l\u0131\u011f\u0131yla PostgreSQL'i kurmak i\u00e7in Terminal'e a\u015fa\u011f\u0131daki komutu yaz\u0131n:\n<pre><code class=\"language-bash\">\nbrew install postgresql\n            <\/pre>\n<p><\/code><br \/>\n            Bu komut, PostgreSQL'in en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirecek ve kuracakt\u0131r.<\/li>\n<li><strong>PostgreSQL Servisini Ba\u015flat\u0131n:<\/strong> Kurulumdan sonra PostgreSQL servisini ba\u015flatman\u0131z gerekir:\n<pre><code class=\"language-bash\">\nbrew services start postgresql\n            <\/pre>\n<p><\/code><br \/>\n            Bu komut, PostgreSQL'i sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in de yap\u0131land\u0131r\u0131r.<\/li>\n<li><strong>Ba\u011flant\u0131y\u0131 Kontrol Edin:<\/strong> <code>psql<\/code> komut sat\u0131r\u0131 arac\u0131yla varsay\u0131lan veritaban\u0131 sunucusuna ba\u011flanabilirsiniz:\n<pre><code class=\"language-bash\">\npsql postgres\n            <\/pre>\n<p><\/code><br \/>\n            Ba\u015far\u0131l\u0131 bir \u015fekilde ba\u011fland\u0131ysan\u0131z, <code>postgres=#<\/code> komut istemini g\u00f6receksiniz. \u00c7\u0131kmak i\u00e7in <code>\\q<\/code> yaz\u0131n ve Enter'a bas\u0131n.<\/li>\n<\/ol>\n<h4>EnterpriseDB Y\u00fckleyicisi ile Kurulum<\/h4>\n<p>Windows'a benzer \u015fekilde, EnterpriseDB'nin grafiksel y\u00fckleyicisini de kullanabilirsiniz. Bu y\u00f6ntem daha az komut sat\u0131r\u0131 bilgisi gerektirir.<\/p>\n<ol>\n<li><strong>Y\u00fckleyiciyi \u0130ndirin:<\/strong> <a href=\"https:\/\/www.postgresql.org\/download\/macosx\/\">PostgreSQL resmi web sitesinden<\/a> macOS i\u00e7in uygun s\u00fcr\u00fcm\u00fc indirin.<\/li>\n<li><strong>Kurulum Sihirbaz\u0131n\u0131 Takip Edin:<\/strong> \u0130ndirilen <code>.dmg<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve i\u00e7indeki y\u00fckleyiciyi \u00e7al\u0131\u015ft\u0131r\u0131n. Windows'daki ad\u0131mlara benzer \u015fekilde, kurulum konumunu, bile\u015fenleri, s\u00fcper kullan\u0131c\u0131 parolas\u0131n\u0131 ve port numaras\u0131n\u0131 belirleyerek kurulumu tamamlay\u0131n.<\/li>\n<li><strong>pgAdmin 4'\u00fc Kullan\u0131n:<\/strong> Kurulum bittikten sonra Applications (Uygulamalar) klas\u00f6r\u00fcn\u00fczde pgAdmin 4'\u00fc bulup \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/li>\n<\/ol>\n<h3>Linux (Ubuntu) \u00dczerine PostgreSQL Kurulumu<\/h3>\n<p>Linux da\u011f\u0131t\u0131mlar\u0131n\u0131n \u00e7o\u011fu (Ubuntu, Debian, CentOS vb.) kendi paket y\u00f6neticileri arac\u0131l\u0131\u011f\u0131yla PostgreSQL kurulumunu destekler. Burada Ubuntu i\u00e7in ad\u0131mlar\u0131 anlataca\u011f\u0131z.<\/p>\n<ol>\n<li><strong>Paket Listesini G\u00fcncelleyin:<\/strong> Terminali a\u00e7\u0131n ve sisteminizdeki paket listesini g\u00fcncelleyin:\n<pre><code class=\"language-bash\">\nsudo apt update\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>PostgreSQL'i Kurun:<\/strong> PostgreSQL sunucusunu ve <code>contrib<\/code> paketini (ek faydal\u0131 mod\u00fcller ve ara\u00e7lar i\u00e7erir) kurun:\n<pre><code class=\"language-bash\">\nsudo apt install postgresql postgresql-contrib\n            <\/pre>\n<p><\/code><br \/>\n            Bu komut, varsay\u0131lan olarak <code>postgres<\/code> ad\u0131nda bir s\u00fcper kullan\u0131c\u0131 ve bu kullan\u0131c\u0131ya ait bir veritaban\u0131 olu\u015fturur. Ayr\u0131ca, PostgreSQL servisi otomatik olarak ba\u015flat\u0131l\u0131r ve sistem a\u00e7\u0131l\u0131\u015f\u0131nda \u00e7al\u0131\u015facak \u015fekilde ayarlan\u0131r.<\/li>\n<li><strong>PostgreSQL Servisinin Durumunu Kontrol Edin:<\/strong> Servisin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in:\n<pre><code class=\"language-bash\">\nsudo systemctl status postgresql\n            <\/pre>\n<p><\/code><br \/>\n            \u00c7\u0131kt\u0131da \"active (exited)\" veya \"active (running)\" g\u00f6rmelisiniz.<\/li>\n<li><strong>Veritaban\u0131 Kullan\u0131c\u0131s\u0131na Ge\u00e7in:<\/strong> PostgreSQL, kurulumla birlikte <code>postgres<\/code> ad\u0131nda bir Linux kullan\u0131c\u0131s\u0131 olu\u015fturur. Bu kullan\u0131c\u0131, PostgreSQL s\u00fcper kullan\u0131c\u0131s\u0131na eri\u015fmek i\u00e7in kullan\u0131l\u0131r:\n<pre><code class=\"language-bash\">\nsudo -i -u postgres\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>psql Komut Sat\u0131r\u0131 Aray\u00fcz\u00fcne Ba\u011flan\u0131n:<\/strong> Art\u0131k <code>postgres<\/code> Linux kullan\u0131c\u0131s\u0131 olarak <code>psql<\/code> arac\u0131l\u0131\u011f\u0131yla PostgreSQL sunucusuna ba\u011flanabilirsiniz:\n<pre><code class=\"language-bash\">\npsql\n            <\/pre>\n<p><\/code><br \/>\n            Ba\u015far\u0131l\u0131 bir ba\u011flant\u0131da <code>postgres=#<\/code> komut istemini g\u00f6receksiniz. \u00c7\u0131kmak i\u00e7in <code>\\q<\/code> yaz\u0131n ve Enter'a bas\u0131n.<\/li>\n<li><strong>(\u0130ste\u011fe Ba\u011fl\u0131) Yeni Bir Veritaban\u0131 Kullan\u0131c\u0131s\u0131 Olu\u015fturun:<\/strong> G\u00fcvenlik nedeniyle, genellikle <code>postgres<\/code> s\u00fcper kullan\u0131c\u0131s\u0131n\u0131 do\u011frudan kullanmak yerine kendi \u00f6zel kullan\u0131c\u0131lar\u0131n\u0131z\u0131 olu\u015fturman\u0131z \u00f6nerilir. \u00d6nce <code>postgres<\/code> kullan\u0131c\u0131s\u0131 olarak oturum a\u00e7\u0131n (yukar\u0131daki 4. ad\u0131m), ard\u0131ndan:\n<pre><code class=\"language-sql\">\nCREATE USER myuser WITH PASSWORD 'my_strong_password';\n            <\/pre>\n<p><\/code><br \/>\n            Bu, <code>myuser<\/code> ad\u0131nda bir kullan\u0131c\u0131 olu\u015fturur. Daha sonra bu kullan\u0131c\u0131ya yetkiler vermeniz gerekecektir.<\/li>\n<li><strong>(\u0130ste\u011fe Ba\u011fl\u0131) Yeni Bir Veritaban\u0131 Olu\u015fturun:<\/strong>\n<pre><code class=\"language-sql\">\nCREATE DATABASE mydatabase OWNER myuser;\n            <\/pre>\n<p><\/code><br \/>\n            Bu, <code>mydatabase<\/code> ad\u0131nda bir veritaban\u0131 olu\u015fturur ve sahibini <code>myuser<\/code> olarak ayarlar.<\/li>\n<\/ol>\n<p>Her \u00fc\u00e7 i\u015fletim sistemi i\u00e7in de kurulumu tamamlad\u0131\u011f\u0131n\u0131za g\u00f6re, art\u0131k PostgreSQL ortam\u0131n\u0131z\u0131 daha detayl\u0131 yap\u0131land\u0131rmaya ve ilk veritaban\u0131n\u0131z\u0131 olu\u015fturmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<h2>PostgreSQL Ortam\u0131n\u0131z\u0131 Ba\u015flang\u0131\u00e7 \u0130\u00e7in Nas\u0131l Yap\u0131land\u0131r\u0131rs\u0131n\u0131z?<\/h2>\n<p>PostgreSQL'i kurmak harika bir ba\u015flang\u0131\u00e7t\u0131r, ancak onu kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re yap\u0131land\u0131rmak, performans ve g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Bu b\u00f6l\u00fcmde, yeni bir kullan\u0131c\u0131 olu\u015fturmaktan, veritaban\u0131 olu\u015fturmaya ve temel yap\u0131land\u0131rma dosyalar\u0131na g\u00f6z atmaya kadar, ortam\u0131n\u0131z\u0131 ba\u015flang\u0131\u00e7 i\u00e7in nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 inceleyece\u011fiz.<\/p>\n<h3>Kullan\u0131c\u0131lar ve Veritabanlar\u0131 Olu\u015fturma<\/h3>\n<p>PostgreSQL'de g\u00fcvenlik, kullan\u0131c\u0131 rolleri ve izinler \u00fczerine kuruludur. Genellikle, t\u00fcm i\u015flemler i\u00e7in s\u00fcper kullan\u0131c\u0131 olan 'postgres' kullan\u0131c\u0131s\u0131n\u0131 do\u011frudan kullanmaktan ka\u00e7\u0131nmak ve uygulamalar\u0131n\u0131z i\u00e7in \u00f6zel, daha k\u0131s\u0131tl\u0131 yetkilere sahip kullan\u0131c\u0131lar olu\u015fturmak iyi bir uygulamad\u0131r. Veritabanlar\u0131n\u0131z da ayn\u0131 \u015fekilde belirli bir kullan\u0131c\u0131ya ait olmal\u0131d\u0131r.<\/p>\n<p>\u0130lk olarak, <code>psql<\/code> komut sat\u0131r\u0131 istemcisine s\u00fcper kullan\u0131c\u0131 olarak ba\u011flanmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code class=\"language-bash\">\n# Linux\/macOS i\u00e7in:\nsudo -u postgres psql\n\n# Windows i\u00e7in (komut istemcisini y\u00f6netici olarak a\u00e7t\u0131ktan sonra):\npsql -U postgres\n# Ard\u0131ndan, kurulum s\u0131ras\u0131nda belirledi\u011finiz parolay\u0131 girin.\n    <\/pre>\n<p><\/code><\/p>\n<p>Ba\u011fland\u0131ktan sonra, yeni bir kullan\u0131c\u0131 (rol) ve bir veritaban\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-sql\">\n-- Yeni bir kullan\u0131c\u0131 (rol) olu\u015ftural\u0131m\nCREATE USER myapp_user WITH PASSWORD 'GucluParolanizBurayaGelecek';\n\n-- Bu kullan\u0131c\u0131 i\u00e7in bir veritaban\u0131 olu\u015ftural\u0131m\nCREATE DATABASE myapp_db OWNER myapp_user;\n\n-- Yeni veritaban\u0131na ba\u011flan\u0131p kullan\u0131c\u0131m\u0131za t\u00fcm yetkileri verelim (geli\u015ftirme ortam\u0131 i\u00e7in)\n\\c myapp_db;\nGRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;\n\n-- Gerekli tablo ve \u015femalar i\u00e7in de yetki vermeyi unutmay\u0131n\n-- \u00d6rne\u011fin: GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myapp_user;\n-- GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myapp_user;\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlarla <code>myapp_user<\/code> adl\u0131 bir kullan\u0131c\u0131 ve <code>myapp_db<\/code> adl\u0131 bir veritaban\u0131 olu\u015fturmu\u015f oldunuz. Art\u0131k uygulaman\u0131z, <code>myapp_user<\/code> ve <code>GucluParolanizBurayaGelecek<\/code> parolas\u0131 ile <code>myapp_db<\/code> veritaban\u0131na ba\u011flanabilir.<\/p>\n<h3>pgAdmin 4 ile Ba\u011flant\u0131 ve Y\u00f6netim<\/h3>\n<p>Grafik aray\u00fczleri tercih edenler i\u00e7in <code>pgAdmin 4<\/code> harika bir ara\u00e7t\u0131r. \u00c7o\u011fu kurulumla birlikte gelir ve PostgreSQL sunucular\u0131n\u0131z\u0131 g\u00f6rsel olarak y\u00f6netmenize olanak tan\u0131r.<\/p>\n<ol>\n<li><strong>pgAdmin 4'\u00fc Ba\u015flat\u0131n:<\/strong> \u0130\u015fletim sisteminizin uygulama men\u00fcs\u00fcnden pgAdmin 4'\u00fc bulun ve ba\u015flat\u0131n. Taray\u0131c\u0131n\u0131zda a\u00e7\u0131lacakt\u0131r.<\/li>\n<li><strong>Sunucu Ekle:<\/strong> Sol men\u00fcdeki \"Servers\" (Sunucular) k\u0131sm\u0131na sa\u011f t\u0131klay\u0131n ve \"Register\" (Kaydet) -> \"Server...\" (Sunucu...) se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li><strong>Ba\u011flant\u0131 Detaylar\u0131n\u0131 Girin:<\/strong>\n<ul>\n<li><strong>General (Genel) sekmesi:<\/strong> Bir \"Name\" (Ad) girin, \u00f6rne\u011fin \"Local PostgreSQL\".<\/li>\n<li><strong>Connection (Ba\u011flant\u0131) sekmesi:<\/strong>\n<ul>\n<li><strong>Host name\/address (Ana bilgisayar ad\u0131\/adresi):<\/strong> <code>localhost<\/code> (veya <code>127.0.0.1<\/code>)<\/li>\n<li><strong>Port:<\/strong> <code>5432<\/code> (varsay\u0131lan)<\/li>\n<li><strong>Maintenance database (Bak\u0131m veritaban\u0131):<\/strong> <code>postgres<\/code><\/li>\n<li><strong>Username (Kullan\u0131c\u0131 ad\u0131):<\/strong> <code>postgres<\/code> (veya yeni olu\u015fturdu\u011funuz <code>myapp_user<\/code>)<\/li>\n<li><strong>Password (Parola):<\/strong> Kurulum s\u0131ras\u0131nda belirledi\u011finiz veya kullan\u0131c\u0131 i\u00e7in ayarlad\u0131\u011f\u0131n\u0131z parola.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Kaydedin ve Ba\u011flan\u0131n:<\/strong> \"Save\" (Kaydet) butonuna t\u0131klay\u0131n. pgAdmin, sunucuya ba\u011flanmaya \u00e7al\u0131\u015facak ve ba\u015far\u0131l\u0131 olursa, sol men\u00fcde sunucunuzun alt\u0131ndaki veritabanlar\u0131n\u0131 ve di\u011fer nesneleri g\u00f6rebileceksiniz.<\/li>\n<\/ol>\n<p>pgAdmin 4 ile veritabanlar\u0131n\u0131 olu\u015fturabilir, tablolar\u0131 y\u00f6netebilir, SQL sorgular\u0131 \u00e7al\u0131\u015ft\u0131rabilir ve sunucunuzun durumunu izleyebilirsiniz. G\u00f6rsel bir ara\u00e7 olmas\u0131, \u00f6zellikle yeni ba\u015flayanlar i\u00e7in veri taban\u0131 y\u00f6netimi s\u00fcre\u00e7lerini \u00e7ok daha anla\u015f\u0131l\u0131r k\u0131lar.<\/p>\n<h3>Temel Yap\u0131land\u0131rma Dosyalar\u0131: postgresql.conf ve pg_hba.conf<\/h3>\n<p>PostgreSQL'in davran\u0131\u015f\u0131n\u0131 ve g\u00fcvenlik politikalar\u0131n\u0131 ayarlamak i\u00e7in iki ana yap\u0131land\u0131rma dosyas\u0131 kullan\u0131l\u0131r:<\/p>\n<ul>\n<li><strong><code>postgresql.conf<\/code>:<\/strong> Bu dosya, bellek kullan\u0131m\u0131, disk G\/\u00c7, ba\u011flant\u0131 ayarlar\u0131, loglama ve bir\u00e7ok di\u011fer sunucu parametresini kontrol eder. Performans optimizasyonu i\u00e7in en \u00e7ok d\u00fczenleyece\u011finiz dosyalardan biridir. \u00d6rne\u011fin, <code>shared_buffers<\/code> (payla\u015f\u0131lan bellek miktar\u0131) veya <code>work_mem<\/code> (sorgu i\u015flemleri i\u00e7in ayr\u0131lan bellek) gibi parametreleri burada ayarlayabilirsiniz.<\/li>\n<li><strong><code>pg_hba.conf<\/code>:<\/strong> \"Host-Based Authentication\" anlam\u0131na gelir ve PostgreSQL'e kimlerin, hangi y\u00f6ntemle ve hangi veritaban\u0131na ba\u011flanabilece\u011fini belirleyen g\u00fcvenlik kurallar\u0131n\u0131 i\u00e7erir. Bu dosya, veritaban\u0131n\u0131za yetkisiz eri\u015fimi engellemek i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<\/ul>\n<p>Bu dosyalar\u0131n konumu i\u015fletim sistemine g\u00f6re de\u011fi\u015fir, ancak genellikle PostgreSQL kurulum dizininin i\u00e7indeki <code>data<\/code> klas\u00f6r\u00fcndedir. Linux'ta ise \u00e7o\u011fu zaman <code>\/etc\/postgresql\/<version>\/main\/<\/code> alt\u0131nda bulunurlar.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: <code>pg_hba.conf<\/code> dosyas\u0131n\u0131 d\u00fczenlerken dikkatli olun! Yanl\u0131\u015f yap\u0131land\u0131rma, sunucunuza eri\u015fimi tamamen engelleyebilir. Herhangi bir de\u011fi\u015fiklik yapt\u0131ktan sonra PostgreSQL servisini yeniden ba\u015flatmay\u0131 unutmay\u0131n (\u00f6rne\u011fin, <code>sudo systemctl restart postgresql<\/code>).\n    <\/div>\n<p><strong>Vaka Analizi: Geli\u015ftirme Ortam\u0131n\u0131 G\u00fcvenli Hale Getirme<\/strong><\/p>\n<p>Bir yaz\u0131l\u0131m geli\u015ftirme ekibi, yeni bir e-ticaret platformu \u00fczerinde \u00e7al\u0131\u015f\u0131yordu. Her geli\u015ftiricinin kendi yerel makinesinde PostgreSQL'e eri\u015fimi olmas\u0131 gerekiyordu, ancak ayn\u0131 zamanda test verilerine d\u0131\u015far\u0131dan yetkisiz eri\u015fimin engellenmesi de \u00f6nemliydi. Ba\u015flang\u0131\u00e7ta, t\u00fcm geli\u015ftiriciler \"postgres\" s\u00fcper kullan\u0131c\u0131s\u0131n\u0131 kullan\u0131yordu, bu da hem bir g\u00fcvenlik riski olu\u015fturuyor hem de de\u011fi\u015fikliklerin takibini zorla\u015ft\u0131r\u0131yordu. Ekip lideri, her geli\u015ftirici i\u00e7in \u00f6zel bir kullan\u0131c\u0131 (<code>dev_user_ali<\/code>, <code>dev_user_ayse<\/code> gibi) olu\u015fturmaya ve bu kullan\u0131c\u0131lara sadece kendi test veritabanlar\u0131na (<code>dev_db_ali<\/code>, <code>dev_db_ayse<\/code>) eri\u015fim yetkisi vermeye karar verdi. Ayr\u0131ca, <code>pg_hba.conf<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek sadece belirli IP aral\u0131klar\u0131ndan veya <code>localhost<\/code>'tan gelen ba\u011flant\u0131lara izin verdi ve parola tabanl\u0131 kimlik do\u011frulamas\u0131n\u0131 zorunlu k\u0131ld\u0131. Bu yap\u0131land\u0131rma sayesinde, hem her geli\u015ftiricinin kendi ba\u011f\u0131ms\u0131z ortam\u0131nda \u00e7al\u0131\u015fmas\u0131 sa\u011fland\u0131 hem de g\u00fcvenlik \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131ld\u0131. Yanl\u0131\u015fl\u0131kla yap\u0131lan de\u011fi\u015fiklikler veya d\u0131\u015f sald\u0131r\u0131lar gibi riskler minimize edildi, b\u00f6ylece geli\u015ftirme s\u00fcreci daha g\u00fcvenli ve kontroll\u00fc hale geldi.<\/p>\n<p>Bu temel yap\u0131land\u0131rma ad\u0131mlar\u0131, PostgreSQL ortam\u0131n\u0131z\u0131 daha d\u00fczenli, g\u00fcvenli ve projenizin ihtiya\u00e7lar\u0131na uygun hale getirmek i\u00e7in vazge\u00e7ilmezdir. \u0130lerleyen zamanlarda, performans optimizasyonu i\u00e7in <code>postgresql.conf<\/code> dosyas\u0131ndaki di\u011fer parametreleri de ke\u015ffetmeniz gerekecektir.<\/p>\n<h2>Veritaban\u0131 Temelleri: \u0130lk Veritaban\u0131n\u0131z\u0131 ve Tablonuzu Nas\u0131l Olu\u015fturursunuz?<\/h2>\n<p>Art\u0131k PostgreSQL'i kurdunuz ve ortam\u0131n\u0131z\u0131 temel d\u00fczeyde yap\u0131land\u0131rd\u0131n\u0131z. \u015eimdi, ili\u015fkisel veritabanlar\u0131n\u0131n kalbi olan veritabanlar\u0131n\u0131 ve tablolar\u0131 olu\u015fturmaya ge\u00e7me zaman\u0131. Bu b\u00f6l\u00fcm, SQL (Structured Query Language) komutlar\u0131n\u0131 kullanarak ilk veritaban\u0131n\u0131z\u0131 olu\u015fturman\u0131z\u0131, i\u00e7ine bir tablo eklemenizi ve bu tabloya veri giri\u015fleri yapman\u0131z\u0131 sa\u011flayacak pratik ad\u0131mlar\u0131 i\u00e7erir.<\/p>\n<h3>Yeni Bir Veritaban\u0131 ve Tablo Olu\u015fturma<\/h3>\n<p>Daha \u00f6nce g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, bir veritaban\u0131 olu\u015fturmak olduk\u00e7a basittir. S\u00fcper kullan\u0131c\u0131 (postgres) veya yetkili bir kullan\u0131c\u0131 olarak <code>psql<\/code>'e ba\u011flan\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 kullan\u0131n. E\u011fer pgAdmin kullan\u0131yorsan\u0131z, Query Tool'u a\u00e7arak bu komutlar\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<pre><code class=\"language-sql\">\n-- Yeni bir veritaban\u0131 olu\u015ftural\u0131m (e\u011fer daha \u00f6nce olu\u015fturmad\u0131ysan\u0131z)\nCREATE DATABASE satis_analizi OWNER myapp_user;\n\n-- Olu\u015fturdu\u011fumuz veritaban\u0131na ba\u011flanal\u0131m\n\\c satis_analizi;\n\n-- \u015eimdi bu veritaban\u0131 i\u00e7inde bir tablo olu\u015ftural\u0131m.\n-- \u00d6rne\u011fin, \u00fcr\u00fcn sat\u0131\u015flar\u0131n\u0131 takip eden bir tablo:\nCREATE TABLE urun_satislari (\n    satis_id SERIAL PRIMARY KEY,    -- Otomatik artan benzersiz ID\n    urun_adi VARCHAR(100) NOT NULL, -- \u00dcr\u00fcn ad\u0131, bo\u015f olamaz\n    kategori VARCHAR(50),           -- \u00dcr\u00fcn kategorisi\n    satis_miktari INT NOT NULL,     -- Sat\u0131lan miktar, bo\u015f olamaz\n    birim_fiyat DECIMAL(10, 2) NOT NULL, -- Birim fiyat, ondal\u0131kl\u0131\n    satis_tarihi DATE DEFAULT CURRENT_DATE -- Sat\u0131\u015f tarihi, varsay\u0131lan olarak bug\u00fcn\u00fcn tarihi\n);\n\n-- Tablonun ba\u015far\u0131yla olu\u015fturuldu\u011funu kontrol edelim\n\\d urun_satislari;\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki komutlar\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayal\u0131m:<\/p>\n<ul>\n<li><code>CREATE DATABASE satis_analizi OWNER myapp_user;<\/code>: <code>satis_analizi<\/code> ad\u0131nda yeni bir veritaban\u0131 olu\u015fturur ve bu veritaban\u0131n\u0131n sahibini daha \u00f6nce olu\u015fturdu\u011fumuz <code>myapp_user<\/code> olarak belirler.<\/li>\n<li><code>\\c satis_analizi;<\/code>: <code>psql<\/code> istemcisi i\u00e7inde \u00e7al\u0131\u015f\u0131rken, mevcut ba\u011flant\u0131n\u0131z\u0131 <code>satis_analizi<\/code> veritaban\u0131na ge\u00e7menizi sa\u011flar. Bu komut sadece <code>psql<\/code>'e \u00f6zg\u00fcd\u00fcr. pgAdmin'de ise sol panelden veritaban\u0131na t\u0131klayarak veya Query Tool i\u00e7inde veritaban\u0131 se\u00e7ene\u011fini kullanarak ba\u011flanabilirsiniz.<\/li>\n<li><code>CREATE TABLE urun_satislari (...)<\/code>: <code>urun_satislari<\/code> ad\u0131nda yeni bir tablo olu\u015fturur. Tablo tan\u0131m\u0131, s\u00fctun adlar\u0131n\u0131 ve veri tiplerini i\u00e7erir:\n<ul>\n<li><code>satis_id SERIAL PRIMARY KEY<\/code>: Her bir sat\u0131\u015f kayd\u0131 i\u00e7in benzersiz bir tan\u0131mlay\u0131c\u0131 g\u00f6revi g\u00f6ren birincil anahtar s\u00fctunudur. <code>SERIAL<\/code>, otomatik olarak artan bir tam say\u0131 veri tipi anlam\u0131na gelir.<\/li>\n<li><code>urun_adi VARCHAR(100) NOT NULL<\/code>: \u00dcr\u00fcn\u00fcn ad\u0131n\u0131 tutar. En fazla 100 karakter uzunlu\u011funda metin ve bo\u015f b\u0131rak\u0131lamaz (<code>NOT NULL<\/code>).<\/li>\n<li><code>kategori VARCHAR(50)<\/code>: \u00dcr\u00fcn kategorisini tutar. En fazla 50 karakter. Bo\u015f b\u0131rak\u0131labilir.<\/li>\n<li><code>satis_miktari INT NOT NULL<\/code>: Sat\u0131lan \u00fcr\u00fcn miktar\u0131n\u0131 tutar. Tam say\u0131 tipi ve bo\u015f b\u0131rak\u0131lamaz.<\/li>\n<li><code>birim_fiyat DECIMAL(10, 2) NOT NULL<\/code>: \u00dcr\u00fcn\u00fcn birim fiyat\u0131n\u0131 tutar. <code>DECIMAL(10, 2)<\/code>, toplam 10 haneye kadar, ondal\u0131k k\u0131sm\u0131nda ise 2 haneye kadar say\u0131lar\u0131 ifade eder. Bo\u015f b\u0131rak\u0131lamaz.<\/li>\n<li><code>satis_tarihi DATE DEFAULT CURRENT_DATE<\/code>: Sat\u0131\u015f\u0131n yap\u0131ld\u0131\u011f\u0131 tarihi tutar. <code>DATE<\/code> tipi ve varsay\u0131lan olarak kayd\u0131n eklendi\u011fi g\u00fcn\u00fcn tarihini al\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><code>\\d urun_satislari;<\/code>: <code>psql<\/code> komut istemcisi i\u00e7inde, belirtilen tablonun yap\u0131s\u0131n\u0131 (s\u00fctunlar, tipler, indeksler vb.) detayl\u0131 olarak g\u00f6sterir. Bu, tablonuzun do\u011fru olu\u015fturuldu\u011funu do\u011frulamak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/li>\n<\/ul>\n<h3>Tabloya Veri Ekleme ve Sorgulama<\/h3>\n<p>Tablonuzu olu\u015fturdu\u011funuza g\u00f6re, \u015fimdi i\u00e7ine veri ekleyebilir ve bu verileri sorgulayabiliriz.<\/p>\n<pre><code class=\"language-sql\">\n-- urun_satislari tablosuna veri ekleyelim\nINSERT INTO urun_satislari (urun_adi, kategori, satis_miktari, birim_fiyat, satis_tarihi) VALUES\n('Laptop Pro X', 'Elektronik', 2, 1200.00, '2023-10-26'),\n('Masa\u00fcst\u00fc Monit\u00f6r', 'Elektronik', 5, 300.50, '2023-10-26'),\n('Kablosuz Klavye', 'Aksesuar', 10, 75.25, '2023-10-25'),\n('Ofis Koltu\u011fu Ergonomik', 'Mobilya', 1, 450.00, '2023-10-27'),\n('HDMI Kablo 2m', 'Aksesuar', 20, 15.99, '2023-10-27');\n\n-- T\u00fcm verileri sorgulayal\u0131m\nSELECT * FROM urun_satislari;\n\n-- Sadece belirli kategorideki \u00fcr\u00fcnleri sorgulayal\u0131m\nSELECT urun_adi, satis_miktari, birim_fiyat FROM urun_satislari WHERE kategori = 'Elektronik';\n\n-- 100 TL'den pahal\u0131 olan \u00fcr\u00fcnlerin toplam sat\u0131\u015f miktar\u0131n\u0131 bulal\u0131m\nSELECT SUM(satis_miktari) AS toplam_pahali_urun_satis FROM urun_satislari WHERE birim_fiyat > 100.00;\n\n-- Kategoriye g\u00f6re toplam sat\u0131\u015f miktar\u0131 ve ortalama birim fiyat\u0131 gruplayarak listeleyelim\nSELECT kategori, SUM(satis_miktari) AS toplam_satis, AVG(birim_fiyat) AS ortalama_birim_fiyat\nFROM urun_satislari\nGROUP BY kategori\nORDER BY toplam_satis DESC;\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: SQL komutlar\u0131n\u0131 yazarken b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131l\u0131\u011f\u0131na dikkat etmeyebilirsiniz (PostgreSQL'de varsay\u0131lan olarak duyarl\u0131 de\u011fildir), ancak tutarl\u0131 bir yaz\u0131m stili kullanmak kodunuzun okunabilirli\u011fini art\u0131r\u0131r. Tablo ve s\u00fctun isimlerini genellikle k\u00fc\u00e7\u00fck harf kullanmak iyi bir al\u0131\u015fkanl\u0131kt\u0131r.\n    <\/div>\n<p>Bu \u00f6rneklerle, veritaban\u0131 olu\u015fturma, tablo tasarlama, veri ekleme ve temel sorgulama i\u015flemlerini \u00f6\u011frenmi\u015f oldunuz. Bu, herhangi bir uygulama geli\u015ftirmeye ba\u015flamak i\u00e7in sa\u011flam bir temel sa\u011flar. \u0130leri d\u00fczeyde daha karma\u015f\u0131k sorgular, indeksler ve optimizasyon teknikleri \u00f6\u011frenebilirsiniz, ancak temelleri anlamak kritik \u00f6nem ta\u015f\u0131r.<\/p>\n<h2>Performans ve G\u00fcvenlik \u0130\u00e7in \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>PostgreSQL'i sadece kurmak ve kullanmak yeterli de\u011fildir; uzun vadede performansl\u0131 ve g\u00fcvenli kalmas\u0131n\u0131 sa\u011flamak i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 ve en iyi uygulamalar\u0131 benimsemek hayati \u00f6neme sahiptir. Bu b\u00f6l\u00fcmde, veritaban\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 korumak ve potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak i\u00e7in atabilece\u011finiz ad\u0131mlara odaklanaca\u011f\u0131z.<\/p>\n<h3>Performans Optimizasyonu \u0130pu\u00e7lar\u0131<\/h3>\n<p>Performans, bir veritaban\u0131 sisteminin en kritik \u00f6zelliklerinden biridir. PostgreSQL'in h\u0131z\u0131n\u0131 art\u0131rmak i\u00e7in kullanabilece\u011finiz baz\u0131 teknikler \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>\u0130ndeksleme Stratejileri:<\/strong> S\u0131k\u00e7a sorgulanan s\u00fctunlara, \u00f6zellikle <code>WHERE<\/code> ko\u015fullar\u0131nda kullan\u0131lanlara indeksler eklemek sorgu h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Ancak \u00e7ok fazla indeks eklemek yazma i\u015flemlerini yava\u015flatabilir. B-tree, Hash, GIN, GIST gibi farkl\u0131 indeks tiplerini ve kullan\u0131mlar\u0131 ara\u015ft\u0131r\u0131n.\n<pre><code class=\"language-sql\">\n-- urun_adi s\u00fctununa indeks ekleyelim\nCREATE INDEX idx_urun_adi ON urun_satislari (urun_adi);\n\n-- Kategori ve satis_tarihi \u00fczerinde bir birle\u015fik indeks\nCREATE INDEX idx_kategori_tarih ON urun_satislari (kategori, satis_tarihi);\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong><code>VACUUM<\/code> ve <code>ANALYZE<\/code> Komutlar\u0131:<\/strong> PostgreSQL'in MVCC (Multi-Version Concurrency Control) mimarisi gere\u011fi, g\u00fcncellenen veya silinen veriler hemen diskten kald\u0131r\u0131lmaz, \"\u00f6l\u00fc sat\u0131r\" olarak kal\u0131r. <code>VACUUM<\/code> komutu bu \u00f6l\u00fc sat\u0131rlar\u0131 temizler ve disk alan\u0131n\u0131 geri kazan\u0131r. <code>ANALYZE<\/code> ise sorgu planlay\u0131c\u0131s\u0131n\u0131n daha iyi planlar olu\u015fturmas\u0131 i\u00e7in tablo istatistiklerini g\u00fcnceller. Genellikle <code>VACUUM FULL<\/code> yerine daha hafif olan <code>VACUUM<\/code> ve ard\u0131ndan <code>ANALYZE<\/code> kullanmak tercih edilir. Otomatik vakum (autovacuum) \u00f6zelli\u011fi, bu i\u015flemleri arka planda otomatik olarak yapar ve varsay\u0131lan olarak etkindir, ancak yap\u0131land\u0131rmas\u0131n\u0131 ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ayarlayabilirsiniz.<\/li>\n<li><strong>Yap\u0131land\u0131rma Dosyas\u0131 Optimizasyonu (<code>postgresql.conf<\/code>):<\/strong>\n<ul>\n<li><code>shared_buffers<\/code>: PostgreSQL'in kullanaca\u011f\u0131 payla\u015f\u0131lan bellek miktar\u0131n\u0131 belirler. Genellikle RAM'in %25'i civar\u0131nda ayarlanmas\u0131 \u00f6nerilir.<\/li>\n<li><code>work_mem<\/code>: Her bir sorgu i\u015flemi i\u00e7in ge\u00e7ici disk tabanl\u0131 i\u015flemlerden \u00f6nce kullan\u0131lacak bellek miktar\u0131n\u0131 belirler. S\u0131ralama (sort) veya birle\u015ftirme (hash join) gibi i\u015flemleri etkiler.<\/li>\n<li><code>wal_buffers<\/code>: WAL (Write-Ahead Log) i\u00e7in kullan\u0131lan bellek miktar\u0131n\u0131 belirler.<\/li>\n<li><code>effective_cache_size<\/code>: \u0130\u015fletim sisteminin ve veritaban\u0131n\u0131n disk \u00f6nbelle\u011fi i\u00e7in ne kadar bellek ay\u0131rabilece\u011fi konusunda sorgu planlay\u0131c\u0131ya ipucu verir.<\/li>\n<\/ul>\n<p>Bu parametreleri sunucunuzun donan\u0131m kaynaklar\u0131na ve i\u015f y\u00fck\u00fcn\u00fcze g\u00f6re ayarlamal\u0131s\u0131n\u0131z. Herhangi bir de\u011fi\u015fiklikten sonra veritaban\u0131n\u0131 yeniden ba\u015flatmay\u0131 unutmay\u0131n.<\/p>\n<\/li>\n<li><strong>Sorgu Optimizasyonu:<\/strong> Yava\u015f \u00e7al\u0131\u015fan sorgular\u0131 <code>EXPLAIN ANALYZE<\/code> ile inceleyin. Bu komut, bir sorgunun nas\u0131l y\u00fcr\u00fct\u00fcld\u00fc\u011f\u00fcn\u00fc ve hangi ad\u0131mlar\u0131n ne kadar zaman ald\u0131\u011f\u0131n\u0131 g\u00f6sterir. Yava\u015f kalan k\u0131s\u0131mlar\u0131 optimize ederek genel performans\u0131 art\u0131rabilirsiniz.<\/li>\n<li><strong>Ba\u011flant\u0131 Havuzlama (Connection Pooling):<\/strong> \u00d6zellikle y\u00fcksek trafikli uygulamalarda, her gelen istek i\u00e7in yeni bir veritaban\u0131 ba\u011flant\u0131s\u0131 a\u00e7mak maliyetli olabilir. PgBouncer gibi ba\u011flant\u0131 havuzu ara\u00e7lar\u0131, mevcut ba\u011flant\u0131lar\u0131 yeniden kullanarak performans\u0131 art\u0131r\u0131r.<\/li>\n<\/ol>\n<h3>G\u00fcvenlik En \u0130yi Uygulamalar\u0131<\/h3>\n<p>Veritaban\u0131 g\u00fcvenli\u011fi, veri ihlallerini \u00f6nlemek ve hassas bilgileri korumak i\u00e7in olmazsa olmazd\u0131r. \u0130\u015fte dikkat etmeniz gerekenler:<\/p>\n<ol>\n<li><strong>G\u00fc\u00e7l\u00fc Parolalar ve Rol Y\u00f6netimi:<\/strong>\n<ul>\n<li><code>postgres<\/code> s\u00fcper kullan\u0131c\u0131s\u0131 i\u00e7in g\u00fc\u00e7l\u00fc, karma\u015f\u0131k bir parola kullan\u0131n ve bu parolay\u0131 s\u0131k s\u0131k de\u011fi\u015ftirin.<\/li>\n<li>Uygulamalar\u0131n\u0131z ve kullan\u0131c\u0131lar\u0131n\u0131z i\u00e7in ayr\u0131 roller olu\u015fturun ve bu rollere yaln\u0131zca ihtiya\u00e7 duyduklar\u0131 en az ayr\u0131cal\u0131klar\u0131 (principle of least privilege) verin.<\/li>\n<li><code>CREATEROLE<\/code>, <code>CREATEDB<\/code>, <code>SUPERUSER<\/code> gibi ayr\u0131cal\u0131klar\u0131 sadece ger\u00e7ekten ihtiya\u00e7 duyan rollere atay\u0131n.<\/li>\n<\/ul>\n<\/li>\n<li><strong><code>pg_hba.conf<\/code> Dosyas\u0131n\u0131 Do\u011fru Yap\u0131land\u0131rma:<\/strong>\n<ul>\n<li>Veritaban\u0131n\u0131za sadece g\u00fcvendi\u011finiz IP adreslerinden veya a\u011flardan eri\u015fime izin verin.<\/li>\n<li>Uygulamalar i\u00e7in <code>md5<\/code> veya <code>scram-sha-256<\/code> gibi g\u00fcvenli parola kimlik do\u011frulama y\u00f6ntemlerini kullan\u0131n. <code>trust<\/code> kimlik do\u011frulamas\u0131n\u0131 asla \u00fcretim ortam\u0131nda kullanmay\u0131n.<\/li>\n<li>\u00d6rnek bir <code>pg_hba.conf<\/code> giri\u015fi:\n<pre><code class=\"language-plaintext\">\n# TYPE  DATABASE        USER            ADDRESS                 METHOD\nhost    myapp_db        myapp_user      192.168.1.0\/24          md5\n# Bu sat\u0131r, 'myapp_user'\u0131n 'myapp_db' veritaban\u0131na sadece 192.168.1.x a\u011f\u0131ndan MD5 parolas\u0131yla ba\u011flanmas\u0131na izin verir.\n                    <\/pre>\n<p><\/code>\n                <\/li>\n<\/ul>\n<\/li>\n<li><strong>SSL\/TLS Kullan\u0131m\u0131:<\/strong> Veritaban\u0131 ile uygulama aras\u0131ndaki ileti\u015fimi \u015fifrelemek i\u00e7in SSL\/TLS kullan\u0131n. Bu, a\u011f \u00fczerinden g\u00f6nderilen verilerin ele ge\u00e7irilmesini \u00f6nler. <code>postgresql.conf<\/code> i\u00e7inde <code>ssl = on<\/code> ve ilgili sertifika ayarlar\u0131n\u0131 yapmal\u0131s\u0131n\u0131z.<\/li>\n<li><strong>Veritaban\u0131 Yedekleri ve Geri Y\u00fckleme:<\/strong> D\u00fczenli yedekleme stratejileri uygulay\u0131n. <code>pg_dump<\/code> ve <code>pg_restore<\/code> gibi ara\u00e7lar kullanarak veritaban\u0131n\u0131z\u0131n yede\u011fini al\u0131n ve bu yedekleri g\u00fcvenli bir yerde saklay\u0131n. Felaket durumunda verilerinizi geri y\u00fckleme yetene\u011finiz oldu\u011fundan emin olmak i\u00e7in yedekleri periyodik olarak test edin.<\/li>\n<li><strong>G\u00fcvenlik G\u00fcncellemeleri:<\/strong> PostgreSQL toplulu\u011fu g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tespit edip yamalar yay\u0131nlad\u0131\u011f\u0131nda, sunucunuzu g\u00fcncel tutmak i\u00e7in bu yamalar\u0131 h\u0131zla uygulay\u0131n.<\/li>\n<\/ol>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Otomatik yedekleme ve kurtarma senaryolar\u0131n\u0131 otomatikle\u015ftirmek, veri kayb\u0131 riskini minimize etmenin en etkili yollar\u0131ndan biridir. Cron i\u015fleri veya otomasyon ara\u00e7lar\u0131 kullanarak bu s\u00fcre\u00e7leri planlay\u0131n.\n    <\/div>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar, PostgreSQL veritaban\u0131 ortam\u0131n\u0131z\u0131n sadece \u00e7al\u0131\u015fmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda en iyi performans\u0131 g\u00f6stermesini ve g\u00fcvenli kalmas\u0131n\u0131 sa\u011flamak i\u00e7in size yol g\u00f6sterecektir. Unutmay\u0131n, veritaban\u0131 y\u00f6netimi s\u00fcrekli bir \u00f6\u011frenme ve iyile\u015ftirme s\u00fcrecidir.<\/p>\n<h2>Mobil Uyumlu Tasar\u0131m \u0130\u00e7in Notlar: Makalenizin Sunumu Nas\u0131l Olmal\u0131?<\/h2>\n<p>Bu teknik makale, PostgreSQL kurulumu gibi \u00f6nemli bir konuyu ele al\u0131rken, i\u00e7eri\u011fin okuyuculara nas\u0131l sunuldu\u011fu da b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. \u00d6zellikle g\u00fcn\u00fcm\u00fczde, i\u00e7eri\u011fin mobil cihazlarda da kolayca okunabilir ve eri\u015filebilir olmas\u0131 kritik bir gereksinimdir. Teknik dok\u00fcmantasyonlar genellikle kod bloklar\u0131, tablolar ve uzun paragraflar i\u00e7erdi\u011finden, mobil uyumluluk d\u00fc\u015f\u00fcn\u00fclmeden haz\u0131rland\u0131\u011f\u0131nda okuyucu deneyimi olumsuz etkilenebilir.<\/p>\n<p>Bir makalenin veya teknik dok\u00fcmantasyonun mobil uyumlu olmas\u0131 i\u00e7in dikkat edilmesi gereken baz\u0131 temel noktalar vard\u0131r:<\/p>\n<ul>\n<li><strong>Duyarl\u0131 (Responsive) Tasar\u0131m:<\/strong> \u0130\u00e7erik, farkl\u0131 ekran boyutlar\u0131na ve cihazlara (masa\u00fcst\u00fc, tablet, telefon) otomatik olarak uyum sa\u011flamal\u0131d\u0131r. Bu genellikle CSS medya sorgular\u0131 (<code class=\"language-css\">@media<\/code> kurallar\u0131) kullan\u0131larak sa\u011flan\u0131r.<\/li>\n<li><strong>Okunabilir Font Boyutlar\u0131:<\/strong> Metinler mobil cihazlarda da rahat\u00e7a okunabilecek b\u00fcy\u00fckl\u00fckte olmal\u0131d\u0131r. K\u00fc\u00e7\u00fck fontlar, okuyucuyu yak\u0131nla\u015ft\u0131rmaya zorlar ve kullan\u0131c\u0131 deneyimini bozar.<\/li>\n<li><strong>Uygun Sat\u0131r Y\u00fcksekli\u011fi ve Paragraf Aral\u0131\u011f\u0131:<\/strong> Metin bloklar\u0131n\u0131n daha havadar g\u00f6r\u00fcnmesini ve g\u00f6z\u00fcn yorulmamas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Yatay Kayd\u0131rma Yok:<\/strong> Mobil cihazlarda yatay kayd\u0131rma (horizontal scrolling) genellikle k\u00f6t\u00fc bir deneyimdir. \u00d6zellikle kod bloklar\u0131 veya tablolar geni\u015fledik\u00e7e bu sorun ortaya \u00e7\u0131kabilir. Bu t\u00fcr i\u00e7erikler i\u00e7in kayd\u0131rma \u00e7ubuklar\u0131 (<code class=\"language-css\">overflow-x: auto;<\/code>) kullanmak veya daha k\u00fc\u00e7\u00fck ekranlarda okunabilirli\u011fi art\u0131racak \u015fekilde d\u00fczenlemek \u00f6nemlidir.<\/li>\n<li><strong>T\u0131klanabilir Alanlar (Tap Targets):<\/strong> Ba\u011flant\u0131lar ve d\u00fc\u011fmeler gibi etkile\u015fimli \u00f6\u011feler, parmakla kolayca t\u0131klanabilecek kadar b\u00fcy\u00fck olmal\u0131 ve aralar\u0131nda yeterli bo\u015fluk bulunmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p><strong>HTML ve CSS ile Mobil Uyumluluk \u00d6rne\u011fi<\/strong><\/p>\n<p>Bir web sitesinde bu makaleyi g\u00f6r\u00fcnt\u00fclerken, i\u00e7eri\u011fin farkl\u0131 cihazlarda nas\u0131l g\u00f6r\u00fcnece\u011fini ayarlamak i\u00e7in CSS medya sorgular\u0131n\u0131 kullanabiliriz. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code class=\"language-html\">\n<style>\n  \/* Varsay\u0131lan stil (k\u00fc\u00e7\u00fck ekranlar i\u00e7in ilk yakla\u015f\u0131m) *\/\n  body {\n    font-family: Arial, sans-serif;\n    line-height: 1.6;\n    margin: 15px;\n    color: #333;\n  }\n  h2 {\n    font-size: 1.8em;\n  }\n  h3 {\n    font-size: 1.4em;\n  }\n  pre code {\n    white-space: pre-wrap; \/* Kod bloklar\u0131n\u0131n sat\u0131rlar\u0131 k\u0131rmas\u0131n\u0131 sa\u011flar *\/\n    word-break: break-all; \/* Uzun kelimeleri veya dizeleri k\u0131rar *\/\n    overflow-x: auto;      \/* Yatay kayd\u0131rma \u00e7ubu\u011fu ekler *\/\n    padding: 10px;\n    background-color: #eee;\n    border: 1px solid #ccc;\n    display: block;\n  }\n\n  \/* Masa\u00fcst\u00fc ve daha b\u00fcy\u00fck ekranlar i\u00e7in stiller (minimum geni\u015flik 768px) *\/\n  @media (min-width: 768px) {\n    body {\n      margin: 30px auto;\n      max-width: 960px; \/* \u0130\u00e7eri\u011fi merkezler ve geni\u015fli\u011fini s\u0131n\u0131rlar *\/\n      font-size: 1.1em;\n    }\n    h2 {\n      font-size: 2.2em;\n    }\n    h3 {\n      font-size: 1.7em;\n    }\n    pre code {\n      white-space: pre; \/* Masa\u00fcst\u00fcnde kod sat\u0131rlar\u0131n\u0131 genellikle k\u0131rmay\u0131z *\/\n    }\n  }\n<\/style>\n\n<!-- Makalenin geri kalan\u0131 bu stillerle birlikte g\u00f6r\u00fcnt\u00fclenecektir -->\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte:<\/p>\n<ul>\n<li>Varsay\u0131lan stiller, en k\u00fc\u00e7\u00fck ekranlar (mobil cihazlar) i\u00e7in uygulan\u0131r. <code>pre code<\/code> blo\u011funda <code>white-space: pre-wrap;<\/code> ve <code>word-break: break-all;<\/code> kullanarak kod sat\u0131rlar\u0131n\u0131n ekran d\u0131\u015f\u0131na ta\u015fmas\u0131n\u0131 engelliyoruz. Ayr\u0131ca <code>overflow-x: auto;<\/code> ile gerekti\u011finde yatay kayd\u0131rma \u00e7ubu\u011fu ekleyerek okunabilirli\u011fi art\u0131r\u0131yoruz.<\/li>\n<li><code>@media (min-width: 768px)<\/code> sorgusu, ekran geni\u015fli\u011fi 768 pikselden fazla oldu\u011funda (genellikle tablet ve masa\u00fcst\u00fc) ek stilleri uygular. Bu sayede, i\u00e7erik daha geni\u015f bir alanda daha okunakl\u0131 hale gelir, font boyutlar\u0131 art\u0131r\u0131l\u0131r ve kod bloklar\u0131 daha standart bir \u015fekilde (yatay kayd\u0131rma ile) g\u00f6sterilir.<\/li>\n<\/ul>\n<p>Bu yakla\u015f\u0131m, i\u00e7eri\u011finizi farkl\u0131 cihazlarda tutarl\u0131 ve keyifli bir \u015fekilde sunman\u0131z\u0131 sa\u011flar. Bir teknik makale haz\u0131rlarken, sadece i\u00e7eri\u011fin kalitesine de\u011fil, ayn\u0131 zamanda okuyucunun i\u00e7eri\u011fe nas\u0131l eri\u015fti\u011fine de dikkat etmek, mesaj\u0131n\u0131z\u0131n daha geni\u015f bir kitleye ula\u015fmas\u0131na yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>Sonu\u00e7: PostgreSQL Yolculu\u011funuzun \u0130kinci Ad\u0131m\u0131 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu kapsaml\u0131 rehberde, PostgreSQL'i s\u0131f\u0131rdan kurmay\u0131 ve temel d\u00fczeyde bir geli\u015ftirme ortam\u0131 olu\u015fturmay\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. \u0130\u015fletim sisteminize \u00f6zel kurulum s\u00fcre\u00e7lerinden, veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturma komutlar\u0131na, pgAdmin gibi y\u00f6netim ara\u00e7lar\u0131n\u0131n kullan\u0131m\u0131na ve hatta performans ile g\u00fcvenlik i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131na kadar geni\u015f bir yelpazede bilgi edindiniz. Art\u0131k veri taban\u0131 yolculu\u011funuzda sa\u011flam bir temeliniz var ve bu bilgilerle kendi uygulamalar\u0131n\u0131z i\u00e7in g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir veri y\u00f6netim altyap\u0131s\u0131 kurmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<p>Unutmay\u0131n ki PostgreSQL, derinlemesine ke\u015ffedilmeyi bekleyen zengin \u00f6zelliklere sahip bir ekosistemdir. Bu makale, sadece ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. \u0130lerleyen s\u00fcre\u00e7lerde, daha karma\u015f\u0131k sorgular yazma, geli\u015fmi\u015f indeksleme teknikleri, replikasyon, yedekleme stratejileri, optimizasyon y\u00f6ntemleri ve farkl\u0131 uzant\u0131lar\u0131 kullanarak veritaban\u0131n\u0131z\u0131n potansiyelini tam olarak ortaya \u00e7\u0131karabilirsiniz. S\u00fcrekli \u00f6\u011frenmeye ve pratik yapmaya devam etmek, PostgreSQL uzman\u0131 olman\u0131n anahtar\u0131d\u0131r.<\/p>\n<p>Veri taban\u0131 y\u00f6netimi, modern yaz\u0131l\u0131m geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve PostgreSQL gibi g\u00fc\u00e7l\u00fc bir ara\u00e7la \u00e7al\u0131\u015fmak, projelerinize b\u00fcy\u00fck de\u011fer katacakt\u0131r. Kurulum ve temel yap\u0131land\u0131rma ad\u0131mlar\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz olas\u0131 sorunlara kar\u015f\u0131 haz\u0131rl\u0131kl\u0131 olmak ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 bilmek, \u00f6\u011frenme s\u00fcrecinizi daha ak\u0131c\u0131 hale getirecektir. \u015eimdi, edindi\u011finiz bu bilgileri prati\u011fe d\u00f6kme zaman\u0131!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n            <strong>S: PostgreSQL kurulumunda en yayg\u0131n hata nedir?<\/strong><\/p>\n<p>C: En yayg\u0131n hatalardan biri, kurulum s\u0131ras\u0131nda belirlenen s\u00fcper kullan\u0131c\u0131 (<code>postgres<\/code>) parolas\u0131n\u0131n unutulmas\u0131d\u0131r. Bu durumda, PostgreSQL servisini tek kullan\u0131c\u0131 modunda ba\u015flat\u0131p parolay\u0131 s\u0131f\u0131rlaman\u0131z gerekebilir. Di\u011fer bir yayg\u0131n sorun ise g\u00fcvenlik duvar\u0131n\u0131n (firewall) PostgreSQL'in varsay\u0131lan 5432 portuna eri\u015fimi engellemesidir. G\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131z\u0131 kontrol etti\u011finizden emin olun.<\/p>\n<\/li>\n<li>\n            <strong>S: <code>psql<\/code> ve <code>pgAdmin<\/code> aras\u0131ndaki fark nedir? Hangisini kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>C: <code>psql<\/code>, PostgreSQL ile etkile\u015fim kurmak i\u00e7in kullan\u0131lan bir komut sat\u0131r\u0131 arac\u0131d\u0131r. Hafif, h\u0131zl\u0131 ve otomasyon i\u00e7in idealdir. <code>pgAdmin<\/code> ise PostgreSQL sunucular\u0131n\u0131 g\u00f6rsel olarak y\u00f6netmek i\u00e7in kullan\u0131lan bir grafik aray\u00fcz\u00fcd\u00fcr (GUI). Yeni ba\u015flayanlar i\u00e7in veritaban\u0131n\u0131 ve tablolar\u0131 g\u00f6rselle\u015ftirmeyi kolayla\u015ft\u0131r\u0131r. Her ikisinin de kendine g\u00f6re avantajlar\u0131 vard\u0131r; geli\u015ftiriciler genellikle <code>psql<\/code>'i, veri analistleri veya y\u00f6neticiler ise <code>pgAdmin<\/code>'i tercih edebilir. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re her ikisini de kullanmak en iyisidir.<\/p>\n<\/li>\n<li>\n            <strong>S: PostgreSQL'i kald\u0131rmak istersem ne yapmal\u0131y\u0131m?<\/strong><\/p>\n<p>C: \u0130\u015fletim sisteminize g\u00f6re de\u011fi\u015fiklik g\u00f6sterir:<\/p>\n<ul>\n<li><strong>Windows:<\/strong> \"Denetim Masas\u0131\" -> \"Program Ekle veya Kald\u0131r\" \u00fczerinden PostgreSQL'i kald\u0131rabilirsiniz.<\/li>\n<li><strong>macOS (Homebrew ile):<\/strong> Terminalde <code>brew services stop postgresql<\/code> ve ard\u0131ndan <code>brew uninstall postgresql<\/code> komutlar\u0131n\u0131 kullan\u0131n. Veri dizinlerini de manuel olarak silmeniz gerekebilir (genellikle <code>\/usr\/local\/var\/postgres<\/code>).<\/li>\n<li><strong>Linux (Ubuntu):<\/strong> Terminalde <code>sudo apt remove --purge postgresql postgresql-contrib<\/code> komutunu kullan\u0131n. Bu, yap\u0131land\u0131rma dosyalar\u0131n\u0131 da kald\u0131r\u0131r. Veri dizini <code>\/var\/lib\/postgresql\/<version>\/main<\/code> da kald\u0131r\u0131lmal\u0131d\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li>\n            <strong>S: Performans neden \u00f6nemlidir ve nas\u0131l izleyebilirim?<\/strong><\/p>\n<p>C: Performans, uygulaman\u0131z\u0131n h\u0131z\u0131 ve kullan\u0131c\u0131lara sa\u011flad\u0131\u011f\u0131 deneyim a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Yava\u015f veritaban\u0131 i\u015flemleri, uygulaman\u0131z\u0131n genelini yava\u015flatabilir. Performans\u0131 izlemek i\u00e7in <code>pg_stat_activity<\/code> ve <code>pg_stat_statements<\/code> gibi PostgreSQL'in kendi sundu\u011fu istatistiksel g\u00f6r\u00fcn\u00fcmleri kullanabilirsiniz. Ayr\u0131ca <code>EXPLAIN ANALYZE<\/code> komutu ile sorgular\u0131n\u0131z\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 detayl\u0131ca g\u00f6rebilirsiniz. D\u0131\u015f ara\u00e7lar (\u00f6rne\u011fin Prometheus ve Grafana) ile de daha kapsaml\u0131 izleme yapabilirsiniz.<\/p>\n<\/li>\n<li>\n            <strong>S: PostgreSQL'de hangi g\u00fcvenlik \u00f6nlemlerini almal\u0131y\u0131m?<\/strong><\/p>\n<p>C: En temel g\u00fcvenlik \u00f6nlemleri \u015funlard\u0131r: G\u00fc\u00e7l\u00fc ve benzersiz parolalar kullan\u0131n, uygulamalar\u0131n\u0131z i\u00e7in en az ayr\u0131cal\u0131k ilkesini uygulayan \u00f6zel kullan\u0131c\u0131lar olu\u015fturun, <code>pg_hba.conf<\/code> dosyas\u0131n\u0131 do\u011fru yap\u0131land\u0131rarak sadece yetkili IP'lerden eri\u015fime izin verin, veritaban\u0131 ile uygulama aras\u0131ndaki ileti\u015fimi SSL\/TLS ile \u015fifreleyin ve d\u00fczenli olarak yedekleme yap\u0131n.<\/p>\n<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[644],"tags":[],"class_list":{"0":"post-32302","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-postgresql","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu<\/title>\n<meta name=\"description\" content=\"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL&#039;i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu\" \/>\n<meta property=\"og:description\" content=\"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL&#039;i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-20T02:31:37+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"32 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu\",\"datePublished\":\"2025-10-20T02:31:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\"},\"wordCount\":5524,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\",\"name\":\"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-20T02:31:37+00:00\",\"description\":\"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL'i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu","description":"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL'i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/","og_locale":"tr_TR","og_type":"article","og_title":"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu","og_description":"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL'i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-20T02:31:37+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"32 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu","datePublished":"2025-10-20T02:31:37+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/"},"wordCount":5524,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PostgreSQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/","url":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/","name":"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-20T02:31:37+00:00","description":"Modern uygulama geli\u015ftirmenin kalbinde, verilerin etkin ve g\u00fcvenilir bir \u015fekilde y\u00f6netilmesi yatar. Peki, veritaban\u0131 se\u00e7imi, projenizin ba\u015far\u0131s\u0131n\u0131 ne kadar etkileyebilir? Bu rehberde, pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi PostgreSQL'i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve ortam\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan itibaren sa\u011flam bir temel olu\u015fturarak, veri taban\u0131 deneyiminizi sorunsuz bir \u015fekilde ba\u015flatmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 burada bulacaks\u0131n\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/day-2-postgresql-kurulumu-ve-ortam-kurulumu-kilavuzu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu K\u0131lavuzu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32302"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32302\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}