{"id":34497,"date":"2025-11-17T10:01:29","date_gmt":"2025-11-17T07:01:29","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/"},"modified":"2025-11-17T10:01:29","modified_gmt":"2025-11-17T07:01:29","slug":"forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/","title":{"rendered":"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m"},"content":{"rendered":"<p><body><\/p>\n<p>Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda veri, en de\u011ferli varl\u0131klardan biri haline geldi. Ancak, bu verilere eri\u015fmek ve anlaml\u0131 i\u00e7g\u00f6r\u00fcler elde etmek, genellikle teknik bilgi gerektiren karma\u015f\u0131k bir s\u00fcre\u00e7tir. \u0130\u015f birimleri, pazarlama ekipleri, proje y\u00f6neticileri veya insan kaynaklar\u0131 departmanlar\u0131, anl\u0131k olarak verilere ihtiya\u00e7 duydu\u011funda genellikle IT ekiplerinin veya veri analistlerinin yard\u0131m\u0131na ba\u015fvurmak zorunda kal\u0131rlar. Bu durum, hem zaman kayb\u0131na yol a\u00e7ar hem de veri eri\u015fiminde bir darbo\u011faz olu\u015fturur.<\/p>\n<p>Peki ya herkes, teknik bir dil olan SQL&#8217;i \u00f6\u011frenmeye gerek kalmadan, kendi do\u011fal diliyle veri taban\u0131na soru sorabilseydi? &#8220;Ge\u00e7en \u00e7eyrekte en \u00e7ok satan \u00fcr\u00fcnler hangileri?&#8221; ya da &#8220;A tak\u0131m\u0131 \u00e7al\u0131\u015fanlar\u0131n\u0131n tamamlad\u0131\u011f\u0131 g\u00f6revlerin ortalama s\u00fcresi nedir?&#8221; gibi sorular\u0131 do\u011frudan sorup an\u0131nda cevap alabilseydi? \u0130\u015fte tam da bu noktada Do\u011fal Dil SQL (Natural Language SQL) devreye giriyor. B\u00fcy\u00fck Dil Modellerinin (LLM &#8211; Large Language Models) geli\u015fimi sayesinde, insan dilini anlay\u0131p bunu yap\u0131sal bir sorgu diline, yani SQL&#8217;e \u00e7evirebilen sistemler art\u0131k hayal olmaktan \u00e7\u0131kt\u0131. Bu teknoloji, veri analizini demokratikle\u015ftirerek, her seviyeden kullan\u0131c\u0131n\u0131n verilere daha h\u0131zl\u0131 ve etkin bir \u015fekilde ula\u015fmas\u0131n\u0131 sa\u011fl\u0131yor. \u00d6zellikle Atlassian ekosistemi gibi i\u015fbirli\u011finin merkezinde yer alan platformlarda, bu t\u00fcr bir yetenek, ekiplerin karar alma s\u00fcre\u00e7lerini h\u0131zland\u0131rmada kritik bir rol oynayabilir.<\/p>\n<p>Bu makalede, Atlassian&#8217;\u0131n serverless uygulama geli\u015ftirme platformu Forge \u00fczerinde, Rovo (bir LLM \u00e7\u00f6z\u00fcm\u00fc) ile do\u011fal dil sorgular\u0131n\u0131 nas\u0131l SQL&#8217;e \u00e7evirece\u011fimizi ve bu SQL sorgular\u0131n\u0131 Forge SQL (TiDB tabanl\u0131) kullanarak nas\u0131l g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, sadece teknik bir \u00e7\u00f6z\u00fcm sunmak de\u011fil, ayn\u0131 zamanda bu s\u00fcrecin g\u00fcvenli\u011fini, performans\u0131n\u0131 ve ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulanabilirli\u011fini derinlemesine ele almakt\u0131r. B\u00f6ylece, veri taban\u0131 eri\u015fimini basitle\u015ftirirken, kurumsal g\u00fcvenlik standartlar\u0131ndan \u00f6d\u00fcn vermeyen sa\u011flam bir mimariyi nas\u0131l in\u015fa edebilece\u011finizi g\u00f6receksiniz. Haydi, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m ve do\u011fal dilin g\u00fcc\u00fcyle veri analizi d\u00fcnyas\u0131n\u0131 yeniden \u015fekillendirelim.<\/p>\n<h2>Atlassian Forge, Rovo ve TiDB: Bu Teknolojiler Neyi \u00c7\u00f6z\u00fcyor?<\/h2>\n<p>Do\u011fal dilin g\u00fcc\u00fcyle veri tabanlar\u0131na eri\u015fim, modern i\u015f d\u00fcnyas\u0131n\u0131n en b\u00fcy\u00fck hedeflerinden biri haline geldi. Bu hedefe ula\u015fmak i\u00e7in kulland\u0131\u011f\u0131m\u0131z teknolojilerin her birinin kendine \u00f6zg\u00fc bir rol\u00fc ve \u00f6nemi bulunuyor. Atlassian Forge, Rovo ve TiDB, bu ekosistemde bir araya gelerek g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve g\u00fcvenli bir \u00e7\u00f6z\u00fcm sunuyor. \u015eimdi bu temel kavramlar\u0131 detayl\u0131ca inceleyelim.<\/p>\n<h3>Atlassian Forge Nedir ve Neden \u00d6nemli?<\/h3>\n<p>Atlassian Forge, geli\u015ftiricilerin Jira, Confluence ve di\u011fer Atlassian \u00fcr\u00fcnleri i\u00e7in h\u0131zl\u0131, g\u00fcvenli ve \u00f6l\u00e7eklenebilir uygulamalar olu\u015fturmas\u0131na olanak tan\u0131yan serverless (sunucusuz) bir platformdur. Geleneksel uygulama geli\u015ftirme y\u00f6ntemlerinin aksine, Forge, altyap\u0131 y\u00f6netimiyle u\u011fra\u015fma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu sayede geli\u015ftiriciler, do\u011frudan uygulaman\u0131n i\u015f mant\u0131\u011f\u0131na ve kullan\u0131c\u0131 deneyimine odaklanabilirler. Forge uygulamalar\u0131, Atlassian Cloud altyap\u0131s\u0131nda \u00e7al\u0131\u015f\u0131r ve yerle\u015fik g\u00fcvenlik \u00f6zellikleriyle birlikte gelir, bu da onlar\u0131 kurumsal kullan\u0131ma son derece uygun hale getirir. \u00d6zellikle, veri eri\u015fimi gerektiren uygulamalar i\u00e7in Forge SQL gibi y\u00f6netilen veri taban\u0131 hizmetleri sunmas\u0131, geli\u015ftiricilerin i\u015fini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Forge&#8217;un sundu\u011fu en b\u00fcy\u00fck avantajlardan biri, &#8220;compute isolation&#8221; (hesaplama izolasyonu) ve &#8220;data residency&#8221; (veri ikametgah\u0131) gibi \u00f6nemli g\u00fcvenlik ve uyumluluk \u00f6zellikleri sa\u011flamas\u0131d\u0131r. Bu sayede, uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 ortam\u0131n ve verilerinizin nerede tutuldu\u011funun kontrol\u00fcn\u00fc elinizde tutabilirsiniz. Ayr\u0131ca, Atlassian platformlar\u0131yla derin entegrasyonu sayesinde, mevcut i\u015f ak\u0131\u015flar\u0131n\u0131za sorunsuz bir \u015fekilde entegre olabilen g\u00fc\u00e7l\u00fc uygulamalar geli\u015ftirebilirsiniz. Bu \u00f6zellikler, do\u011fal dil SQL gibi hassas veri eri\u015fimi gerektiren bir uygulaman\u0131n temelini olu\u015fturmak i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<h3>Rovo (LLM) ile Do\u011fal Dilin G\u00fcc\u00fc: Dil ve Veri Aras\u0131ndaki K\u00f6pr\u00fc<\/h3>\n<p>Rovo, Atlassian&#8217;\u0131n yapay zeka alan\u0131ndaki stratejik yat\u0131r\u0131mlar\u0131ndan biri olarak konumland\u0131r\u0131lan, b\u00fcy\u00fck dil modelleri (LLM) tabanl\u0131 bir asistand\u0131r. Hen\u00fcz genel kullan\u0131ma sunulmam\u0131\u015f olsa da, bu makalede Rovo&#8217;yu, do\u011fal dil sorgular\u0131n\u0131 SQL&#8217;e \u00e7evirmek i\u00e7in kulland\u0131\u011f\u0131m\u0131z varsay\u0131msal bir LLM \u00e7\u00f6z\u00fcm\u00fc olarak ele alaca\u011f\u0131z. LLM&#8217;ler, muazzam miktarda metin verisi \u00fczerinde e\u011fitilerek insan dilinin inceliklerini, gramerini ve ba\u011flam\u0131n\u0131 anlamay\u0131 \u00f6\u011frenirler. Bu yetenekleri sayesinde, &#8220;ge\u00e7en ay ka\u00e7 yeni m\u00fc\u015fteri edindik?&#8221; gibi basit bir do\u011fal dil sorusunu, veri taban\u0131 \u015femas\u0131n\u0131 dikkate alarak uygun bir SQL sorgusuna d\u00f6n\u00fc\u015ft\u00fcrebilirler.<\/p>\n<p>Rovo gibi bir LLM&#8217;in g\u00fcc\u00fc, sadece kelimeleri de\u011fil, ayn\u0131 zamanda niyeti de anlamas\u0131nda yatar. \u00d6rne\u011fin, &#8220;ge\u00e7en ay&#8221; ifadesinin hangi tarih aral\u0131\u011f\u0131na denk geldi\u011fini veya &#8220;m\u00fc\u015fteri&#8221; kelimesinin veri taban\u0131nda hangi tabloya kar\u015f\u0131l\u0131k geldi\u011fini, e\u011fitildi\u011fi veriler ve sa\u011flanan ba\u011flam (veri taban\u0131 \u015femas\u0131) sayesinde yorumlayabilir. Bu, kullan\u0131c\u0131lar\u0131n veri taban\u0131 terminolojisini veya SQL sentaks\u0131n\u0131 bilmeden do\u011frudan i\u015f sorular\u0131n\u0131 sorabilmeleri anlam\u0131na gelir. Ancak, LLM&#8217;lerin do\u011fru ve g\u00fcvenli SQL \u00fcretmesi i\u00e7in dikkatli bir prompt m\u00fchendisli\u011fi ve \u00e7\u0131kt\u0131 do\u011frulama s\u00fcre\u00e7leri \u015fartt\u0131r. Aksi takdirde, hatal\u0131 veya g\u00fcvensiz sorgular olu\u015fturma riski ortaya \u00e7\u0131kabilir. Bu y\u00fczden, Rovo&#8217;yu kullan\u0131rken, g\u00fcvenlik ve do\u011fruluk her zaman en \u00fcst \u00f6nceli\u011fimiz olacakt\u0131r.<\/p>\n<h3>Forge SQL ve TiDB: Veri Taban\u0131 Se\u00e7imi Neden Kritik?<\/h3>\n<p>Forge SQL, Atlassian Forge uygulamalar\u0131 i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f, y\u00f6netilen bir veri taban\u0131 hizmetidir. Geli\u015ftiricilerin veri taban\u0131 y\u00f6netimi, yedekleme veya \u00f6l\u00e7eklendirme gibi operasyonel y\u00fcklerle u\u011fra\u015fmas\u0131na gerek kalmadan, g\u00fcvenli ve performansl\u0131 veri depolama \u00e7\u00f6z\u00fcmleri sunar. Forge SQL&#8217;in alt\u0131nda yatan teknoloji ise genellikle <a href=\"https:\/\/pingcap.com\/tidb\">TiDB<\/a>&#8216;dir. TiDB (A Distributed SQL Database), a\u00e7\u0131k kaynakl\u0131, MySQL uyumlu ve da\u011f\u0131t\u0131k bir SQL veri taban\u0131d\u0131r. Bulut yerel (cloud-native) mimarisi sayesinde, yatay olarak kolayca \u00f6l\u00e7eklenebilir ve y\u00fcksek eri\u015filebilirlik sunar.<\/p>\n<p>TiDB&#8217;nin se\u00e7imi, \u00f6zellikle Forge gibi serverless ve \u00f6l\u00e7eklenebilir bir platform i\u00e7in kritik \u00f6neme sahiptir. Do\u011fal dil SQL sorgular\u0131, bazen \u00f6ng\u00f6r\u00fclemeyen veya kaynak yo\u011fun olabilecek sorgular \u00fcretebilir. TiDB&#8217;nin da\u011f\u0131t\u0131k yap\u0131s\u0131, bu t\u00fcr sorgu y\u00fcklerini etkili bir \u015fekilde y\u00f6netebilir ve uygulaman\u0131z\u0131n performans\u0131n\u0131 olumsuz etkilemeden b\u00fcy\u00fcyebilir. MySQL uyumlulu\u011fu, mevcut SQL ara\u00e7lar\u0131 ve becerileriyle entegrasyonu kolayla\u015ft\u0131r\u0131rken, ACID garantileri (Atomicity, Consistency, Isolation, Durability) veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flar. Bu \u00f6zellikler, do\u011fal dil SQL gibi dinamik sorgu olu\u015fturma senaryolar\u0131nda hem g\u00fcvenlik hem de g\u00fcvenilirlik a\u00e7\u0131s\u0131ndan vazge\u00e7ilmezdir. Forge SQL ile TiDB&#8217;nin entegrasyonu, geli\u015ftiricilere g\u00fc\u00e7l\u00fc bir veri depolama ve eri\u015fim katman\u0131 sunarak, do\u011fal dil SQL uygulamas\u0131n\u0131n temelini sa\u011flam bir zemine oturtur.<\/p>\n<h2>Do\u011fal Dil SQL&#8217;i Forge&#8217;da G\u00fcvenli Bir \u015eekilde Nas\u0131l Uygular\u0131z?<\/h2>\n<p>Do\u011fal dil SQL yeteneklerini Atlassian Forge platformuna entegre etmek, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde geli\u015ftiren ancak ayn\u0131 zamanda ciddi g\u00fcvenlik ve mimari d\u00fc\u015f\u00fcnceler gerektiren bir s\u00fcre\u00e7tir. Veri tabanlar\u0131na do\u011frudan do\u011fal dil ile eri\u015fim sa\u011flarken, olas\u0131 SQL enjeksiyonlar\u0131, yetkisiz veri eri\u015fimi ve performans sorunlar\u0131 gibi riskleri minimize etmek zorunday\u0131z. Bu b\u00f6l\u00fcmde, Forge \u00fczerinde g\u00fcvenli bir do\u011fal dil SQL uygulamas\u0131n\u0131n mimarisini, Rovo ile SQL \u00fcretim mekanizmalar\u0131n\u0131 ve Forge SQL&#8217;in sa\u011flad\u0131\u011f\u0131 g\u00fcvenlik katmanlar\u0131n\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>Mimarinin Temel Ta\u015flar\u0131: Ak\u0131\u015f Diyagram\u0131 ve A\u00e7\u0131klamas\u0131<\/h3>\n<p>G\u00fcvenli bir do\u011fal dil SQL uygulamas\u0131n\u0131n mimarisi, farkl\u0131 katmanlar\u0131n ve teknolojilerin uyumlu bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 gerektirir. \u0130\u015fte bu s\u00fcrecin basitle\u015ftirilmi\u015f bir ak\u0131\u015f diyagram\u0131 ve her ad\u0131m\u0131n a\u00e7\u0131klamas\u0131:<\/p>\n<ol>\n<li><strong>Kullan\u0131c\u0131 Aray\u00fcz\u00fc (Forge UI)<\/strong>: Kullan\u0131c\u0131, Atlassian \u00fcr\u00fcnleri (Jira, Confluence) i\u00e7inde \u00e7al\u0131\u015fan Forge uygulamas\u0131 aray\u00fcz\u00fcnde do\u011fal dil sorgusunu girer.<\/li>\n<li><strong>Forge Uygulamas\u0131 (Backend Resolver)<\/strong>: Kullan\u0131c\u0131n\u0131n girdi\u011fi do\u011fal dil sorgusu, Forge uygulamas\u0131n\u0131n backend resolver fonksiyonuna iletilir. Bu k\u0131s\u0131m, t\u00fcm i\u015f mant\u0131\u011f\u0131n\u0131 ve d\u0131\u015f servislerle ileti\u015fimi y\u00f6netir.<\/li>\n<li><strong>Rovo (LLM) Servisi<\/strong>: Forge backend, do\u011fal dil sorgusunu, veri taban\u0131 \u015fema bilgisi ve g\u00fcvenlik kurallar\u0131yla birlikte Rovo&#8217;ya (LLM) g\u00f6nderir. Rovo, bu girdiyi analiz eder ve uygun bir SQL sorgusu \u00fcretir.<\/li>\n<li><strong>SQL Do\u011frulama ve G\u00fcvenlik Katman\u0131<\/strong>: Rovo&#8217;dan d\u00f6nen SQL sorgusu, Forge backend&#8217;de kapsaml\u0131 bir do\u011frulama ve g\u00fcvenlik kontrol\u00fcnden ge\u00e7er. Bu ad\u0131m, potansiyel SQL enjeksiyonlar\u0131n\u0131 \u00f6nler ve sorgunun izin verilen tablolar\u0131\/kolonlar\u0131 kullan\u0131p kullanmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/li>\n<li><strong>Forge SQL (TiDB) Veri Taban\u0131<\/strong>: G\u00fcvenli oldu\u011fu onaylanan SQL sorgusu, Forge SQL API arac\u0131l\u0131\u011f\u0131yla TiDB veri taban\u0131na g\u00f6nderilir.<\/li>\n<li><strong>Veri Eri\u015fimi ve Sonu\u00e7lar<\/strong>: TiDB, sorguyu \u00e7al\u0131\u015ft\u0131r\u0131r ve sonu\u00e7lar\u0131 Forge uygulamas\u0131na geri d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><strong>Sonu\u00e7lar\u0131n Sunumu (Forge UI)<\/strong>: Forge uygulamas\u0131, elde edilen verileri kullan\u0131c\u0131 dostu bir formatta (tablo, grafik vb.) Forge UI&#8217;da g\u00f6sterir.<\/li>\n<\/ol>\n<p>Bu mimaride her ad\u0131m, \u00f6zellikle g\u00fcvenlik ve do\u011frulama, kritik \u00f6neme sahiptir. Bu katmanl\u0131 yakla\u015f\u0131m, veri taban\u0131na eri\u015fimi kontroll\u00fc ve g\u00fcvenli bir \u015fekilde ger\u00e7ekle\u015ftirmemizi sa\u011flar.<\/p>\n<h3>Rovo ile Do\u011fal Dil Sorgular\u0131n\u0131n SQL&#8217;e \u00c7evrilmesi: Mekanizma<\/h3>\n<p>Rovo gibi bir LLM&#8217;in do\u011fal dil sorgular\u0131n\u0131 do\u011fru ve g\u00fcvenli SQL&#8217;e \u00e7evirmesi, sadece dil bilgisiyle s\u0131n\u0131rl\u0131 de\u011fildir. LLM&#8217;e veri taban\u0131n\u0131n yap\u0131s\u0131 hakk\u0131nda bilgi sa\u011flamak (\u015fema bilgisi) ve belirli g\u00fcvenlik k\u0131s\u0131tlamalar\u0131n\u0131 belirtmek hayati \u00f6nem ta\u015f\u0131r. Bu s\u00fcre\u00e7 genellikle &#8220;prompt m\u00fchendisli\u011fi&#8221; olarak adland\u0131r\u0131l\u0131r.<\/p>\n<p><strong>Prompt Yap\u0131s\u0131:<\/strong><br \/>\nLLM&#8217;e g\u00f6nderilen prompt, a\u015fa\u011f\u0131daki bile\u015fenleri i\u00e7ermelidir:<\/p>\n<ul>\n<li><strong>Kullan\u0131c\u0131 Sorgusu<\/strong>: &#8220;Ge\u00e7en ay en \u00e7ok geciken 5 g\u00f6rev hangisi?&#8221;<\/li>\n<li><strong>Veri Taban\u0131 \u015eemas\u0131<\/strong>: Kullan\u0131labilir tablolar, kolonlar, veri tipleri ve aralar\u0131ndaki ili\u015fkiler hakk\u0131nda detayl\u0131 bilgi. \u00d6rne\u011fin:\n<pre><code>CREATE TABLE tasks (\n    task_id INT PRIMARY KEY,\n    project_id INT,\n    status VARCHAR(50),\n    due_date DATE,\n    completed_date DATE,\n    assigned_to VARCHAR(100),\n    created_date DATE\n);\nCREATE TABLE projects (\n    project_id INT PRIMARY KEY,\n    project_name VARCHAR(255),\n    start_date DATE,\n    end_date DATE\n);<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>G\u00fcvenlik ve K\u0131s\u0131tlama Kurallar\u0131<\/strong>: LLM'in \u00fcretmesi gereken SQL'e getirilen k\u0131s\u0131tlamalar. \u00d6rne\u011fin:\n<ul>\n<li>Sadece <code>tasks<\/code> ve <code>projects<\/code> tablolar\u0131na eri\u015fime izin ver.<\/li>\n<li><code>DELETE<\/code>, <code>UPDATE<\/code>, <code>INSERT<\/code> gibi DML (Data Manipulation Language) komutlar\u0131n\u0131 kullanma. Sadece <code>SELECT<\/code> komutlar\u0131na izin ver.<\/li>\n<li>Belirli kolonlar\u0131 (\u00f6rne\u011fin hassas bilgileri) sorgulama d\u0131\u015f\u0131nda tut.<\/li>\n<li>Sorgu sonu\u00e7lar\u0131n\u0131 belirli bir limitin \u00fczerinde d\u00f6nd\u00fcrme (\u00f6rne\u011fin <code>LIMIT 100<\/code>).<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00d6rnekler (Few-shot learning)<\/strong>: Baz\u0131 do\u011fal dil sorgular\u0131 i\u00e7in do\u011fru SQL \u00f6rnekleri sunmak, LLM'in \u00f6\u011frenme yetene\u011fini art\u0131rabilir ve daha tutarl\u0131 sonu\u00e7lar \u00fcretmesini sa\u011flayabilir.<\/li>\n<\/ul>\n<p>LLM bu bilgileri kullanarak, do\u011fal dil sorgusunu yorumlar, uygun tablolar\u0131 ve kolonlar\u0131 se\u00e7er ve belirtilen g\u00fcvenlik kurallar\u0131na uygun bir SQL sorgusu olu\u015fturur. Bu s\u00fcre\u00e7te LLM'in ba\u011flam\u0131 anlama yetene\u011fi kritik rol oynar. \u00d6rne\u011fin, \"ge\u00e7en ay\" ifadesini <code>created_date<\/code> veya <code>due_date<\/code> kolonlar\u0131yla ili\u015fkilendirmesi gerekebilir.<\/p>\n<h3>Forge SQL G\u00fcvenlik Katmanlar\u0131 ve TiDB Entegrasyonu<\/h3>\n<p>Rovo'nun \u00fcretti\u011fi SQL sorgusu ne kadar iyi olursa olsun, veri taban\u0131 seviyesinde de sa\u011flam g\u00fcvenlik \u00f6nlemlerinin olmas\u0131 zorunludur. Forge SQL ve alt\u0131nda yatan TiDB, bu konuda g\u00fc\u00e7l\u00fc yetenekler sunar:<\/p>\n<ul>\n<li><strong>Kimlik Do\u011frulama ve Yetkilendirme (Authentication & Authorization)<\/strong>: Forge uygulamalar\u0131, Atlassian kimlik do\u011frulama mekanizmalar\u0131yla entegre \u00e7al\u0131\u015f\u0131r. Forge SQL'e eri\u015fim, uygulaman\u0131n kendine \u00f6zel kimlik bilgileriyle yap\u0131l\u0131r ve bu, do\u011frudan kullan\u0131c\u0131 kimli\u011fiyle de\u011fil, uygulaman\u0131n yetkileriyle e\u015fle\u015fir. TiDB taraf\u0131nda, kullan\u0131c\u0131lar veya roller i\u00e7in \u00f6zel izinler tan\u0131mlanabilir, b\u00f6ylece her Forge uygulamas\u0131n\u0131n veya hatta her Forge kullan\u0131c\u0131s\u0131n\u0131n sadece belirli tablolar\u0131 veya kolonlar\u0131 okuyabilmesi sa\u011flan\u0131r (Role-Based Access Control - RBAC).<\/li>\n<li><strong>Veri \u015eifreleme<\/strong>: TiDB, verileri hem depoland\u0131\u011f\u0131 yerde (at rest) hem de iletilirken (in transit) \u015fifreleyerek veri g\u00fcvenli\u011fini art\u0131r\u0131r. Bu, hassas verilerin yetkisiz eri\u015fime kar\u015f\u0131 korunmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Giri\u015f Do\u011frulama ve SQL Enjeksiyonunu \u00d6nleme<\/strong>: Forge backend'de \u00fcretilen SQL sorgusu, TiDB'ye g\u00f6nderilmeden \u00f6nce parametreli sorgulara d\u00f6n\u00fc\u015ft\u00fcr\u00fclmelidir. Bu, LLM'in yanl\u0131\u015fl\u0131kla veya kas\u0131tl\u0131 olarak enjeksiyon denemelerini veri taban\u0131na ula\u015fmadan engellemenin en etkili yoludur. Do\u011frudan string birle\u015ftirme yerine, parametre ba\u011flama teknikleri kullan\u0131lmal\u0131d\u0131r.<\/li>\n<li><strong>Audit Loglar\u0131 (Denetim Kay\u0131tlar\u0131)<\/strong>: TiDB, veri taban\u0131nda yap\u0131lan t\u00fcm sorgular\u0131 ve de\u011fi\u015fiklikleri kaydedebilir. Bu denetim kay\u0131tlar\u0131, olas\u0131 g\u00fcvenlik ihlallerini tespit etmek ve uyumluluk gereksinimlerini kar\u015f\u0131lamak i\u00e7in vazge\u00e7ilmezdir.<\/li>\n<\/ul>\n<p>Bu katmanl\u0131 g\u00fcvenlik yakla\u015f\u0131m\u0131, do\u011fal dil SQL'in g\u00fcc\u00fcn\u00fc kullan\u0131rken, kurumsal d\u00fczeyde veri g\u00fcvenli\u011finden \u00f6d\u00fcn vermemizi sa\u011flar. Forge'un sa\u011flad\u0131\u011f\u0131 serverless yap\u0131 ve TiDB'nin da\u011f\u0131t\u0131k mimarisi, bu g\u00fcvenlik \u00f6nlemlerini performans d\u00fc\u015f\u00fc\u015f\u00fc olmadan uygulamak i\u00e7in ideal bir ortam sunar.<\/p>\n<h2>Jira Proje Verilerini Do\u011fal Dil ile Sorgulamak M\u00fcmk\u00fcn M\u00fc? Uygulamal\u0131 Senaryo<\/h2>\n<p>Teorik bilgiler harika, ancak as\u0131l \u00f6nemli olan bu teknolojilerin ger\u00e7ek d\u00fcnyada nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmektir. Bu b\u00f6l\u00fcmde, Jira proje verilerini y\u00f6neten bir senaryo \u00fczerinden, do\u011fal dil SQL uygulamas\u0131n\u0131 Forge \u00fczerinde ad\u0131m ad\u0131m nas\u0131l geli\u015ftirece\u011fimizi inceleyece\u011fiz. Bu senaryo, bir proje y\u00f6neticisinin \"ge\u00e7en ay en \u00e7ok geciken 5 g\u00f6rev hangisi?\" gibi bir soruya an\u0131nda cevap alabilmesini sa\u011flamay\u0131 hedefliyor.<\/p>\n<h3>Senaryo Tan\u0131m\u0131 ve Veri Modeli<\/h3>\n<p>Proje y\u00f6netimi ba\u011flam\u0131nda, ekiplerin ve y\u00f6neticilerin g\u00f6revlerin durumu, gecikmeler ve tamamlanma s\u00fcreleri hakk\u0131nda h\u0131zl\u0131 bilgilere ihtiyac\u0131 vard\u0131r. Geleneksel olarak, bu t\u00fcr raporlar\u0131 almak i\u00e7in veri taban\u0131 y\u00f6neticilerinden veya geli\u015ftiricilerden \u00f6zel sorgular yazmalar\u0131 istenir. Bizim senaryomuzda, bu s\u00fcreci otomatikle\u015ftirece\u011fiz.<\/p>\n<p>\u00d6rnek veri modelimiz, basitle\u015ftirilmi\u015f bir g\u00f6rev tablosunu i\u00e7erecek:<\/p>\n<pre><code>CREATE TABLE tasks (\n    task_id INT PRIMARY KEY AUTO_INCREMENT,\n    project_id INT,\n    summary VARCHAR(255) NOT NULL,\n    status VARCHAR(50) NOT NULL,\n    due_date DATE,\n        completed_date DATE,\n    assigned_to VARCHAR(100),\n    created_date DATE DEFAULT CURRENT_DATE\n);<\/pre>\n<p><\/code><\/p>\n<p>Bu tabloda, <code>task_id<\/code>, <code>project_id<\/code>, <code>summary<\/code> (g\u00f6rev \u00f6zeti), <code>status<\/code> (Durum: A\u00e7\u0131k, Devam Ediyor, Tamamland\u0131, Gecikti), <code>due_date<\/code> (biti\u015f tarihi), <code>completed_date<\/code> (tamamlanma tarihi), <code>assigned_to<\/code> (atand\u0131\u011f\u0131 ki\u015fi) ve <code>created_date<\/code> (olu\u015fturulma tarihi) gibi kolonlar bulunmaktad\u0131r. <code>status=&#039;Gecikti&#039;<\/code> ve <code>completed_date > due_date<\/code> kombinasyonlar\u0131 gecikmi\u015f g\u00f6revleri ifade edebilir.<\/p>\n<h3>Forge Uygulamas\u0131 Geli\u015ftirme Ad\u0131mlar\u0131<\/h3>\n<h4>Ad\u0131m 1: Forge Uygulamas\u0131 Kurulumu ve UI Tasar\u0131m\u0131<\/h4>\n<p>\u0130lk olarak, basit bir Forge uygulamas\u0131 olu\u015ftural\u0131m. Bu uygulama, kullan\u0131c\u0131n\u0131n do\u011fal dil sorgusunu girebilece\u011fi bir metin alan\u0131 ve sonu\u00e7lar\u0131 g\u00f6r\u00fcnt\u00fcleyecek bir alan i\u00e7erecek.<\/p>\n<p>Forge CLI ile yeni bir uygulama olu\u015fturun:<\/p>\n<pre><code>forge create\n# Uygulama ad\u0131: forge-nl-sql\n# \u015eablon: UI Kit (custom UI)<\/pre>\n<p><\/code><\/p>\n<p><code>manifest.yml<\/code> dosyam\u0131zda gerekli izinleri tan\u0131mlamal\u0131y\u0131z. \u00d6zellikle d\u0131\u015f API \u00e7a\u011fr\u0131lar\u0131 i\u00e7in <code>external:fetch:url<\/code> ve Forge SQL i\u00e7in <code>forge:sql<\/code> izinlerine ihtiyac\u0131m\u0131z olacak.<\/p>\n<pre><code># manifest.yml\nmodules:\n  jira:issuePanel:\n    - key: nl-sql-panel\n      resource: main-resource\n      resolver:\n        function: resolver\n      context: issue\n      title: Do\u011fal Dil SQL Sorgu\nresources:\n  - key: main-resource\n    path: static\/hello-world\/build\npermissions:\n  scopes:\n    - 'read:jira-work' # Jira verileriyle etkile\u015fim i\u00e7in (genel ba\u011flamda)\n  external:\n    fetch:\n      - 'https:\/\/rovo.example.com\/*' # Varsay\u0131msal Rovo API URL'i\n  forge:sql:\n    - default<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi UI k\u0131sm\u0131n\u0131 olu\u015ftural\u0131m. <code>static\/hello-world\/src\/App.jsx<\/code> dosyas\u0131n\u0131 g\u00fcncelleyelim:<\/p>\n<pre><code>import React, { useState } from 'react';\nimport { Button, Textfield, Table, Tbody, Tr, Td, Th, Thead, Box, xcss } from '@atlaskit\/primitives';\nimport { invoke } from '@forge\/bridge';\n\nconst tableXcss = xcss({\n  marginTop: 'space.200',\n  width: '100%',\n});\n\nfunction App() {\n  const [naturalLanguageQuery, setNaturalLanguageQuery] = useState('');\n  const [sqlResult, setSqlResult] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState(null);\n\n  const handleQuerySubmit = async () => {\n    setLoading(true);\n    setError(null);\n    try {\n      const response = await invoke('executeNaturalLanguageQuery', { query: naturalLanguageQuery });\n      setSqlResult(response);\n    } catch (err) {\n      console.error(err);\n      setError('Sorgu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken bir hata olu\u015ftu: ' + err.message);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  return (\n    <Box padding=\"space.200\">\n      <h3>Do\u011fal Dil SQL Sorgula<\/h3>\n      <Textfield\n        label=\"Sorgunuzu do\u011fal dilde girin\"\n        placeholder=\"\u00d6rn: Ge\u00e7en ay en \u00e7ok geciken 5 g\u00f6rev hangisi?\"\n        value={naturalLanguageQuery}\n        onChange={(e) => setNaturalLanguageQuery(e.target.value)}\n        width=\"large\"\n      \/>\n      <Button appearance=\"primary\" onClick={handleQuerySubmit} isDisabled={loading}>\n        {loading ? 'Sorgulan\u0131yor...' : 'Sorguyu \u00c7al\u0131\u015ft\u0131r'}\n      <\/Button>\n\n      {error && (\n        <Box xcss={xcss({ color: 'color.text.danger', marginTop: 'space.200' })}>\n          <p>{error}<\/p>\n        <\/Box>\n      )}\n\n      {sqlResult && sqlResult.length > 0 && (\n        <Table xcss={tableXcss}>\n          <Thead>\n            <Tr>\n              {Object.keys(sqlResult[0]).map((key) => (\n                <Th key={key}>{key}<\/Th>\n              ))}\n            <\/Tr>\n          <\/Thead>\n          <Tbody>\n            {sqlResult.map((row, rowIndex) => (\n              <Tr key={rowIndex}>\n                {Object.values(row).map((value, colIndex) => (\n                  <Td key={colIndex}>{value !== null ? value.toString() : 'NULL'}<\/Td>\n                ))}\n              <\/Tr>\n            ))}\n          <\/Tbody>\n        <\/Table>\n      )}\n      {sqlResult && sqlResult.length === 0 && !loading && (\n        <Box xcss={xcss({ marginTop: 'space.200' })}>\n          <p>Sorgunuzla e\u015fle\u015fen veri bulunamad\u0131.<\/p>\n        <\/Box>\n      )}\n    <\/Box>\n  );\n}\n\nexport default App;<\/pre>\n<p><\/code><\/p>\n<h4>Ad\u0131m 2: Rovo Entegrasyonu ve SQL \u00dcretimi<\/h4>\n<p>\u015eimdi Forge backend k\u0131sm\u0131n\u0131 (<code>src\/index.js<\/code>) olu\u015ftural\u0131m. Bu k\u0131s\u0131m, do\u011fal dil sorgusunu Rovo'ya g\u00f6nderecek, d\u00f6nen SQL'i do\u011frulayacak ve Forge SQL \u00fczerinde \u00e7al\u0131\u015ft\u0131racak. Rovo ile etkile\u015fim, harici bir API \u00e7a\u011fr\u0131s\u0131 \u015feklinde olacakt\u0131r. G\u00fcvenlik nedeniyle, bu \u00e7a\u011fr\u0131da API anahtar\u0131 gibi hassas bilgileri do\u011frudan kodda de\u011fil, Forge ortam de\u011fi\u015fkenlerinde tutmak \u00f6nemlidir.<\/p>\n<pre><code>import ForgeApi, { route, Route } from '@forge\/api';\nimport { storage, fetch } from '@forge\/api';\n\nconst ROVO_API_URL = 'https:\/\/rovo.example.com\/sql-generator'; \/\/ Varsay\u0131msal Rovo API u\u00e7 noktas\u0131\nconst ROVO_API_KEY = await storage.getSecret('ROVO_API_KEY'); \/\/ Forge Secret Storage'dan al\u0131n\u0131r\n\nconst TASK_SCHEMA = <code>CREATE TABLE tasks (\n    task_id INT PRIMARY KEY,\n    project_id INT,\n    summary VARCHAR(255),\n    status VARCHAR(50),\n    due_date DATE,\n    completed_date DATE,\n    assigned_to VARCHAR(100),\n    created_date DATE\n);\n-- Mevcut tablolar: tasks\n-- Notlar:\n--   - &#039;status&#039; kolonunda &#039;Gecikti&#039; de\u011feri, g\u00f6revin tamamlanma tarihinin biti\u015f tarihini ge\u00e7ti\u011fi anlam\u0131na gelir.\n--   - &#039;due_date&#039; g\u00f6revin biti\u015f tarihidir.\n--   - &#039;completed_date&#039; g\u00f6revin tamamland\u0131\u011f\u0131 tarihtir.\n--   - &#039;created_date&#039; g\u00f6revin olu\u015fturulma tarihidir.<\/code>;\n\nconst SECURITY_RULES = <code>-- G\u00fcvenlik Kurallar\u0131:\n-- Sadece SELECT sorgular\u0131na izin verilir. INSERT, UPDATE, DELETE yasakt\u0131r.\n-- Sadece &#039;tasks&#039; tablosuna eri\u015fime izin verilir.\n-- Sorgu sonu\u00e7lar\u0131 100 sat\u0131rla s\u0131n\u0131rland\u0131r\u0131lmal\u0131d\u0131r (LIMIT 100).\n-- Hassas veri kolonlar\u0131 (\u00f6rne\u011fin &#039;assigned_to&#039; gibi ki\u015fisel bilgiler) direkt olarak d\u00f6nd\u00fcr\u00fclmemelidir.<\/code>;\n\nForgeApi.onEvent('executeNaturalLanguageQuery', async (event, payload) => {\n  const { query } = payload;\n  if (!query) {\n    throw new Error('Do\u011fal dil sorgusu bo\u015f olamaz.');\n  }\n\n  try {\n    \/\/ 1. Rovo'ya do\u011fal dil sorgusunu g\u00f6nder ve SQL al\n    const rovoResponse = await fetch(ROVO_API_URL, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application\/json',\n        'Authorization': <code>Bearer ${ROVO_API_KEY}<\/code>,\n      },\n      body: JSON.stringify({\n        natural_language_query: query,\n        schema_context: TASK_SCHEMA,\n        security_constraints: SECURITY_RULES,\n        dialect: 'TiDB', \/\/ veya MySQL\n      }),\n    });\n\n    if (!rovoResponse.ok) {\n      const errorData = await rovoResponse.json();\n      throw new Error(<code>Rovo API hatas\u0131: ${rovoResponse.status} - ${errorData.message || rovoResponse.statusText}<\/code>);\n    }\n\n    const { generated_sql } = await rovoResponse.json();\n    console.log('Rovo taraf\u0131ndan \u00fcretilen SQL:', generated_sql);\n\n    \/\/ 2. \u00dcretilen SQL'i G\u00fcvenlik Do\u011frulamas\u0131ndan Ge\u00e7ir\n    \/\/ Bu k\u0131s\u0131m kritik! LLM taraf\u0131ndan \u00fcretilen SQL'i asla do\u011frudan \u00e7al\u0131\u015ft\u0131rmay\u0131n.\n    \/\/ Ger\u00e7ek bir uygulamada, burada kapsaml\u0131 bir regex analizi, AST parsing veya\n    \/\/ bir izin listesine g\u00f6re do\u011frulama yap\u0131lmal\u0131d\u0131r.\n    \/\/ \u00d6rnek: Sadece SELECT komutlar\u0131na izin ver. DELETE, UPDATE, INSERT engelle.\n    \/\/ \u0130zin verilen tablolar\u0131 kontrol et.\n    if (!generated_sql.trim().toLowerCase().startsWith('select')) {\n      throw new Error('Sadece SELECT sorgular\u0131na izin verilmektedir.');\n    }\n    if (!generated_sql.toLowerCase().includes('limit')) {\n        generated_sql += ' LIMIT 100'; \/\/ G\u00fcvenlik amac\u0131yla limit ekle\n    }\n    \/\/ Daha karma\u015f\u0131k do\u011frulama kurallar\u0131 buraya eklenecektir.\n\n    \/\/ 3. Forge SQL ile Sorguyu \u00c7al\u0131\u015ft\u0131r\n    const sqlClient = ForgeApi.ForgeSQL('default'); \/\/ 'default' varsay\u0131lan veri kayna\u011f\u0131n\u0131 kullan\u0131r\n    const { rows } = await sqlClient.query(generated_sql); \/\/ Bu metod parametreli sorgu deste\u011fi sunar\n\n    return rows;\n\n  } catch (error) {\n    console.error('Do\u011fal dil sorgusu i\u015flenirken hata:', error);\n    throw new ForgeApi.CustomError(error.message, 500); \/\/ UI'ya daha anlaml\u0131 bir hata d\u00f6nd\u00fcr\n  }\n});<\/pre>\n<p><\/code><\/p>\n<blockquote><p>\n  Uzman \u0130pucu: Rovo veya benzeri LLM servislerinden gelen SQL sorgular\u0131n\u0131 asla do\u011frudan veri taban\u0131nda \u00e7al\u0131\u015ft\u0131rmay\u0131n. G\u00fc\u00e7l\u00fc bir g\u00fcvenlik katman\u0131 ekleyerek, sadece izin verilen komutlar\u0131 ve tablolar\u0131 i\u00e7eren sorgular\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flay\u0131n. Bu, SQL enjeksiyonu riskini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.\n<\/p><\/blockquote>\n<h4>Ad\u0131m 3: Forge SQL (TiDB) \u0130le G\u00fcvenli Veri Eri\u015fimi<\/h4>\n<p>Yukar\u0131daki kod blo\u011funda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, Forge SQL API'si (<code>ForgeApi.ForgeSQL('default')<\/code>) kullan\u0131larak TiDB'ye eri\u015fim sa\u011flan\u0131r. Forge SQL, SQL enjeksiyonlar\u0131na kar\u015f\u0131 dahili korumalar sunar, ancak LLM'den gelen \u00e7\u0131kt\u0131n\u0131n \u00f6nceden do\u011frulanmas\u0131 her zaman en iyi pratiktir.<\/p>\n<p>Veri taban\u0131 \u015femas\u0131 ve g\u00fcvenlik kurallar\u0131, LLM'e g\u00f6nderilen prompt'ta a\u00e7\u0131k\u00e7a belirtilir. Bu, LLM'in g\u00fcvenli ve do\u011fru SQL \u00fcretmesine yard\u0131mc\u0131 olur. \u00d6rne\u011fin, <code>SECURITY_RULES<\/code> k\u0131sm\u0131nda \"Sadece SELECT sorgular\u0131na izin verilir\" gibi kurallar, LLM'in bir <code>DELETE<\/code> veya <code>UPDATE<\/code> komutu \u00fcretmesini engellemeye \u00e7al\u0131\u015f\u0131r. Ancak, LLM'lerin hala hall\u00fcsinasyon yapabilece\u011fi veya istenmeyen \u00e7\u0131kt\u0131lar \u00fcretebilece\u011fi unutulmamal\u0131d\u0131r, bu y\u00fczden backend'deki do\u011frulama ad\u0131m\u0131 vazge\u00e7ilmezdir.<\/p>\n<p>Bu ad\u0131mlar, Jira proje verilerini do\u011fal dil ile sorgulamak i\u00e7in sa\u011flam bir temel olu\u015fturur. Kullan\u0131c\u0131lar, teknik detaylarla bo\u011fu\u015fmadan an\u0131nda verilere eri\u015febilirken, geli\u015ftiriciler de g\u00fcvenlikten ve performansdan \u00f6d\u00fcn vermez.<\/p>\n<h2>Do\u011fal Dil SQL Uygulamalar\u0131nda G\u00fcvenlik ve Performans Nas\u0131l Sa\u011flan\u0131r?<\/h2>\n<p>Do\u011fal dil SQL uygulamalar\u0131n\u0131n ba\u015far\u0131s\u0131, sadece kullan\u0131c\u0131 dostu aray\u00fczleriyle de\u011fil, ayn\u0131 zamanda temel g\u00fcvenlik ve performans yetenekleriyle de \u00f6l\u00e7\u00fcl\u00fcr. Bu t\u00fcr sistemlerde, \u00f6zellikle hassas kurumsal verilere eri\u015fim s\u00f6z konusu oldu\u011funda, g\u00fcvenli\u011fi sa\u011flamak mutlak bir zorunluluktur. Ayn\u0131 \u015fekilde, kullan\u0131c\u0131lar\u0131n an\u0131nda yan\u0131t bekledi\u011fi modern uygulamalarda performans, kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan kritik bir fakt\u00f6rd\u00fcr. Bu b\u00f6l\u00fcmde, Forge, Rovo ve TiDB \u00fc\u00e7l\u00fcs\u00fcyle bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelebilece\u011fimizi detayland\u0131raca\u011f\u0131z.<\/p>\n<h3>SQL Enjeksiyonunu \u00d6nleme ve Veri Maskeleme<\/h3>\n<p>B\u00fcy\u00fck Dil Modelleri (LLM'ler) taraf\u0131ndan \u00fcretilen SQL sorgular\u0131, potansiyel g\u00fcvenlik riskleri ta\u015f\u0131yabilir. LLM'in k\u00f6t\u00fc niyetli girdileri yanl\u0131\u015f yorumlayarak veya yanl\u0131\u015fl\u0131kla hatal\u0131 bir sorgu \u00fcreterek SQL enjeksiyonuna yol a\u00e7mas\u0131 m\u00fcmk\u00fcnd\u00fcr. Bu riski minimize etmek i\u00e7in \u00e7ok katmanl\u0131 bir savunma stratejisi izlemeliyiz:<\/p>\n<ol>\n<li><strong>LLM \u00c7\u0131kt\u0131s\u0131n\u0131n Kapsaml\u0131 Do\u011frulanmas\u0131<\/strong>: Rovo'dan d\u00f6nen her SQL sorgusu, veri taban\u0131na g\u00f6nderilmeden \u00f6nce Forge backend'de kapsaml\u0131 bir analizden ge\u00e7irilmelidir. Bu do\u011frulama \u015funlar\u0131 i\u00e7erebilir:\n<ul>\n<li><strong>Komut Kontrol\u00fc<\/strong>: Yaln\u0131zca <code>SELECT<\/code> komutlar\u0131n\u0131n \u00e7al\u0131\u015fmas\u0131na izin verin. <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code>, <code>DROP TABLE<\/code> gibi DML\/DDL komutlar\u0131n\u0131 kesinlikle engelleyin.<\/li>\n<li><strong>Tablo\/Kolon Eri\u015fim Kontrol\u00fc<\/strong>: Sorgunun yaln\u0131zca izin verilen tablolara ve kolonlara eri\u015fti\u011fini do\u011frulay\u0131n. \u00d6rne\u011fin, maa\u015f bilgilerini i\u00e7eren bir tabloya eri\u015fimini yasaklayabilirsiniz.<\/li>\n<li><strong>Anahtar Kelime Kara Listesi<\/strong>: Potansiyel olarak zararl\u0131 olabilecek anahtar kelimeleri (<code>UNION ALL<\/code>, <code>EXEC<\/code>, <code>XP_CMDSHELL<\/code>) i\u00e7eren sorgular\u0131 reddedin.<\/li>\n<li><strong>Sorgu Karma\u015f\u0131kl\u0131\u011f\u0131 Kontrol\u00fc<\/strong>: \u00c7ok uzun, fazla say\u0131da <code>JOIN<\/code> i\u00e7eren veya a\u015f\u0131r\u0131 alt sorgulu sorgular\u0131 reddederek hizmet reddi (DoS) sald\u0131r\u0131lar\u0131n\u0131 veya performans sorunlar\u0131n\u0131 \u00f6nleyin.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Parametreli Sorgular<\/strong>: En iyi g\u00fcvenlik uygulamas\u0131, LLM'in \u00fcretti\u011fi SQL'i do\u011frudan \u00e7al\u0131\u015ft\u0131rmak yerine, parametreli sorgular\u0131 kullanmakt\u0131r. Forge SQL API'sinin bu deste\u011fi varsa, kullan\u0131c\u0131 girdilerini (e\u011fer SQL'e do\u011frudan dahil ediliyorsa) parametre olarak ge\u00e7irin. Bu, kullan\u0131c\u0131 girdilerini SQL kodu olarak de\u011fil, veri olarak i\u015fler ve enjeksiyonlar\u0131 \u00f6nler.<\/li>\n<li><strong>Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (RBAC) ve En Az Ayr\u0131cal\u0131k Prensibi<\/strong>: TiDB'de, farkl\u0131 kullan\u0131c\u0131 veya uygulamalar i\u00e7in farkl\u0131 roller ve yetkiler tan\u0131mlay\u0131n. Forge uygulamas\u0131n\u0131n TiDB'ye eri\u015fmek i\u00e7in kulland\u0131\u011f\u0131 kullan\u0131c\u0131, sadece okuma yetkisine sahip olmal\u0131 ve sadece belirli tablolar \u00fczerinde \u00e7al\u0131\u015fabilmelidir. Bu, bir g\u00fcvenlik ihlali durumunda bile potansiyel zarar\u0131 s\u0131n\u0131rlar.<\/li>\n<li><strong>Veri Maskeleme ve \u015eifreleme<\/strong>: Hassas veri i\u00e7eren kolonlar i\u00e7in (\u00f6rne\u011fin e-posta, kimlik numaras\u0131), veri maskeleme uygulay\u0131n. Bu, verileri sorgulayan ki\u015filerin, tam de\u011ferleri g\u00f6rmek yerine maskelenmi\u015f versiyonlar\u0131n\u0131 (\u00f6rn: <code><strong><\/strong>*@example.com<\/code>) g\u00f6rmesini sa\u011flar. TiDB'nin veri \u015fifreleme \u00f6zellikleri, depolanan ve iletilen verilerin g\u00fcvenli\u011fini art\u0131r\u0131r.<\/li>\n<\/ol>\n<h3>Sorgu Optimizasyonu ve TiDB \u0130le \u00d6l\u00e7eklenebilirlik<\/h3>\n<p>LLM'ler, bazen insan bir analistin akl\u0131na gelmeyecek kadar karma\u015f\u0131k veya suboptimal SQL sorgular\u0131 \u00fcretebilir. Bu durum, b\u00fcy\u00fck veri k\u00fcmelerinde performans sorunlar\u0131na yol a\u00e7abilir. TiDB'nin da\u011f\u0131t\u0131k mimarisi ve Forge'un serverless yap\u0131s\u0131 bu zorluklar\u0131n \u00fcstesinden gelmek i\u00e7in \u00f6nemli avantajlar sunar:<\/p>\n<ol>\n<li><strong>LLM Prompt M\u00fchendisli\u011fi ile Optimize Sorgular<\/strong>: LLM'e g\u00f6nderilen prompt'ta, performans ipu\u00e7lar\u0131 (\u00f6rne\u011fin, \"join'leri minimize et\", \"index kullanmaya \u00e7al\u0131\u015f\") veya belirli bir tablo boyutu i\u00e7in optimum sorgu desenleri hakk\u0131nda bilgi verebiliriz.<\/li>\n<li><strong>TiDB'nin Da\u011f\u0131t\u0131k Yap\u0131s\u0131<\/strong>: TiDB, veriyi ve i\u015f y\u00fck\u00fcn\u00fc birden fazla sunucuya da\u011f\u0131tarak yatay \u00f6l\u00e7eklenebilirlik sa\u011flar. Sorgu yo\u011funlu\u011fu artt\u0131\u011f\u0131nda veya veri b\u00fcy\u00fcd\u00fc\u011f\u00fcnde, yeni d\u00fc\u011f\u00fcmler ekleyerek performans\u0131 kolayca art\u0131rabilirsiniz. Bu, geleneksel tek d\u00fc\u011f\u00fcml\u00fc veri tabanlar\u0131nda s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan performans darbo\u011fazlar\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/li>\n<li><strong>\u0130ndeksleme Stratejileri<\/strong>: TiDB'de do\u011fru indeksleri olu\u015fturmak, sorgu performans\u0131n\u0131 dramatik bir \u015fekilde art\u0131rabilir. LLM taraf\u0131ndan \u00fcretilen sorgu kal\u0131plar\u0131n\u0131 analiz ederek, en s\u0131k kullan\u0131lan kolonlar \u00fczerinde uygun indeksleri tan\u0131mlayabilir ve uygulayabiliriz.<\/li>\n<li><strong>Sorgu \u00d6nbellekleme (Caching)<\/strong>: S\u0131k tekrarlanan veya ayn\u0131 parametrelerle \u00e7al\u0131\u015ft\u0131r\u0131lan sorgular i\u00e7in bir \u00f6nbellekleme katman\u0131 eklemek, veri taban\u0131 y\u00fck\u00fcn\u00fc azalt\u0131r ve yan\u0131t s\u00fcrelerini h\u0131zland\u0131r\u0131r. Forge uygulamas\u0131nda basit bir \u00f6nbellek mekanizmas\u0131 veya TiDB'nin kendi \u00f6nbellekleme yetenekleri kullan\u0131labilir.<\/li>\n<li><strong>Sorgu Zaman A\u015f\u0131m\u0131<\/strong>: A\u015f\u0131r\u0131 kaynak t\u00fcketen sorgular\u0131n sistemi bloke etmesini \u00f6nlemek i\u00e7in, Forge backend'de veya TiDB'de sorgulara zaman a\u015f\u0131m\u0131 limitleri uygulay\u0131n. Uzun s\u00fcren sorgular\u0131 otomatik olarak sonland\u0131r\u0131n.<\/li>\n<\/ol>\n<blockquote><p>\n  Uzman \u0130pucu: Karma\u015f\u0131k do\u011fal dil sorgular\u0131nda performans sorunlar\u0131 ya\u015f\u0131yorsan\u0131z, LLM'den sadece SQL de\u011fil, ayn\u0131 zamanda \"EXPLAIN\" \u00e7\u0131kt\u0131s\u0131 gibi performans analizi bilgileri de isteyebilirsiniz. Bu, sorunlu sorgu k\u0131s\u0131mlar\u0131n\u0131 h\u0131zl\u0131ca tespit etmenize yard\u0131mc\u0131 olabilir.\n<\/p><\/blockquote>\n<h3>Mobil Uyumluluk ve Kullan\u0131c\u0131 Deneyimi<\/h3>\n<p>Atlassian Forge uygulamalar\u0131, genellikle Jira veya Confluence gibi web tabanl\u0131 aray\u00fczlerde \u00e7al\u0131\u015f\u0131r. Ancak, bu aray\u00fczlere mobil cihazlardan da eri\u015filebilir. Bu nedenle, Forge uygulamas\u0131n\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn mobil uyumlu olmas\u0131 kritik \u00f6nem ta\u015f\u0131r.<\/p>\n<ul>\n<li><strong>Atlassian Design System (ADS)<\/strong>: Forge UI Kit, Atlassian Design System'i temel al\u0131r. Bu sistem, varsay\u0131lan olarak mobil cihazlarda iyi g\u00f6r\u00fcnen ve \u00e7al\u0131\u015fan bile\u015fenler sunar. Bu bile\u015fenleri kullanarak, responsif bir tasar\u0131m elde edebilirsiniz.<\/li>\n<li><strong>Esnek Tasar\u0131m Yakla\u015f\u0131m\u0131<\/strong>: Metin alanlar\u0131, tablolar ve d\u00fc\u011fmeler gibi UI elemanlar\u0131n\u0131n farkl\u0131 ekran boyutlar\u0131na uyum sa\u011flamas\u0131 i\u00e7in esnek kutu modelleri (flexbox) veya \u0131zgara sistemleri (grid) kullan\u0131n.<\/li>\n<li><strong>Media Query \u00d6rnekleri<\/strong>: CSS media query'ler ile belirli ekran boyutlar\u0131na \u00f6zel stil ayarlamalar\u0131 yapabilirsiniz.\n<pre><code><style>\n\/* Varsay\u0131lan stil *\/\n.query-container {\n  padding: 20px;\n  width: 80%;\n  margin: 0 auto;\n}\n.result-table {\n  width: 100%;\n  overflow-x: auto; \/* K\u00fc\u00e7\u00fck ekranlarda tablonun yana kayd\u0131r\u0131labilir olmas\u0131n\u0131 sa\u011flar *\/\n  display: block;\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar i\u00e7in (\u00f6rne\u011fin telefonlar) *\/\n@media (max-width: 768px) {\n  .query-container {\n    width: 95%;\n    padding: 10px;\n  }\n  .result-table table {\n    min-width: 600px; \/* Tablo i\u00e7eri\u011finin okunabilir kalmas\u0131n\u0131 sa\u011flar *\/\n  }\n  .result-table th, .result-table td {\n    padding: 8px;\n    font-size: 0.9em;\n  }\n}\n<\/style><\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Basit ve Anla\u015f\u0131l\u0131r Aray\u00fcz<\/strong>: \u00d6zellikle mobil cihazlarda, do\u011fal dil sorgu alan\u0131n\u0131n sade ve kolay kullan\u0131labilir olmas\u0131 gerekir. A\u015f\u0131r\u0131 karma\u015f\u0131k aray\u00fczler, mobil kullan\u0131c\u0131lar i\u00e7in deneyimi k\u00f6t\u00fcle\u015ftirebilir.<\/li>\n<\/ul>\n<p>Bu g\u00fcvenlik ve performans stratejileri, Forge \u00fczerinde do\u011fal dil SQL uygulaman\u0131z\u0131n sadece g\u00fc\u00e7l\u00fc de\u011fil, ayn\u0131 zamanda g\u00fcvenilir ve h\u0131zl\u0131 olmas\u0131n\u0131 sa\u011flar. Do\u011fru mimari ve dikkatli uygulama ile, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n verilere eri\u015fimini d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<\/p>\n<h2>Dev \u015eirketler Do\u011fal Dil SQL'i Nas\u0131l Kullan\u0131yor? Bir Vaka \u0130ncelemesi<\/h2>\n<p>Do\u011fal dil SQL yetenekleri, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli kurumsal ortamlarda, veri eri\u015fimi ve analiz s\u00fcre\u00e7lerini radikal bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme potansiyeline sahiptir. \u015eimdi, hayali ama ger\u00e7ek\u00e7i bir senaryo \u00fczerinden, \u00e7okuluslu bir yaz\u0131l\u0131m \u015firketi olan \"GlobalTech\"in bu teknolojiyi Atlassian Forge platformunda nas\u0131l ba\u015far\u0131yla uygulad\u0131\u011f\u0131n\u0131 inceleyelim.<\/p>\n<h3>Vaka Tan\u0131m\u0131: GlobalTech'in Veri Eri\u015fim Sorunu<\/h3>\n<p>GlobalTech, d\u00fcnya genelinde binlerce \u00e7al\u0131\u015fana sahip, birden fazla \u00fcr\u00fcn geli\u015ftiren ve Jira, Confluence gibi Atlassian ara\u00e7lar\u0131n\u0131 yo\u011fun bir \u015fekilde kullanan bir \u015firkettir. \u015eirketin en b\u00fcy\u00fck sorunlar\u0131ndan biri, departmanlar aras\u0131 veri eri\u015fimindeki yava\u015fl\u0131kt\u0131. Pazarlama, sat\u0131\u015f, \u0130K ve operasyon ekipleri, g\u00fcnl\u00fck i\u015f ak\u0131\u015flar\u0131 i\u00e7inde s\u00fcrekli olarak belirli verilere (m\u00fc\u015fteri e\u011filimleri, proje performans\u0131, \u00e7al\u0131\u015fan metrikleri, sat\u0131\u015f raporlar\u0131 vb.) ihtiya\u00e7 duyuyordu. Ancak, bu verilere ula\u015fmak i\u00e7in ya \u00f6zel raporlar talep etmeleri ya da veri analistlerinin takvimine girmeleri gerekiyordu. Bu s\u00fcre\u00e7, genellikle g\u00fcnlerce hatta haftalarca s\u00fcrebiliyor, karar alma s\u00fcre\u00e7lerini yava\u015flat\u0131yor ve ekiplerin \u00e7evikli\u011fini k\u0131s\u0131tl\u0131yordu.<\/p>\n<p>IT departman\u0131, s\u00fcrekli artan raporlama talepleri alt\u0131nda eziliyor, mevcut ara\u00e7lar ise herkesin kolayca kullanabilece\u011fi esnekli\u011fi sunmuyordu. Bu durum, \"veri silolar\u0131\" sorununu tetikliyor, departmanlar kendi verilerine odaklan\u0131p b\u00fct\u00fcnsel bir g\u00f6r\u00fcn\u00fcm elde edemiyordu. GlobalTech, bu soruna bir \u00e7\u00f6z\u00fcm aray\u0131\u015f\u0131ndayd\u0131: Kullan\u0131c\u0131lar\u0131n SQL bilmeden, kendi do\u011fal dillerinde verilere ula\u015fabilece\u011fi, h\u0131zl\u0131 ve g\u00fcvenli bir platform.<\/p>\n<h3>\u00c7\u00f6z\u00fcm: Forge \u00dczerinde Rovo + TiDB Entegrasyonu<\/h3>\n<p>GlobalTech, Atlassian platformlar\u0131na zaten yat\u0131r\u0131m yapm\u0131\u015f oldu\u011fu i\u00e7in, mevcut ekosistemlerine entegre olabilecek bir \u00e7\u00f6z\u00fcm aramaya ba\u015flad\u0131. Atlassian Forge'un serverless yap\u0131s\u0131 ve g\u00fc\u00e7l\u00fc g\u00fcvenlik \u00f6zellikleri dikkatlerini \u00e7ekti. \u015eirket, Forge \u00fczerinde \"Insight Navigator\" ad\u0131n\u0131 verdikleri bir uygulama geli\u015ftirmeye karar verdi. Bu uygulama, kullan\u0131c\u0131lar\u0131n do\u011fal dil sorgular\u0131n\u0131 kabul edip, veri taban\u0131ndan ilgili bilgileri \u00e7ekerek do\u011frudan Jira veya Confluence sayfalar\u0131nda g\u00f6sterecekti.<\/p>\n<ol>\n<li><strong>Mimari Kurulumu<\/strong>:\n<ul>\n<li><strong>Veri Ambar\u0131<\/strong>: GlobalTech, t\u00fcm operasyonel veri tabanlar\u0131ndan (CRM, ERP, Jira, Confluence) gelen konsolide verileri TiDB tabanl\u0131 bir veri ambar\u0131nda toplad\u0131. TiDB'nin da\u011f\u0131t\u0131k mimarisi, b\u00fcy\u00fck ve s\u00fcrekli b\u00fcy\u00fcyen veri hacmini sorunsuz bir \u015fekilde y\u00f6netmelerini sa\u011flad\u0131.<\/li>\n<li><strong>Forge Uygulamas\u0131 (Insight Navigator)<\/strong>: Forge \u00fczerinde custom UI ile bir Jira Issue Panel ve Confluence Macro geli\u015ftirildi. Bu aray\u00fczler, kullan\u0131c\u0131lar\u0131n do\u011fal dil sorgular\u0131n\u0131 girmesi i\u00e7in basit bir metin alan\u0131 sa\u011flad\u0131.<\/li>\n<li><strong>Rovo (LLM) Entegrasyonu<\/strong>: Forge backend'i, kullan\u0131c\u0131 sorgular\u0131n\u0131 ve veri ambar\u0131 \u015femas\u0131n\u0131n kritik b\u00f6l\u00fcmlerini (g\u00fcvenlik kurallar\u0131yla birlikte) Rovo'ya g\u00f6nderdi. Rovo, bu bilgileri analiz ederek optimize edilmi\u015f ve g\u00fcvenli bir SQL sorgusu \u00fcretti. GlobalTech, Rovo'yu \u015firket i\u00e7i veri terminolojisi ve i\u015f kurallar\u0131 \u00fczerinde ek olarak e\u011fitti.<\/li>\n<li><strong>G\u00fcvenlik Katman\u0131<\/strong>: Rovo'dan d\u00f6nen her SQL sorgusu, Forge backend'de geli\u015ftirilen \u00f6zel bir \"SQL G\u00fcvenlik ve Do\u011frulama\" mod\u00fcl\u00fcnden ge\u00e7ti. Bu mod\u00fcl, yaln\u0131zca <code>SELECT<\/code> sorgular\u0131na izin verdi, yetkisiz tablolara eri\u015fimi engelledi ve potansiyel SQL enjeksiyonlar\u0131na kar\u015f\u0131 koruma sa\u011flad\u0131.<\/li>\n<li><strong>Forge SQL Ba\u011flant\u0131s\u0131<\/strong>: Do\u011frulanm\u0131\u015f SQL sorgular\u0131, Forge SQL API arac\u0131l\u0131\u011f\u0131yla TiDB veri ambar\u0131na g\u00f6nderildi. TiDB'deki RBAC (Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc) mekanizmalar\u0131, farkl\u0131 departmanlardan gelen kullan\u0131c\u0131lar\u0131n sadece kendilerine ait verilere eri\u015fmesini garanti alt\u0131na ald\u0131.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Uygulama Senaryolar\u0131 ve Faydalar\u0131<\/strong>:\n<ul>\n<li><strong>Pazarlama Departman\u0131<\/strong>: \"Ge\u00e7en \u00e7eyrekte hangi pazarlama kampanyas\u0131 en y\u00fcksek d\u00f6n\u00fc\u015f\u00fcm\u00fc sa\u011flad\u0131?\" veya \"En \u00e7ok etkile\u015fim alan blog yaz\u0131lar\u0131m\u0131z\u0131n ilk 5'i hangisi?\" gibi sorulara an\u0131nda yan\u0131tlar alarak kampanya optimizasyonunu h\u0131zland\u0131rd\u0131.<\/li>\n<li><strong>Proje Y\u00f6netimi<\/strong>: \"X projesindeki gecikmi\u015f g\u00f6revlerin ortalama s\u00fcresi nedir?\" veya \"Y ekibinin son 3 ayda tamamlad\u0131\u011f\u0131 g\u00f6rev say\u0131s\u0131 nedir?\" gibi sorularla proje performans\u0131n\u0131 yak\u0131ndan takip etti, darbo\u011fazlar\u0131 erken tespit etti.<\/li>\n<li><strong>\u0130nsan Kaynaklar\u0131<\/strong>: \"Ge\u00e7en y\u0131l en y\u00fcksek \u00e7al\u0131\u015fan memnuniyetine sahip departmanlar hangileriydi?\" veya \"Yeni i\u015fe ba\u015flayanlar\u0131n ilk 6 ay i\u00e7indeki performans skorlar\u0131 nas\u0131l?\" gibi sorularla insan kaynaklar\u0131 stratejilerini daha veri odakl\u0131 hale getirdi. (Hassas \u0130K verileri i\u00e7in veri maskeleme kullan\u0131ld\u0131).<\/li>\n<li><strong>Sat\u0131\u015f Ekipleri<\/strong>: \"B\u00f6lge Z'deki en b\u00fcy\u00fck 10 m\u00fc\u015fterimiz hangisi?\" veya \"Son 2 haftada en \u00e7ok satan \u00fcr\u00fcnlerimiz nelerdir?\" sorular\u0131yla sat\u0131\u015f stratejilerini an\u0131nda ayarlad\u0131.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Ba\u015far\u0131lar ve Kazan\u0131lan Deneyimler<\/h3>\n<p>GlobalTech'in Insight Navigator uygulamas\u0131, beklentilerin \u00fczerinde bir ba\u015far\u0131 elde etti:<\/p>\n<ul>\n<li><strong>Veri Eri\u015fimi Demokrasisi<\/strong>: Binlerce \u00e7al\u0131\u015fan, teknik bilgiye ihtiya\u00e7 duymadan verilere kendi ba\u015flar\u0131na eri\u015febilir hale geldi. Bu, IT departman\u0131n\u0131n raporlama y\u00fck\u00fcn\u00fc %60 oran\u0131nda azaltt\u0131.<\/li>\n<li><strong>H\u0131zland\u0131r\u0131lm\u0131\u015f Karar Alma<\/strong>: Anl\u0131k i\u00e7g\u00f6r\u00fcler sayesinde, ekipler daha h\u0131zl\u0131 ve daha bilin\u00e7li kararlar alabildi. Gecikmeler %25 oran\u0131nda azald\u0131.<\/li>\n<li><strong>Art\u0131r\u0131lm\u0131\u015f Verimlilik<\/strong>: \u00c7al\u0131\u015fanlar, veri talepleri i\u00e7in bekleme s\u00fcreleri azald\u0131\u011f\u0131 i\u00e7in kendi ana g\u00f6revlerine daha fazla odaklanabildi.<\/li>\n<li><strong>Geli\u015fmi\u015f G\u00fcvenlik ve Uyum<\/strong>: Kat\u0131 do\u011frulama kurallar\u0131 ve TiDB'nin RBAC yetenekleri sayesinde, veri g\u00fcvenli\u011finden \u00f6d\u00fcn verilmedi ve GDPR\/KVKK gibi uyumluluk standartlar\u0131 korundu.<\/li>\n<\/ul>\n<p>Bu vaka analizi, do\u011fal dil SQL'in, Rovo ve TiDB gibi modern teknolojilerle Atlassian Forge \u00fczerinde nas\u0131l kurumsal d\u00fczeyde bir de\u011fer yaratabilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. GlobalTech'in deneyimi, veri eri\u015fimini basitle\u015ftirmenin ve g\u00fcvenli\u011fi elden b\u0131rakmaman\u0131n m\u00fcmk\u00fcn oldu\u011funu kan\u0131tlam\u0131\u015ft\u0131r.<\/p>\n<h2>Gelece\u011fin Veri Eri\u015fimi: Forge, Rovo ve TiDB ile S\u0131n\u0131rlar\u0131 Zorlamak<\/h2>\n<p>Atlassian Forge platformunda do\u011fal dil SQL yeteneklerini Rovo (LLM) ve Forge SQL (TiDB) ile birle\u015ftirerek, veri eri\u015fimi ve analizi konusunda \u00f6nemli bir d\u00f6n\u00fc\u015f\u00fcm potansiyeline sahip oldu\u011fumuzu g\u00f6rd\u00fck. Bu entegrasyon, yaln\u0131zca teknik bir ba\u015far\u0131 de\u011fil, ayn\u0131 zamanda i\u015f s\u00fcre\u00e7lerini demokratikle\u015ftiren ve karar alma h\u0131z\u0131n\u0131 art\u0131ran stratejik bir ad\u0131md\u0131r.<\/p>\n<p>Do\u011fal dil SQL, veri taban\u0131 sorgulama s\u00fcre\u00e7lerini, teknik uzmanl\u0131\u011f\u0131 olmayan son kullan\u0131c\u0131lar i\u00e7in bile eri\u015filebilir hale getirerek veri analizi d\u00fcnyas\u0131n\u0131n kap\u0131lar\u0131n\u0131 ard\u0131na kadar a\u00e7\u0131yor. \"Ge\u00e7en \u00e7eyrekte en \u00e7ok satan \u00fcr\u00fcnler hangileri?\" gibi basit bir soruyla karma\u015f\u0131k SQL sorgular\u0131 \u00fcretme yetene\u011fi, ekiplerin veri temelli kararlar almas\u0131n\u0131 h\u0131zland\u0131r\u0131yor. Atlassian Forge'un serverless yap\u0131s\u0131 ve Atlassian ekosistemiyle derin entegrasyonu, bu t\u00fcr uygulamalar\u0131n geli\u015ftirilmesini kolayla\u015ft\u0131r\u0131rken, kurumsal d\u00fczeyde g\u00fcvenlik ve \u00f6l\u00e7eklenebilirlik sa\u011fl\u0131yor. Rovo gibi b\u00fcy\u00fck dil modelleri, do\u011fal dil ile SQL aras\u0131ndaki k\u00f6pr\u00fcy\u00fc kurarak bu s\u00fcrecin merkezinde yer al\u0131yor. TiDB'nin da\u011f\u0131t\u0131k mimarisi ise, b\u00fcy\u00fck veri hacimlerini ve yo\u011fun sorgu y\u00fcklerini performans d\u00fc\u015f\u00fc\u015f\u00fc olmadan y\u00f6netme yetene\u011fi sunarak sistemin sa\u011flaml\u0131\u011f\u0131n\u0131 garanti alt\u0131na al\u0131yor.<\/p>\n<p>Ancak, bu g\u00fc\u00e7l\u00fc teknolojiyi uygularken g\u00fcvenlik ve performans\u0131n da \u00f6n planda tutulmas\u0131 gerekti\u011fini unutmamal\u0131y\u0131z. LLM \u00e7\u0131kt\u0131lar\u0131n\u0131n kapsaml\u0131 bir \u015fekilde do\u011frulanmas\u0131, SQL enjeksiyonlar\u0131na kar\u015f\u0131 koruma, rol tabanl\u0131 eri\u015fim kontrol\u00fc ve sorgu optimizasyonlar\u0131 gibi \u00f6nlemler, sistemin g\u00fcvenilirli\u011fini ve verimlili\u011fini sa\u011flamak i\u00e7in hayati \u00f6neme sahiptir. Gelecekte, LLM'lerin daha da geli\u015fmesiyle birlikte, do\u011fal dil SQL sistemleri daha karma\u015f\u0131k analizler yapabilecek, daha hassas sonu\u00e7lar \u00fcretebilecek ve hatta veri g\u00f6rselle\u015ftirmelerini otomatik olarak olu\u015fturabilecek yeteneklere sahip olabilirler. Bu, Atlassian kullan\u0131c\u0131lar\u0131n\u0131n, Jira ve Confluence i\u00e7indeki verilerinden daha derinle\u015fimli i\u00e7g\u00f6r\u00fcler elde etmelerini sa\u011flayarak i\u015f birli\u011fini ve verimlili\u011fi yeni bir seviyeye ta\u015f\u0131yacakt\u0131r.<\/p>\n<p>Sonu\u00e7 olarak, Forge, Rovo ve TiDB birlikteli\u011fi, modern veri eri\u015fiminin nas\u0131l olmas\u0131 gerekti\u011fine dair bir yol haritas\u0131 sunuyor. Bu teknolojik sinerji, her seviyeden kullan\u0131c\u0131n\u0131n verilere eri\u015fimini basitle\u015ftirirken, kurumsal g\u00fcvenlik ve performans standartlar\u0131ndan \u00f6d\u00fcn vermeyen, gelece\u011fin veri odakl\u0131 organizasyonlar\u0131 i\u00e7in g\u00fc\u00e7l\u00fc bir temel olu\u015fturuyor. Verinin g\u00fcc\u00fcn\u00fc ke\u015ffetmek hi\u00e7 bu kadar kolay ve g\u00fcvenli olmam\u0131\u015ft\u0131.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ol>\n<li><strong>Do\u011fal dil SQL ne kadar g\u00fcvenilir?<\/strong>\n<p>Do\u011fal dil SQL'in g\u00fcvenilirli\u011fi, uygulanan g\u00fcvenlik katmanlar\u0131na ba\u011fl\u0131d\u0131r. Rovo gibi LLM'lerden gelen SQL \u00e7\u0131kt\u0131s\u0131n\u0131n, Forge backend'de kapsaml\u0131 bir do\u011frulama (sadece SELECT komutlar\u0131na izin verme, izin verilen tablolar\u0131 kontrol etme) ve TiDB taraf\u0131nda rol tabanl\u0131 eri\u015fim kontrol\u00fc (RBAC) ile desteklenmesi durumunda olduk\u00e7a g\u00fcvenli hale getirilebilir. LLM'lerin hala hatal\u0131 veya k\u00f6t\u00fc niyetli sorgular \u00fcretme potansiyeli oldu\u011fundan, insan onayl\u0131 bir g\u00fcvenlik katman\u0131 \u015fartt\u0131r.<\/p>\n<\/li>\n<li><strong>TiDB yerine ba\u015fka bir veri taban\u0131 kullan\u0131labilir mi?<\/strong>\n<p>Evet, Forge SQL farkl\u0131 veri taban\u0131 sa\u011flay\u0131c\u0131lar\u0131n\u0131 destekleyebilir. Ancak TiDB, da\u011f\u0131t\u0131k mimarisi, yatay \u00f6l\u00e7eklenebilirli\u011fi, MySQL uyumlulu\u011fu ve y\u00fcksek eri\u015filebilirlik gibi \u00f6zellikleriyle \u00f6zellikle Forge'un serverless ve dinamik sorgu olu\u015fturma senaryolar\u0131na \u00e7ok iyi uyum sa\u011flar. Alternatifler aras\u0131nda PostgreSQL veya di\u011fer bulut tabanl\u0131 SQL veri tabanlar\u0131 da de\u011ferlendirilebilir, ancak bu durumda TiDB'nin sundu\u011fu performans ve \u00f6l\u00e7eklenebilirlik avantajlar\u0131ndan \u00f6d\u00fcn verilebilir.<\/p>\n<\/li>\n<li><strong>Rovo benzeri LLM'ler nas\u0131l se\u00e7ilmelidir?<\/strong>\n<p>Rovo benzeri bir LLM se\u00e7erken dikkate al\u0131nmas\u0131 gereken fakt\u00f6rler \u015funlard\u0131r: do\u011fruluk oran\u0131 (SQL \u00fcretim kalitesi), maliyet, g\u00fcvenlik \u00f6zellikleri (veri gizlili\u011fi, prompt g\u00fcvenli\u011fi), ba\u011flam anlama yetene\u011fi, \u00f6zelle\u015ftirilebilirlik (kendi veri \u015feman\u0131z ve i\u015f kurallar\u0131n\u0131z \u00fczerinde e\u011fitim), API eri\u015fimi ve entegrasyon kolayl\u0131\u011f\u0131. Atlassian ekosistemi i\u00e7inde Rovo'nun do\u011frudan entegrasyon avantajlar\u0131 olabilir, ancak di\u011fer b\u00fcy\u00fck LLM sa\u011flay\u0131c\u0131lar\u0131 (OpenAI GPT serisi, Google Gemini, Anthropic Claude) da benzer yetenekler sunar.<\/p>\n<\/li>\n<li><strong>Geli\u015ftirme s\u00fcreci ne kadar s\u00fcrer?<\/strong>\n<p>Geli\u015ftirme s\u00fcresi, projenin karma\u015f\u0131kl\u0131\u011f\u0131na, ekibin tecr\u00fcbesine ve mevcut altyap\u0131ya ba\u011fl\u0131d\u0131r. Basit bir prototip birka\u00e7 hafta i\u00e7inde olu\u015fturulabilirken, kurumsal d\u00fczeyde g\u00fcvenlik ve performans gereksinimlerini kar\u015f\u0131layan tam \u00f6zellikli bir uygulama birka\u00e7 ay s\u00fcrebilir. \u00d6zellikle LLM entegrasyonu i\u00e7in prompt m\u00fchendisli\u011fi ve SQL do\u011frulama katmanlar\u0131n\u0131n olu\u015fturulmas\u0131 zaman al\u0131c\u0131 olabilir.<\/p>\n<\/li>\n<li><strong>Performans sorunlar\u0131 ya\u015fan\u0131r m\u0131?<\/strong>\n<p>Evet, LLM'ler taraf\u0131ndan \u00fcretilen sorgular bazen suboptimal veya a\u015f\u0131r\u0131 karma\u015f\u0131k olabilir ve bu da b\u00fcy\u00fck veri k\u00fcmelerinde performans sorunlar\u0131na yol a\u00e7abilir. Bu sorunlar\u0131 \u00f6nlemek i\u00e7in: TiDB'nin da\u011f\u0131t\u0131k yap\u0131s\u0131 ve \u00f6l\u00e7eklenebilirlik \u00f6zellikleri, do\u011fru indeksleme stratejileri, sorgu \u00f6nbellekleme, sorgu zaman a\u015f\u0131mlar\u0131 ve LLM'e performans odakl\u0131 prompt m\u00fchendisli\u011fi uygulanmal\u0131d\u0131r. D\u00fczenli performans izleme ve sorgu analizi de kritik \u00f6neme sahiptir.<\/p>\n<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile&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":[1505],"tags":[],"class_list":{"0":"post-34497","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-sql-2","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>Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m<\/title>\n<meta name=\"description\" content=\"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.\" \/>\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\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m\" \/>\n<meta property=\"og:description\" content=\"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-17T07:01:29+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=\"33 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m\",\"datePublished\":\"2025-11-17T07:01:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\"},\"wordCount\":5694,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"SQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\",\"name\":\"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-17T07:01:29+00:00\",\"description\":\"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m\"}]},{\"@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":"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m","description":"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.","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\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/","og_locale":"tr_TR","og_type":"article","og_title":"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m","og_description":"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.","og_url":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-17T07:01:29+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"33 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m","datePublished":"2025-11-17T07:01:29+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/"},"wordCount":5694,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["SQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/","url":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/","name":"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-17T07:01:29+00:00","description":"Atlassian Forge platformunda do\u011fal dil kullanarak SQL sorgular\u0131 olu\u015fturmay\u0131 ke\u015ffedin. Rovo (LLM) ve Forge SQL (TiDB) entegrasyonu ile veri eri\u015fimini nas\u0131l g\u00fcvenli ve verimli hale getirebilece\u011finizi \u00f6\u011frenin. Bu makale, kurumsal veri analizi s\u00fcre\u00e7lerinizi basitle\u015ftirmek i\u00e7in kapsaml\u0131 bir rehber sunuyor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/forge-uzerinde-dogal-dil-sql-rovo-ve-tidb-ile-guvenli-bir-yaklasim\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Forge \u00dczerinde Do\u011fal Dil SQL: Rovo ve TiDB ile G\u00fcvenli Bir Yakla\u015f\u0131m"}]},{"@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\/34497","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=34497"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34497\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}