Biri vs veritabanı, çeşitli bağlantıları

2 Cevap php

Biz, veritabanından bir satırı seçer (bir webcoder kullanan harici API çağrıları) üzeriçindede çalışır ve daha sonra yapılan çalışmaya dayalı bir yeni kayıt ekler bu PHP uygulama var. Işlendikten kaç kayıtları kullanıcıyı bilgilendirir AJAX ekran var.

Veriler çoğunlukla metiçinde olduğunu, bu nedenle oldukça ağır veri bulunuyveya.

Bu süreç kayıt biçindelerce bir süre ile yapılır. Kullanıcı üzeriçindede çalışmaya başlamak içiçinde kaç kayıtları seçebilirsiçindeiz. Veriler, "done" olarak işvardırtlenmiş bir tablo, elde edilir. "NEREDE date1 VE DATE2 ARASINDA tarih" isteğe bağlı dışında hiçbir "WHERE" koşulu.

Biz bir yaklaşım daha iyi olduğu üzeriçindede bir tartışma vardı:

  • Bir kayıt seçmek, bunun üzeriçindede çalışmak ve yeni veri eklemek
  • Bellekte onlarla çalışmak ve tüm çalışma yapıldıktan sonra veritabanında onları eklemek, kayıtların hepsi seçiçindeiz.

Hangi yaklaşım PHP ve PostgreSQL ile bir web veyatamı içiçinde en verimli bir düşünüyveyasunuz? Neden?

2 Cevap

It really depends how much you care about your data (seriously):

Bu durumda güvenilirlik olsun mu? Süreç ölürse, sadece her şeyi yeniden işleme olabilir? Yoksa değil mi?

Uzak bir web servisini çağırmak Genellikle zaman, aynı veri öğesi için iki kez çağrıda olmak istemiyorum. Belki de (kredi kartı ücretleri gibi) yan etkileri vardır, ya da belki ücretsiz bir API değildir ...

Eğer olası bir yinelenen işleme umurumda değil Neyse, sonra toplu bir yaklaşım. Çok kolay, basit ve hızlı.

But if you do care about duplicate processing, daha sonra bunu:

  1. UPDATE tablo 1 kayıt SELECT (yani bir işlem kilitleyin)
  2. "İşleme" durumu ile UPDATE rekor
  3. Bu işlem Commit

Sonra

  1. Kayıt Süreci
  2. Kayıt içeriğini güncellemek, VE
  3. Hata durumunda "Komple" statü, ya da "Hata" SET.

Bunu kendisi üzerinde çalışan korkusu olmadan aynı anda bu kod çalıştırabilir. Sen aynı kayıt iki kez işleme alınmayacaktır güven olması mümkün olacak.

Onların durumu "İşleme", ve herhangi bir hata olacaktır çünkü aynı zamanda, "bunu yapmak değildi" herhangi kayıtları görmek mümkün olacak.

Veri ağır ve böylece yük uygulamayı düşünüyor ise, real time dependant iyi yaklaşım çoğu kesinlikle ihtiyaç duyulan veri alma ve geri koyarak sonra, hepsi üzerinde çalışıyoruz değildir.

Verimlilik konuşan, dili ne olursa olsun tek tek öğeleri açma ve tek tek üzerinde çalışıyorsanız, muhtemelen veritabanı bağlantısını kapatma olmasıdır. Bu öğelerin 1000 varsa, açın ve bağlantıları 1000 yakın anlamına gelir. Tüm öğeleri dönen ve onlara çalışma yükü daha ağır basar, bu kadar üzerinde havai.