"SQLite: MQL5'te SQL veritabanlarıyla yerel olarak çalışma" makalesi için tartışma - sayfa 7
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Yarın betada 2840 olacak:
Çok mutluyum, teşekkür ederim
Beta 2840 mevcuttur, lütfen deneyin.
Yarın betada 2840 olacak:
örnek:
Yeni json türünü daha sonra veritabanı oluşturma sihirbazına dahil edeceğiz.
Bunu kim çözdü, lütfen böyle bir görevin uygulamasını gösterin.
Bu görev çerçevesinde, her iki durumda da (Terminal2'deki tabanı okurken ve Terminal1'deki tabana yazarken) işlem mekanizması aracılığıyla engellenmesi gerektiğini doğru anlıyor muyum?
Veritabanının güncellendiğini belirlemenin en ucuz yolu nedir?
Temelde yanlış. Siz 1 yazar, n okuyucu şemasına sahip dağıtık bir istemci-sunucu uygulamasını tarif ediyorsunuz. Bu tür sistemleri (ve genel olarak herhangi bir dağıtık sistemi) tasarlarken, veri organizasyonu ve bunlara erişim için kilitsiz yollar kullanarak kilitlerden kaçınmaya çalışmalısınız. Kullanılan teknoloji kilitleme olmadan yapmanıza izin vermiyorsa, o zaman belki de göreviniz için en iyi çözüm değildir. Ancak, diğer görevler için teknoloji harika olabilir.
Sizin durumunuzda, tam teşekküllü bir sunucu kurmak (bunu istemciyle aynı makinede yapabilirsiniz) ve mesaj kuyruğuna alıntılar yazmak, örneğin Kafka'ya bakmak daha iyidir. İstemci bu alıntıları gerekli dizinden okuyacaktır. Bu, kilitsiz bir veri erişim şemasıdır.
Yani veri alışverişinin dosyalar aracılığıyla olandan daha az olasılığı olduğu ortaya çıkıyor?
Kategorik olarak hayır. Dosyalar aracılığıyla paylaşım hiç de atomik değildir, bu nedenle hem okuyucu hem de yazar tarafında kilit gerektirir. Bu, çıkmaza girmenin ve bulunması zor ve anlaşılmaz hataları yakalamak için kaybolmanın en kesin yoludur.
Temelde yanlış. Siz 1 yazar, n okuyucu şemasına sahip dağıtık bir istemci-sunucu uygulamasını tarif ediyorsunuz. Bu tür sistemleri (ve genel olarak herhangi bir dağıtık sistemi) tasarlarken, veri organizasyonu ve bunlara erişim için kilitsiz yollar kullanarak kilitlerden kaçınmaya çalışmalısınız. Kullanılan teknoloji kilitleme olmadan yapmanıza izin vermiyorsa, o zaman belki de göreviniz için en iyi çözüm değildir. Ancak, diğer görevler için teknoloji harika olabilir.
Sizin durumunuzda, tam teşekküllü bir sunucu kurmak (bunu istemciyle aynı makinede yapabilirsiniz) ve mesaj kuyruğuna alıntılar yazmak, örneğin Kafka'ya bakmak daha iyidir. İstemci bu alıntıları gerekli dizinden okuyacaktır. Bu, kilitsiz bir veri erişim şemasıdır.
Kategorik olarak hayır. Dosyalar aracılığıyla paylaşım hiçbir şekilde atomik değildir, bu nedenle hem okuyucu hem de yazar tarafında kilitler gerektirir. Bu, bir çıkmaza girmenin ve görülmesi zor ve anlaşılmaz hataları yakalamakta kaybolmanın en kesin yoludur.
Bu kadar detaylı bir yanıt için teşekkürler! Ne yazık ki, o sırada hangi sorunu çözdüğümü tamamen unutmuşum. Bu yüzden konuyla ilgili düşüncelerimi paylaşamıyorum.
Beta 2840 kullanılabilir, lütfen deneyin.
Bu çözümle ilgili sorular
- Aynı sqlite veritabanını eşzamanlı olarak kullanan birden fazla EA ile ilgili herhangi bir sorun var mı?
- MT5 çökerse, bazı veriler kaybolabilir mi? Diske ne sıklıkla veri yazıyor?
İyi günler, sevgili geliştiriciler!
"DatabaseExport" fonksiyonu hiçbir şekilde çalışmak istemiyor...parametrelerde tablo adını belirttiğimde 5601 hatası veriyor (sorgu yürütme hatası, ancak sorguyu yürütmüyorum),
ve SQL sorgusu belirttiğimde, 4022 hatası veriyor ( program yürütme iptali), muhtemelen MQL işlevi içinde hata, kütüphanemdeki kodun bir parçası: