Uygulamaların kullandığı formatta verileri depolayan bir flash depolama hayal edin. En azından bir büyük sürücü üreticisi, bazı araştırmacılar ve yeni başlayanlar tarafından öngörüldüğü gibi, anahtar-değer flash medyası ve NVMe Anahtar-Değer komut setinde vaat edilen şey budur.
Ancak anahtar-değer depolamanın ürünleştirilmiş tezahürleri zeminde inceden inceye varıyor. Konuyla ilgili araştırmalar yapıldı ve belirtildiği gibi NVMe’de anahtar-değer için bir komut kümesinin geliştirildiğini gördük.
Bu arada, 2019’da Samsung, anahtar-değer depolama dizisi planları olan Stellus adlı bir yan kuruluşa entegre edilen bir prototip anahtar-değer sürücüsünü duyurdu, ancak bunun where-are-they-now dosyasına gönderilmiş gibi görünüyor. Daha yakın zamanda, başlangıç şirketi QiStor, anahtar-değer depolama için depolama yazılımı ve FPGA yongaları üretme planlarını ortaya attı ve bunun büyük bir pazar fırsatı olabileceğini iddia ediyor.
Fikir, verileri anahtar-değer biçiminde tutarak, mevcut çok katmanlı giriş/çıkış (G/Ç) sürecine kıyasla çok daha verimli, hızlı, enerji açısından verimli ve dayanıklı hale getirmektir.
Şu anda, uygulamalar ve ana bilgisayarlar, okuma/yazma işlemleri sırasında verilerin bulunabilmesi için depolama G/Ç’sini sürücü düzeyinde mantıksal blok adreslemesine (LBA) dönüştürmelidir. Bu, dönen disk sabit disklerinin ve LBA çalışma biçimlerinin kökenlerine dayanan bir veri adresleme yöntemidir. Ve böylece, anahtar-değer depolarının geliştiricileri, ortaya çıkan G/Ç’deki verimsizlikleri fark ettiler.
Başka bir deyişle, şu anda, bir uygulama bir anahtar-değer veritabanıyla etkileşime girerse, o veritabanıyla konuşmalı ve ardından anahtar-değer adreslemesini ana bilgisayar dosya sistemi ve LBA konuşması aracılığıyla çevirerek diskteki verilerin fiziksel konumunu bulmalıdır. Bu süreç, onu daha verimli hale getirmek için kaldırılabilecek bir yığın adım içerir.
Ancak mantıksal blok adreslemesi, anahtar-değer depolamanın ortadan kaldırabileceği başka verimsizlikleri de beraberinde getirir.
Flash depolama, silme ve yeniden yazma işlemlerinin bir sonucu olarak zayıf dayanıklılıktan muzdariptir. Bu tür faaliyetler, her seferinde veri üzerine yazıldığında (LBA bloklarından farklı boyuttaki bloklara) silinmesi, taşınması ve başka bir yere yazılması gerektiğinden artar.
Aygıt doldukça bu ihtiyaç daha da acil hale gelir, bu nedenle diske tek bir yazma, veriler taşınırken birden fazla yazmaya (çöp toplama olarak bilinir) neden olabilir. Bunların hepsi aşınma yaratır ve sürücü ömrünü kısaltır.
Buna karşılık, anahtar-değer depolaması, uygulamanın işletim sistemi, dosya sistemi ve medya LBA’sı aracılığıyla çeviriye gerek kalmadan doğrudan medyayla iletişim kurmasını sağlar.
Bunun nedeni, anahtar-değer depolamanın istediğini bulmak için hangi fiziksel bloğu arayacağını bilmesine gerek olmamasıdır. Bunun yerine, anahtar-değer depolama verilerin yerleşimini yönetir ve değerlerin nerede bulunduğunu bilir. Ana bilgisayar, işletim sistemi ve dosya sistemi sürece katılmaz. Bir değer aranırsa, cihaz anahtarının nerede tutulduğunu bulmak için dahili eşleme tablolarına bakar.
Anahtar-değer, örneğin JSON formatında, Kubernetes’teki etcd veri deposunda, JavaScript ve Python programlama dillerinde bir veri türü olarak bulunan verileri depolamanın yaygın ve hızla gelişen bir yoludur ve NoSQL veritabanlarının temelini oluşturur.
Anahtar-değerde, anahtar bir değişkenin adıdır ve değer onun değeri veya değerleridir. Anahtarlar ve değerler herhangi bir uzunlukta ve farklı veri türlerinde olabilir – örneğin, sayısal, karakter, hatta resim veya ses dosyaları – ve ayrıca iç içe olabilir, böylece bir anahtar kendi değerlerine sahip başka bir anahtar olan bir değere sahip olabilir.