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 )