Çevrimiçi Silme
Çevrimiçi silme özelliği, rippled sunucusunun eski defter sürümlerinin yerel kopyasını silmesine olanak tanır; böylece diskin kullanımı zamanla hızla büyümez. Varsayılan yapılandırma dosyası, çevrimiçi silmeyi otomatik olarak çalışacak şekilde ayarlar, ancak çevrimiçi silme, yalnızca bir talep geldiğinde çalışacak şekilde de yapılandırılabilir.
Sunucu her zaman defterin mevcut durumu ile birlikte tüm bakiyeleri ve ayarları saklar. Silinen veriler, saklanan geçmişten daha eski olan eski işlemleri ve defter durumunun sürümlerini içerir.
Varsayılan yapılandırma dosyası, rippled sunucusunun en son 2000 defter sürümünü saklamasını ve daha eski verileri otomatik olarak silmesini ayarlar.
Çevrimiçi silme olsa bile, aynı zaman diliminde saklanan defter verileri için gereken disk alanı zamanla artar, çünkü bireysel defter sürümlerinin boyutu zamanla büyüme eğilimindedir. Bu büyüme, eski defterleri silmeden gerçekleşen veri birikimi ile karşılaştırıldığında çok yavaştır. Disk alanı ihtiyaçları hakkında daha fazla bilgi için Kapasite Planlaması sayfasına bakın.
Arka Plan
rippled sunucusu, defter deposunda defter geçmişini saklar. Bu veriler zamanla birikir.
Defter deposunda, defter verileri "de-duplicate" edilir. Diğer bir deyişle, sürümden sürüme değişmeyen veriler yalnızca bir kez saklanır. Defter deposundaki kayıtlar, hangi defter sürümü(leri) içerdiklerini göstermez; çevrimiçi silmenin bir kısmı, hangi kayıtların yalnızca eski defter sürümleri tarafından kullanıldığını belirlemektir. Bu işlem zaman alıcıdır ve disk I/O ve uygulama önbelleğini etkiler, bu nedenle sunucu her yeni defteri kapattığında eski verileri silemez.
Çevrimiçi Silme Davranışı
Çevrimiçi silme ayarları, rippled sunucusunun defter deposunda aynı anda ne kadar defter sürümünü tutması gerektiğini yapılandırır. Ancak, belirtilen sayı bir kılavuzdur, katı bir kural değildir:
Sunucu, yapılandırılmış defter sürümü sayısından daha yakın olan verileri asla silmez, ancak yeterince uzun süre çalışmamışsa veya herhangi bir zaman diliminde ağ ile senkronizasyonu kaybetmişse, tutulan sürüm sayısı bu sayıdan daha az olabilir. (Sunucu en azından bazı geçmiş verileri geri doldurmaya çalışır; detaylar için
geçmişi almasayfasına bakın.)Sunucu, çevrimiçi silmenin otomatik olarak çalışacak şekilde ayarlanması durumunda, yapılandırılmış defter sürümü sayısının biraz daha fazlasını saklayabilir. (Her çalıştığında, saklanan defter sürümü sayısını yaklaşık olarak yapılandırılmış sayıya indirir.)
Eğer çevrimiçi silme sunucu meşgulken gecikirse, defter sürümleri birikmeye devam edebilir. Normalde çalıştığında, çevrimiçi silme, sunucu yapılandırılmış defter sürümü sayısının iki katına ulaştığında başlar, ancak daha fazla defter sürümü birikene kadar tamamlanmayabilir.
Tavsiye edilen silme etkinleştirildiğinde, sunucu elde ettiği ve oluşturduğu tüm defter sürümlerini saklar; yönetici [can_delete method][] çağrısını yapana kadar.
Sunucunun sakladığı veri miktarı, [can_delete][can_delete method] yöntemini ne sıklıkla çağırdığınıza ve
online_deleteayarının ne kadar zaman aralığını gösterdiğine bağlıdır:Eğer
can_deleteçağrınızıonline_deletearalığından daha sık yaparsanız, sunucuonline_deletesayısının iki katı kadar defter sürümünü saklar. (Silme işlemi sonrasında bu, yaklaşıkonline_deletedeğerine indirilir.)Örneğin,
can_deleteçağrısını günde bir kez veonline_deletedeğeri 50.000 olarak ayarlanırsa, sunucu tipik olarak silme işleminden önce 100.000 defter sürümüne kadar saklar. Silme işleminden sonra sunucu en az 50.000 defter sürümünü (yaklaşık iki gün) saklar. Bu yapılandırmada, her yaklaşıkcan_deleteçağrısı, sunucunun silinecek yeterli defter sürümü olmadığı için değişiklik sağlamaz.Eğer
can_deleteçağrınızıonline_deletearalığından daha az sıklıkla yaparsanız, sunucu en fazla,can_deleteçağrıları arasındaki zaman aralığını yaklaşık olarak iki katı kadar kapsayan defter sürümlerini saklar. (Silme işleminden sonra bu, yaklaşık bir aralık kadar veri olarak indirilir.)Örneğin,
can_deleteçağrısını günde bir kez veonline_deletedeğeri 2000 olarak ayarlanırsa, sunucu tipik olarak silme işleminden önce iki gün değerindeki tam defter sürümlüğünü saklar. Silme işleminden sonra sunucu yaklaşık bir gün değerinde (yaklaşık 25.000 defter sürümünü) saklar, ancak asla 2000 defter sürümünden daha azını saklamaz.
Çevrimiçi silme etkinleştirildiğinde ve otomatik çalıştığında (yani tavsiye edilen silme devre dışı bırakıldığında), sunucunun sakladığı toplam defter verisi, sunucunun saklaması için yapılandırıldığı defter sürümü sayısına eşit kalmalıdır ve maksimum değeri yaklaşık iki katıdır.
Çevrimiçi silme çalıştığında, diskteki SQLite veritabanı dosyalarının boyutunu azaltmaz; yalnızca bu dosyalardaki alanı yeni veriler için yeniden kullanılabilir hale getirir. Çevrimiçi silme, defter deposunu içeren RocksDB veya NuDB veritabanı dosyalarının boyutunu azaltır.
Sunucu, silme işlemini ne kadar geri alabileceğini belirlerken yalnızca doğrulanan defter sürümlerini sayar. Sunucunun yeni defter sürümlerini doğrulayamaması durumunda (ya yerel ağ bağlantısındaki bir kesinti nedeniyle ya da global XRP Ledger ağının bir konsensüs sağlamakta zorlanması durumunda), rippled defterleri kapatmaya devam eder, böylece ağ yeniden sağlandığında hızlı bir şekilde geri kazanabilir. Bu durumda, sunucu, birçok kapalı ancak henüz doğrulanmamış defter sürümünü biriktirebilir. Bu doğrulanmamış defterler, sunucunun çevrimiçi silme işlemi gerçekleştirmeden önce sakladığı doğrulanan defter sürümlerini etkilemez.
Çevrimiçi Silmeyi Kesmek
Çevrimiçi silme otomatik olarak sunucu durumu full seviyesinin altına düştüğünde durur. Bu durumda, sunucu SHAMapStore::WRN öneki ile bir günlük mesajı kaydeder. Sunucu, tam olarak senkronize olduktan sonra bir sonraki doğrulanan defter sürümünden sonra çevrimiçi silmeyi başlatmaya çalışır.
Eğer sunucuyu durdurursanız ya da çevrimiçi silme işlemi çalışırken çöküş olursa, sunucu yeniden başlatıldığında çevrimiçi silme süreci tekrar başlar ve sunucu tam olarak senkronize olduğunda devam eder.
Çevrimiçi silmeyi geçici olarak devre dışı bırakmak için, [can_delete method][] yöntemini never argümanıyla kullanabilirsiniz. Bu değişiklik, çevrimiçi silmeyi tekrar etkinleştirmek için [can_delete][can_delete method] yöntemini çağırana kadar kalıcıdır. Çevrimiçi silmenin ne zaman gerçekleşeceğini kontrol etme hakkında daha fazla bilgi için Tavsiye Edilen Silme sayfasına bakın.
Yapılandırma
Aşağıdaki ayarlar, çevrimiçi silme ile ilgilidir:
online_delete- Saklanacak doğrulanan defter sürümü sayısını belirtin. Sunucu belirli aralıklarla bu sayıdan daha eski olan defter sürümlerini siler. Belirtilmediği takdirde, hiçbir defter silinmez.Varsayılan yapılandırma dosyası bu değer için 2000 olarak ayarlıdır. Bu değer 256'dan az olamaz, çünkü
Ücret OylamasıveDeğişiklik Sürecigibi bazı olaylar yalnızca her 256 defterde bir güncellenir.:::warning Eğer
rippledsunucusunuonline_deletekapalı olarak çalıştırırsanız, daha sonraonline_delete'yi etkinleştirip sunucuyu yeniden başlatırsanız, sunucuonline_deletedevre dışı iken zaten indirilen mevcut defter geçmişini göz ardı eder ancak silmez. Disk alanını tasarruf etmek için,online_deleteayarını değiştirdikten sonra sunucuyu yeniden başlatmadan önce mevcut geçmişinizi silin. :::[ledger_history]- Geri doldurması gereken doğrulanan defter sayısını belirtin.online_deletedeğerine eşit veya daha az olmalıdır. Sunucu, böyle bir sayı ile doğrulanan bu kadar çok defter sürümüne sahip değilse, mümkün olduğunda komşulardan bu verileri almaya çalışır.Bu ayar için varsayılan değer 256 defterdir.
Aşağıdaki diyagram,
online_deleteveledger_historyayarları arasındaki ilişkiyi göstermektedir:
advisory_delete- Etkinleştirildiğinde, çevrimiçi silme otomatik olarak planlanmaz. Bunun yerine, bir yönetici çevrimiçi silmeyi elle başlatmak zorundadır. Devre dışı bırakılmış için0veya etkinleştirilmiş için1değerini kullanın.Bu ayar varsayılan olarak devre dışıdır.
[fetch_depth]- Komşulara sunulacak defter sürümü sayısını belirtin. Sunucu, belirtilen defter sürümü sayısından daha eski tarihli verilere yönelik komşulardan gelen getirme taleplerini kabul etmez. Komşulara mevcut verileri sunmak içinfulldeğerini belirtin.fetch_depthiçin varsayılan değerfull'dır (tüm mevcut verileri sunmak).fetch_depthayarı, her ikisi de belirtilmişse,online_deletedeğerinden daha yüksek olamaz. Eğerfetch_depthdaha yüksek ayarlanmışsa, sunucu bunuonline_deleteile eşit olarak kabul eder.Aşağıdaki diyagram,
fetch_depth'in nasıl çalıştığını göstermektedir:
Farklı geçmiş miktarlarını saklamak için gerekli olan disk alanı tahminleri için Kapasite Planlaması sayfasına bakın.
Tavsiye Edilen Silme
Varsayılan yapılandırma dosyası, çevrimiçi silmeyi otomatik ve dönemsel olarak gerçekleştirmek üzere planlar. Eğer yapılandırma dosyası bir online_delete aralığı belirlemiyorsa, çevrimiçi silme gerçekleşmez. Eğer yapılandırma dosyası advisory_delete ayarını etkinleştiriyorsa, çevrimiçi silme yalnızca bir yönetici bunu [can_delete method][] ile tetiklediğinde gerçekleşir.
Zaman damgasına dayalı olarak çevrimiçi silmeyi tetiklemek için, çevrimiçi silmeyi bir görevle planlayabilirsiniz. Eğer sunucunuz yoğun kullanılıyorsa, çevrimiçi silmeden kaynaklanan ek yük, sunucunuzun geride kalmasına ve geçici olarak konsensüs ağından senkronizasyonunu kaybetmesine neden olabilir. Bu durumda, çevrimiçi silmeyi tavsiye edilen silme ile kullanabilir ve yalnızca yoğun olmayan saatlerde gerçekleşecek şekilde planlayabilirsiniz.
Tavsiye edilen silmeyi başka nedenlerle de kullanabilirsiniz. Örneğin, bir veri yedeğinin ayrı bir sunucuya alındığını manuel olarak doğrulamak isteyebilirsiniz, veri silinmeden önce. Alternatif olarak, bu verilerin silinmesinden önce başka bir işlemin işlem verilerini işleme sürecinin tamamlandığını manuel olarak onaylayabilirsiniz.
can_delete API yöntemi, genel olarak veya belirli bir defter sürümüne kadar otomatik silmeyi etkinleştirebilir veya devre dışı bırakabilir, eğer advisory_delete yapılandırma dosyasında etkinleştirilmişse. Bu ayar değişiklikleri, rippled sunucusunu yeniden başlatsanız bile kalıcıdır; ancak advisory_delete ayarını yapılandırma dosyasında devre dışı bırakırsanız yeniden başlatmadan önce bu kalıcılığı kaybedersiniz.
Nasıl Çalışır
Çevrimiçi silme işlemi, iki veritabanası oluşturularak çalışır: belirli bir zamanda, "eski" veritabanı yalnızca okunabilir durumda olur ve "mevcut" veritabanı ise yazılabilir durumdadır. rippled sunucusu her iki veritabanından nesneleri okuyabilir; bu nedenle mevcut defter sürümleri her iki veritabanında da nesneleri içerebilir. Eğer bir nesne, defter sürümünden defter sürümüne değişmiyorsa, o nesnenin yalnızca bir kopyası veritabanında tutulur; böylece sunucu o nesnenin gereksiz tekrarını saklamaz. Yeni bir defter sürümü bir nesneyi değiştirdiğinde, sunucu değiştirilen nesneyi "yeni" veritabanında saklar; önceki sürümdeki nesne (hala önceki defter sürümleri tarafından kullanılan) "eski" veritabanında kalır.
Çevrimiçi silme zamanı geldiğinde, sunucu ilk olarak saklanacak en eski defter sürümünü gözden geçirir ve o defter sürümündeki tüm nesneleri yalnızca okunabilir "eski" veritabanından "mevcut" veritabanına kopyalar. Bu, "mevcut" veritabanının şimdi seçilen defter sürümünde kullanılan ve daha yeni sürümlerde kullanılacak tüm nesneleri içerdiğini garanti eder. Ardından sunucu "eski" veritabanını siler ve mevcut olan "mevcut" veritabanını "eski" ve yalnızca okunabilir olur. Sunucu, bu noktadan itibaren daha yeni değişiklikleri içerecek yeni bir "mevcut" veritabanı başlatır.
Ayrıca Bakınız
- Kavramlar:
DefterlerKonsensus
- Kılavuzlar:
Kapasite PlanlamasırippledYapılandırması`Çevrimiçi Silmeyi YapılandırTavsiye Edilen Silmeyi YapılandırTarih Parçalama YapılandırmasıTam Tarih Yapılandırması
- Referanslar:
- [ledger method][]
- [server_info method][]
- [ledger_request method][]
- [can_delete method][]
- [ledger_cleaner method][]