Konuyu Paylaş : facebook gplus twitter

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.
{ talk is cheap show me the code. }
Cevapla
#3
(30-09-2017, Saat: 10:22)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar,

Ö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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(30-09-2017, Saat: 10:22)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar,

Ö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.)
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
(30-09-2017, Saat: 10:43)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(30-09-2017, Saat: 10:43)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
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; Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kullandıktan sonra makale niteliğinde bir anlatımınız olursa sevinirim. Smile  (Bilgiyi bilgi karşılığında satmış oldum.)
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
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.
My name is nobody.
WWW
Cevapla
#8
(30-09-2017, Saat: 12:56)ismailkocacan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol10K 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;  Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol (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: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi Json Parse yhackup 8 193 27-06-2018, Saat: 02:15
Son Yorum: canbir
  delphi ile json parseleme arsl01 25 715 26-06-2018, Saat: 15:15
Son Yorum: arsl01
  webden json okuma hatası arsl01 3 103 25-06-2018, Saat: 15:17
Son Yorum: arsl01
  JSON Veri Okuma elixir84 12 410 12-06-2018, Saat: 13:50
Son Yorum: elixir84
  haftalık çalışma takvimi belirleme klavye 6 170 31-05-2018, Saat: 12:18
Son Yorum: klavye



Konuyu Okuyanlar: 1 Ziyaretçi