DatasetAdapter ve memtable

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

DatasetAdapter ve memtable

Mesaj gönderen varyemez »

Bir restapi servisimiz var diyelim. Normal şekilde servisten gelenleri memtable a aktarıyorum , arada bir de RESTResponseDataSetAdapter1 var.
Şimdi gelelim soruma: Ben istiyorum ki requesti her execute ettiğimde gelen kayıtlar memtable a append yapsın. Tablo boşalmasın yani her requestte
MetaMergeMode diye bir property gördüm adapterde , add, merge , update gibi seçenekleri var amma o amaçla mı kullanılıyor bilemedim. Kısacası memtable ben istersem temizlensin.. Var mı kolay bir yolu?
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: DatasetAdapter ve memtable

Mesaj gönderen ertank »

Merhaba,

Delphi DataSnap uygulamalarını çok bilmiyorum. Pek tercih etmiyorum. Hantal ve çok sorunlu oluyorlar. Ancak çok küçük çaplı işler için olabilir. O zaman dahi MARS Curiosity kullanmayı tercih ederim.

Kısıtlı datasnap bilgime istinaden; Memtable sunucu üzerinde diye anladım. REST sistemlerde gelen her istek ayrı bir thread içinde çalışır. Dolayısıyla her isteğin farklı Memtable ile çalışıyor olma ihitmali yüksek.

MetaMerge isim anlamı olarak daha çok metadata hissi veriyor. Kolon tanımları gibi.

Klasik veritabanı tablosu kullanarak yapmanız daha kolay olacaktır. Gereksiz kayıtları işlem sonunda/başında silebilirsiniz. Hassas bilgileri şifreli kayıt edebilirsiniz (SQLite3 veya manuel şifrelenmiş veri kaydı).


Eğer MemoryTable istemci üzerinde ise iki MemoryTable kullanarak istediğinizi yapabilirsiniz. Her veri geldiğinde diğeri üzerine kod ile kayıtları ekleyerek çözebilirsiniz.
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: DatasetAdapter ve memtable

Mesaj gönderen varyemez »

Delphi nin Rest Debugger Tools ile kullandığımız standard Restclient , Restrequest , RestREsponse var biliyorsunuz. Servisten gelen JSON Restresponse içine alınıyor. Json içindeki dataset olabilecek bilgi de memtable a aktarılıyor. Zaten ardından memtable içindekileri sql tabloya aktarıyorum . bu da ikinci bir iş ve hız kaybına sebeboluyor. yüksek rakamlı kayıtları bölerek aldığımız için arka arkaya bir çok request/response oluşuyor ve her seferinde memtable boşaltılıyor. benim istediğim gelen json daki dataset memtable a boşaltılmadan append edilsin. en son veritabanına aktarayım..
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: DatasetAdapter ve memtable

Mesaj gönderen ertank »

Yüksek adetli kayıt için veritabanı sistemine göre "batch insert" tavsiye ederim. Performansı çok arttırır.
FireDAC, UniDAC "batch insert" destekler.

Aşağıdaki sayfa UniDAC tarafından hazırlanmış. Batch Insert destekleyen veritabanları ile çeşitli performans testi örnekleri ve kodlama tavsiyeleri içeriyor.
https://docs.devart.com/unidac/batchops.htm

Memory table kullanmaktansa bu şekilde bir çözüme gitmeniz bence daha sağlıklı olacaktır.

Test etmek gerekir. Ancak inanıyorum ki REST sunucunuzu MARS Curiosity ile yeniden geliştirmeniz dahi size performans avantajı sağlayacaktır. Daha yüksek performans istiyor iseniz mORMot2 kullanabilirsiniz. mORMot zaten çok hızlıydı. mORMot2 ondan da hızlı hale geldi (testlerde 1milyon kayıt/saniye hızlarına ulaştığı oluyor Bakınız: https://blog.synopse.info/?post/2022/02 ... erformance ). Ancak mORMot authentication anlamında çok pratik değildir. MARS bu anlamda daha esnektir.
Cevapla