Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriGenel SohbetVeritabanı Sistemleri Hakkında
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: Veritabanı Sistemleri Hakkında  (Okunma Sayısı 132 defa)
0 Üye ve 3 Ziyaretçi konuyu incelemekte.
programci42
Üye
***
Mesaj Sayısı: 117


Üyelik Bilgileri
« : Dün 14:25:53 »

Arkadaşlar merhaba kafama bir soru takıldı ve sizden bu konu hakkında bir fikir istiyorum.
Aslında soracağım soru çok teorik bir soru.

SQL ve NoSQL veritabanı sistemleri var biliyorsunuz ben bu güne kadar hep sql sistemleri üzerinde çalıştım ve uygulama geliştirdim vs, ama nosql sistemleri de araştırdım okudum biraz.
NOSQL sistemlerin sorgu cevap hızı sql sistemlere göre çok daha hızlıymış bunu öğrendim.

Ancak şöyle örnek vererek anlatayım.

Kişi Adı;Mail Adresi;Cep Tel;Doğum Tarihi
Hakkı;hakki@gmail.com;2131535;01.01.2001
Durmuş;durmus@gmail.com;2351535;01.01.2001
Aslı;asli@gmail.com;8454;05.05.20225

Mesela bunun gibi bu da bir veritabanı öyle değil mi genelde bunu .CSV olarak kaydederler.

Şimdi sql olsun veya nosql olsun diyelimki bu dosyayı baz almayın kendi dosyasında 1 milyon kayıt var ben bu kayıtları okumak için c# ta FileStream kullanıyoruz mesela File.ReadAllText dersek mesela tüm dosyayı komple okuyup bir değişkene atıp ordan gerekli işlemleri yaparak ekranda göstertebiliriz veya File.ReadLine diyerek örneğin satır satır okuyarak ta aynı işlemleri yapıp yine ekranda gösterebiliriz.

Benim anlamadığım bu veritabanı sistemleri dosyaları okurken bu şekilde okumuyor mu yani eğer bir dosyada 1000 kayıt varsa ekranda göstermek için bu 1000 kaydı okumak zorunda.

Ya da şöyle anlatayım bu 1000 kayıt arasında herhangi bir kaydı aramak için en baştan başlayıp tüm kayıtları teker teker okuyup bulduğu sonucu değişkene atıp göstermesi gerekir. Müneccim değil ya tüm kayıtları gezmesi gerekir mantık olarak.

Durum böyle olunca nasıl oluyorda SQL veya NOSQL birbirinden farklı hızlarda çalışabiliyor?

Şimdi okuduğum kadarıyla NoSQL de genelde anahtar ve değer şeklinde veriler kaydediliyor tablo, satır, sütun yapısı yok ancak yine de dediğim gibi veri yapısı nasıl olursa olsun senin veritabanında 1000 kaydın varsa bu 1000 kaydı da gezmen gerekir, ya da bir kayıt aramak için iç içe döngü kurup bu kaydı aratman lazım.

Cevaplarınızı bekliyorum.
Logged
Alpyre
Uzman
*****
Mesaj Sayısı: 2.237



Üyelik Bilgileri WWW
« Yanıtla #1 : Dün 15:33:50 »

Selam programci42

Ya da şöyle anlatayım bu 1000 kayıt arasında herhangi bir kaydı aramak için en baştan başlayıp tüm kayıtları teker teker okuyup bulduğu sonucu değişkene atıp göstermesi gerekir. Müneccim değil ya tüm kayıtları gezmesi gerekir mantık olarak.

Hash table (veya hash map) adı verilen veri yapısı hakkında bilgin var mı? Bu yapı kullanılarak belli bir kayıda, tüm kayıtları gezmeksizin ulaşılabiliyor. SQL de, NoSQL de altyapısında bu yapıdan yararlanır.

Şimdi okuduğum kadarıyla NoSQL de genelde anahtar ve değer şeklinde veriler kaydediliyor...

Evet o okuduğun şey bir nevi hash table tarifi.

...tablo, satır, sütun yapısı yok ancak yine de dediğim gibi veri yapısı nasıl olursa olsun senin veritabanında 1000 kaydın varsa bu 1000 kaydı da gezmen gerekir.

Hayır gerekmiyor. Zaten gerekmesin diye anahtar-değer ikilileri olarak kaydediliyor veri. Sen o konuyu biraz araştırırsan kafanda soru işareti kalmayacaktır.

Durum böyle olunca nasıl oluyorda SQL veya NOSQL birbirinden farklı hızlarda çalışabiliyor?

Bu iki veri tabanı sisteminin arasındaki hız farkını, kullandıkları algoritmaların verimliliği, geliştirildikleri dil, kullandıkları derleyici, dosya sistemine erişimde kullandıkları dış kütüphanelerin optimizasyonu ve benzeri bir çok unsur belirler.
Logged

Alper
egemur
Üye
****
Mesaj Sayısı: 305



Üyelik Bilgileri
« Yanıtla #2 : Dün 16:05:07 »

Selam programcı 42,
Alpyre’nin de belirttiği gibi ilişkisel veri tabanları hashtable benzeri bir yapı ile erişilecek dataları indexlerler. Hatta veri yapısını oluşturan kişi index’leri de ilişkileri verir. Bu nedenle hızlı bir şekilde tüm dataları dolaşmadan istenilen veriye ulaşır.

Tabi örneğin cinsiyet diye bir kolon olduğunu düşünelim Kadın ve Erkek olarak iki değer alabileceği için bu kolon indekslense bile tablonun yarısını dolaşması gerekecektir.

Bazı tablolar belirli kural setine göre partition’lta ayrılabilir. Örneğin yıl gibi.

NoSql ise ilişkisel veri yapısını kullanmamaktadır. Bu nedenle dataya erişim algoritmaları farklılık gösterir. Ayrıca belirli veri modelleri için tasarlanmış alt tipleri de vardır. NoSql Graph db gibi.
« Son Düzenleme: Dün 18:17:19 Gönderen: egemur » Logged

Commodore 64/64c - 1541 Ultimate+ - Ultimate 64 Elite
Amiga 500 - Gotek Floppy Drive
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.108


Üyelik Bilgileri WWW
« Yanıtla #3 : Dün 17:52:09 »

Elmasri / Navathe'nin Fundamentals'ını biz okumuştuk, siz de okuyun:

https://b-ok.asia/s/elmasri%20navathe

Tüm yanıtlar ve pek çok fikir uyandıracak çözümler bu ve benzeri kitaplarda.


Bu arada, evet bilgisayarlar müneccimdir. Yoksa niye onlarla her tür tahmin işini yürütelim öyle değil mi?

Bir de minik bir gereksiz bilgi: Bir zamanların meşhur dBase programının ilk versiyonu dBase II adını taşır, sonraki sürümler de dBase III ve dBase IV... Programcıları, profesyonel görünsün, hiç var olmamış I'den daha iyi bir versiyon izlenimi uyandırsın diye ilk sürümün numarasını II'den başlatmışlar.
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.302


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #4 : Dün 18:51:18 »

Çok güzel cevaplar gelmiş. Ufak bir ekleme yapayım. NoSQL veri tabanlarına non-relational da denilmesi kafa karıştırmasın. Bu isim veri tabanının bağlantısal olmadığı anlamına değil veri yapısının klasik bağlantısal veri tabanı mantığında olmadığına işaret ediyor. Yani CSV gibi tutulmuyor. Ancak bağlantıları tanımlamak için alternatif yöntemler kullanılıyor. Big data, web uygulamaları gibi durumlarda klasik SQL veri tabanlarından hızlı çalışması da ölçeklenebilirlik, bölünebilirlik gibi avantajlardan geliyor.

CSV dosya teknik olarak bir veri dosyasıdır ama ancak primitif bir veri tabanı olarak düşünebilirsin. Bağlantısal olmadığı için içinden istediğin kaydı bulmak istediğinde bütün satırları okumak gerekir. Veri tabanı ise veriler arasında kurduğu bağlantıları kullanarak bu işi bütün veriyi okumadan çok daha hızlı yapabilir.
Logged

programci42
Üye
***
Mesaj Sayısı: 117


Üyelik Bilgileri
« Yanıtla #5 : Bugün 08:45:08 »

Çok teşekkür ederim cevaplarınız için yalnız bu arada ilkerficiciların verdiği link çalışmıyor.

Hash table yapısını inceledim ve örnek kodlara baktım ve bunu anladım.

Fakat hala anlamadığım bazı noktalar var mesela bu indexleme meselesi tam olarak ne yapıyor orda index yaparken.

Şu satırda şu veri var diye kaydetmiyor değil mi o şekilde çalıştığını düşünmüyorum.

Şimdi tabloda Primary Key olarak tanımladığımız alan clustered index mi oluyor?

Bu ifadeleri de okudum ama yine de tam anladığımı söyleyemem.

C# ta mesela list türünde değişken tanımlayabiliyoruz bu dizide mesela arama fonksiyonları olarak .indexof veya .contains gibi fonksiyonları söyleyebiliriz. Ama mesela Contains yazdığımızda nasıl bir işlem yapıyor orasını bilmiyorum sadece listede aradığım değer varsa true yoksa false döndürüyor. Bu fonksiyonda da sanırım o zaman listeyi teker teker dolaşmıyor.
Çünkü liste ne kadar büyük olursa olsun çok kısa bir sürede cevap veriyor.
Logged
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: