Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
XML Json dosyaları ile Çalışma
#1
online satış sitelerininden, b2b yazılımlarından gelen çoğunlukla xml dosyaları var ve bazılarında da json, bir kaç örneğe baktım birinde 10K birinde 20K kadar ürün çeşidi var 30-35 kadar da fieldı var bu xmllerin hergün güncellenmesi gerekiyor.
Sorular
1) Bu xml dosyaları hergün download edildikten sonra insert or update işlemini seçtiğim birincil anahtar alandan en hızlı şekilde nasıl gerçekleştirebilirim.
2) Hergün X saate şu dosyayı çek yükle Y saate şu dosyayı çek yükle işlemini nasıl yapmamı tavsiye edersiniz
3) xml dosyasını önce memorytabla a (fdmemtable,kbmmemtable) yükleyip daha sonra veritabanına yazmak bana hız kazandırırmı

postgresql kullanmayı düşünüyorum.

“Do. Or do not. There is no try.”
Cevapla
#2
Merhabalar,

Öncelikle b2b sistemleri hakkındaki bildiklerimi ve tavsiyelerimi söylemem gerekirse;

1) Yaygın b2b sistemlerinin veri alma-verme işlemleri kendi belirledikleri zaman ve sıklıkta gerçekleşiyor.
2) İstedikleri xml şablonlarına göre ürün node yapısını oluşturmanız isteniliyor.
3) Sipariş gibi b2b sistemlerden toplanacak bilgileri onların xml servislerinden alabiliyorsunuz.
4) Kategori yapısı her sistem için farklı işliyor. Tasarlayacağınız yapılarda B2b sistemi ve karşılığını (key-value olarak) tutmalısınız.
5) Ortaya bir havuz veritabanı oluşturup verileri orada muhafaza edin. Saat bazlı olarak yada günde x kez indir ve/veya yükle şeklinde.

İyi çalışmalar.
Cevapla
#3
(30-09-2017, Saat: 10:22)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Merhabalar,

Öncelikle b2b sistemleri hakkındaki bildiklerimi ve tavsiyelerimi söylemem gerekirse;

1) Yaygın b2b sistemlerinin veri alma-verme işlemleri kendi belirledikleri zaman ve sıklıkta gerçekleşiyor.
2) İstedikleri xml şablonlarına göre ürün node yapısını oluşturmanız isteniliyor.
3) Sipariş gibi b2b sistemlerden toplanacak bilgileri onların xml servislerinden alabiliyorsunuz.
4) Kategori yapısı her sistem için farklı işliyor. Tasarlayacağınız yapılarda B2b sistemi ve karşılığını (key-value olarak) tutmalısınız.
5) Ortaya bir havuz veritabanı oluşturup verileri orada muhafaza edin. Saat bazlı olarak yada günde x kez indir ve/veya yükle şeklinde.

İyi çalışmalar.

Teşekkür ederim xml parse işlemi ve insert or update işlemi için de önerilerinizi bekliyorum.

“Do. Or do not. There is no try.”
Cevapla
#4
(30-09-2017, Saat: 10:28)masteryoda Adlı Kullanıcıdan Alıntı:
(30-09-2017, Saat: 10:22)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Merhabalar,

Öncelikle b2b sistemleri hakkındaki bildiklerimi ve tavsiyelerimi söylemem gerekirse;

1) Yaygın b2b sistemlerinin veri alma-verme işlemleri kendi belirledikleri zaman ve sıklıkta gerçekleşiyor.
2) İstedikleri xml şablonlarına göre ürün node yapısını oluşturmanız isteniliyor.
3) Sipariş gibi b2b sistemlerden toplanacak bilgileri onların xml servislerinden alabiliyorsunuz.
4) Kategori yapısı her sistem için farklı işliyor. Tasarlayacağınız yapılarda B2b sistemi ve karşılığını (key-value olarak) tutmalısınız.
5) Ortaya bir havuz veritabanı oluşturup verileri orada muhafaza edin. Saat bazlı olarak yada günde x kez indir ve/veya yükle şeklinde.

İyi çalışmalar.

Teşekkür ederim xml parse işlemi ve insert or update işlemi için de önerilerinizi bekliyorum.

Merhaba,
Manüel parse yerine, XML Importer aracı yardımıyla, her XML için ayrı bir parser sınıfı oluşturabilirsiniz.  (XML yapısı değiştiğinde sınıfı yeniden oluşturursunuz.)
Cevapla
#5
(30-09-2017, Saat: 10:43)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Manüel parse yerine, XML Importer aracı yardımıyla, her XML için ayrı bir parser sınıfı oluşturabilirsiniz.  (XML yapısı değiştiğinde sınıfı yeniden oluşturursunuz.)

C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\xmlmapper.exe aracını çalıştırdığımda Access violation hatası veriyor.
bahsetiğiniz farklı bir araçmı

“Do. Or do not. There is no try.”
Cevapla
#6
(30-09-2017, Saat: 11:04)masteryoda Adlı Kullanıcıdan Alıntı:
(30-09-2017, Saat: 10:43)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Manüel parse yerine, XML Importer aracı yardımıyla, her XML için ayrı bir parser sınıfı oluşturabilirsiniz.  (XML yapısı değiştiğinde sınıfı yeniden oluşturursunuz.)

C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\xmlmapper.exe aracını çalıştırdığımda Access violation hatası veriyor.
bahsetiğiniz farklı bir araçmı

Çok çok eskiden Delphi'nin XML Mapper'ı vardı. Sonradan biraz daha kullanışlı bir araç olan XML Importer'ı çıkardı. Şimdiki sürümü ise; XML Data Binding Wizard
Kullandıktan sonra makale niteliğinde bir anlatımınız olursa sevinirim. Smile  (Bilgiyi bilgi karşılığında satmış oldum.)
Cevapla
#7
10K veya 20K ürün olan dosyadaki tüm kayıtlar değişiyor mu ?
Eğer tüm kayıtlar değişmiyorsa, sadece değişenleri tespit ettikten sonra, sadece değişen kayıtar için insert/update/delete vs SQL kodu üretip güncellenebilir.
Değişen kayıtları tespit edip karşılaştırma yapmak için, veritabanında ki tabloyu sorgulamak yerine, belki internetteki dosya ile diskteki dosya hafızaya alınıp karşılaştırılabilir.
Tabi size uygun mu bilmiyorum.
WWW
Cevapla
#8
(30-09-2017, Saat: 12:56)ismailkocacan Adlı Kullanıcıdan Alıntı: 10K veya 20K ürün olan dosyadaki tüm kayıtlar değişiyor mu ?
Eğer tüm kayıtlar değişmiyorsa, sadece değişenleri tespit ettikten sonra, sadece değişen kayıtar için insert/update/delete vs SQL kodu üretip güncellenebilir.
Değişen kayıtları tespit edip karşılaştırma yapmak için, veritabanında ki tabloyu sorgulamak yerine, belki internetteki dosya ile diskteki dosya hafızaya alınıp karşılaştırılabilir.
Tabi size uygun mu bilmiyorum.

Günlük olarak örnek vermek gerekirse
1 gün önce alınan xml ile bugun ki xml arasında :
  20 yeni ürün kaydı
200 adet güncelleme
  15   fiyat değişikliği
  45  resim_url alanında değişiklik
 
gibi oluyor bazende daha fazla
aklımdaki fikir daha önce benzer mantıkla kullandığım stox_xml tablosuna xml  yüklemek değişen alanları trigerla stok tablosunda güncelleme yada yeni kayıt olarak eklemek

if (new.kalanmiktar IS DISTINCT FROM old.kalanmiktar) then
şeklinde

amacım buradan stok_xml tablosuna insert or update işlemini en hızlı şekilde yaptırmak o tabloda değişiklik olduğunda trigerlar stok tablomda değişikliği yapacak zaten quickimport componenti var xml i açamadı ama excel olarak istediğim işlemi yapıyor tek sorun yavaş olması birde xml dosyasını manuel excel dosyasına çevirmem.

“Do. Or do not. There is no try.”
Cevapla
#9
JSONArray, verisini de hiç kodla uğraşmadan yapayım, derseniz;  TFDJSONDataSetsReader (DataSet'i JSONArray'a dönüştürmek için de TFDJSONDataSetsWriter) sınıfı biçilmiş kaftandır.
Örnek uygulamalarda TFDJSONDataSetsReader, genellikle TFDMemTable'a aktarılarak kullanılıyor.
Örnek: Tutorial:_Using_a_REST_DataSnap_Server_with_an_Application_and_FireDAC
Cevapla
#10
(30-09-2017, Saat: 22:32)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: JSONArray, verisini de hiç kodla uğraşmadan yapayım, derseniz;  TFDJSONDataSetsReader (DataSet'i JSONArray'a dönüştürmek için de TFDJSONDataSetsWriter) sınıfı biçilmiş kaftandır.
Örnek uygulamalarda TFDJSONDataSetsReader, genellikle TFDMemTable'a aktarılarak kullanılıyor.
Örnek: Tutorial:_Using_a_REST_DataSnap_Server_with_an_Application_and_FireDAC

Ustad slmlar, bu bahsedilen islemler xml binding ile yapilan islemlerle aynimi ? yoksa farklimidir.  Pro versiyonunda xml binding bulunmuyor
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  JSON DataSet Serialize for Unidac Halil Han BADEM 2 498 08-11-2023, Saat: 16:53
Son Yorum: Halil Han BADEM
  JSON Verilerini Veritabanına Kaydetmek kajmerantime 6 744 03-11-2023, Saat: 15:05
Son Yorum: kajmerantime
  JSon Format m_ekici 7 931 02-10-2023, Saat: 09:24
Son Yorum: yhackup
  4 İşlem - PDF Çalışma Sayfası Hazırlama Frrst 0 236 25-08-2023, Saat: 09:58
Son Yorum: Frrst
  RESTRequest Nesnesinde Body içinde JSON Gönderme Hk. pro_imaj 2 592 04-06-2023, Saat: 00:47
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi