AmberDB
view release on metacpan or search on metacpan
docs/TR.AmberDB-vs-SQL_Kullanim_Rehberi.md view on Meta::CPAN
[Ana Sayfa](index_tr.html) ⢠[Hakkında](TR.AmberDB-Hakkinda.html) ⢠[Hızlı BaÅlangıç](index_tr.html#hızlı-baÅlangıç) ⢠[Tutorial](TR.AmberDB_Veritabani_Sistemi.html) ⢠[Benchmark](TR....
---
# SQL ile KarÅılaÅtırmalı AmberDB Kullanım Rehberi
> Bu kılavuz, geleneksel iliÅkisel veritabanı (RDBMS / SQL) deneyimi olan geliÅtiricilerin AmberDB'ye hızla adapte olabilmesi için hazırlanmıÅtır. Kuramsal ve felsefi detaylar yerine, **"SQL'de Åu Åekilde yapılan iÅlem AmberDB'de Åu Å...
---
## İçindekiler
1. [GeliÅtiricinin Bilmesi Gereken Temel Notlar (Hızlı GiriÅ)](#1-geliÅtiricinin-bilmesi-gereken-temel-notlar-hızlı-giriÅ)
2. [Temel CRUD İÅlemleri (DML)](#2-temel-crud-iÅlemleri-dml)
- [2.1 INSERT (Tekil Kayıt Ekleme)](#21-insert-tekil-kayıt-ekleme)
- [2.2 BULK INSERT (Toplu Kayıt Ekleme)](#22-bulk-insert-toplu-kayıt-ekleme)
- [2.3 SELECT by ID (Birincil Anahtarla Okuma)](#23-select-by-id-birincil-anahtarla-okuma)
- [2.4 UPDATE by ID (Kayıt Güncelleme)](#24-update-by-id-kayıt-güncelleme)
- [2.5 BULK UPDATE (Toplu Güncelleme)](#25-bulk-update-toplu-güncelleme)
- [2.6 DELETE (Kayıt Silme & Soft-Delete)](#26-delete-kayıt-silme--soft-delete)
- [2.7 BULK DELETE (Toplu Silme)](#27-bulk-delete-toplu-silme)
- [2.8 COUNT(*) (Kayıt Sayısı)](#28-count-kayıt-sayısı)
3. [Sorgulama, Filtreleme ve Arama (SELECT, WHERE, LIKE)](#3-sorgulama-filtreleme-ve-arama-select-where-like)
- [3.1 Tekil DeÄer EÅleÅmesi (WHERE field = value)](#31-tekil-deÄer-eÅleÅmesi-where-field--value)
- [3.2 Ãoklu DeÄer Listesi (WHERE id IN (...))](#32-çoklu-deÄer-listesi-where-id-in-)
- [3.3 Metin Arama (WHERE col LIKE '%...%' / FTS)](#33-metin-arama-where-col-like--fts)
- [3.4 Ãok Kriterli Filtreleme (WHERE A = x AND B = y)](#34-çok-kriterli-filtreleme-where-a--x-and-b--y)
- [3.5 Sayfalama (LIMIT & OFFSET)](#35-sayfalama-limit--offset)
4. [Sıralama (ORDER BY) ve Alfabetik YerelleÅtirme (Collation)](#4-sıralama-order-by-ve-alfabetik-yerelleÅtirme-collation)
- [4.1 Sayısal ve Alfabetik Sıralama](#41-sayısal-ve-alfabetik-sıralama)
- [4.2 Türkçe ve Ãok Dilli Karakter Sıralaması (Collation)](#42-türkçe-ve-çok-dilli-karakter-sıralaması-collation)
5. [İliÅkiler ve JOIN MantıÄı (En Büyük Mimari Fark)](#5-iliÅkiler-ve-join-mantıÄı-en-büyük-mimari-fark)
- [5.1 SQL Normalize Tablo + JOIN Modeli](#51-sql-normalize-tablo--join-modeli)
- [5.2 AmberDB İç İçe Belge + match_block Tersine İndeks Modeli](#52-amberdb-iÌç-iÌçe-belge--match_block-tersine-iÌndeks-modeli)
6. [Gruplama ve Filtre Sayaçları (GROUP BY vs. Facet)](#6-gruplama-ve-filtre-sayaçları-group-by-vs-facet)
7. [İÅlem GüvenliÄi ve ACID (Transactions: COMMIT & ROLLBACK)](#7-iÌÅlem-güvenliÄi-ve-acid-transactions-commit--rollback)
8. [Veri Tanımlama (DDL: CREATE TABLE vs. AmberDB Åeması)](#8-veri-tanımlama-ddl-create-table-vs-amberdb-Åeması)
9. [SQL'de Harici Kod Gerektiren YerleÅik AmberDB Artıları](#9-sqlde-harici-kod-gerektiren-yerleÅik-amberdb-artıları)
10. [Hızlı Referans ve Kopya KaÄıdı (Cheat Sheet)](#10-hızlı-referans-ve-kopya-kaÄıdı-cheat-sheet)
11. [Kavramlar SözlüÄü (Terminology Glossary)](#11-kavramlar-sözlüÄü-terminology-glossary)
---
## 1. GeliÅtiricinin Bilmesi Gereken Temel Notlar (Hızlı GiriÅ)
AmberDB ile kod geliÅtirmeye baÅlamadan önce bilmeniz gereken 4 pratik kural:
1. **Ayrı Bir Veritabanı Sunucusu Yoktur:** `MySQL` veya `PostgreSQL` gibi bir servis baÅlatmanız veya aÄ baÄlantısı kurmanız gerekmez. AmberDB, uygulamanızın içine bir Perl nesnesi olarak dahil edilir ve doÄrudan yerel diskte çalıÅı...
```perl
use AmberDB;
my $adb = AmberDB->new(
cfg => { user => 'admin', language => 'tr' },
path => { dbase_dir => './dbstore' }
);
```
2. **Kayıtlar DoÄal Perl Dizileridir (`@record`):** SQL'deki tablo satırı, AmberDB'de `($id, $alan1, $alan2, ...)` Åeklinde bir Perl dizisidir.
3. **0. İndis Daima Primary Key ID'dir:** Dizinin 0. elemanı (`$record[0]`) kaydın benzersiz kimliÄidir. Yeni kayıtlarda buraya `0` veya `undef` verilir; `insert_id` çaÄrısı otomatik artan ID'yi üretir.
4. **Sütun İsimleri Yerine Blok Numaraları:** SQL'deki `name`, `price`, `status` sütun adları yerine tablodaki pozisyonel blok indisleri (`1`, `2`, `3`...) kullanılır. Alanlarda düz skalar deÄerlerin yanı sıra iç içe `ARRAY` veya `HASH` ...
> [!NOTE]
> AmberDB'nin derin mimari altyapısı, disk dosya formatları ve benchmark sonuçları için [AmberDB Hakkında](TR.AmberDB-Hakkinda.html), [Kapsamlı Tutorial](TR.AmberDB_Veritabani_Sistemi.html) ve [Benchmark Raporu](TR.AmberDB-vs-SQLite_Benchmark...
---
## 2. Temel CRUD İÅlemleri (DML)
### 2.1 INSERT (Tekil Kayıt Ekleme)
* **SQL:**
```sql
INSERT INTO products (name, price, brand, category_id)
VALUES ('Sony WH-1000XM5', 149.99, 'Sony', 5);
```
* **AmberDB:**
```perl
# [0] ID (0: otomatik artan), [1] Ad, [2] Fiyat, [3] Marka, [4] Kategori ID
my $id = $adb->insert_id("products", 0, "Sony WH-1000XM5", 149.99, "Sony", 5);
```
* **Açıklama:** `insert_id` ilk parametrede tablo adını, ikinci parametrede ID'yi (yeni kayıtlarda 0) ve ardından alanları alır. Otomatik atanan yeni ID numarasını skalar olarak döner. Tüm tanımlı indeksler eÅzamanlı güncellenir.
* **Referans:** [Tutorial Bölüm 3.1: insert_id](TR.AmberDB_Veritabani_Sistemi.html#31-kayıt-ekleme-insert_id)
( run in 0.762 second using v1.01-cache-2.11-cpan-e623d60df62 )