Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

node.js server


Emre333

Öne çıkan mesajlar

nosql filan kısa bir süre denedim. sonra huzur sql de diyip geri döndüm. şimdi en ufak şey için bile sql kullanıyorum çünkü bazen bir şey ekleyeceğin tutuyor o da düzgün çalışmıyor diğer db lerle. en azından sağlam sql bilmek lazım her türlü
Link to comment
Sosyal ağlarda paylaş

Huzur read/write segregation ve eventual consistency'de. Kur abi arkaya bi Postgres, koy önüne adam gibi bi API, yap write'ları onlara, bi şeyler kaydettikçe bi RabbitMQ'ya mesaj yap şunu yaptım diye, Akka gibi hayvani scale olabilen stateless adamlarla bu mesajları işleyip at bi Elasticsearch'e, read yapacağın durumlarda Elasticsearch'e, write yapmadan önce yapacağın business logic kontrollerinde de Postgres'e gel oh mis.

Eğer time series şeklinde yazabilirsen elinin altında raporlama tool'u da oldu. Vur Kibana'yı, baktır Elasticsearch'e, güzel dashboard'lar hazırla, oh mis. Hatta millet anlık olarak neler olup bittiğini görsün diye ofisin sağına soluna ekran koyup onları da bu dashboard'lara baktır bitti gitti. 1 sene öncesine giden 350 milyon kaydı 4 field üzerinden aggregate ettirip toplamsal karşılıklarını almak 35 ms çünkü.

Ha yok ben verilerimin asla bozulmamasını istiyorum diyosan ve gücün de yetiyosa bi adım daha öteye git, yapıştır CQRS ve event sourcing'i.
Link to comment
Sosyal ağlarda paylaş

madem sql dedik, sqlite3 ile ilgili bir problemim var şu an da.

doru düzgün bir documentation yok, olanlar da tamamen obsolote olmuş durumda yahut çalışmıyor.

serialization, commit,rollback filan nasıl oluyor node.js de bilen varsa küçük bir örnekle anlatabilir mi? stakoverflowdaki örnekler sorunumu çözmedi.
Link to comment
Sosyal ağlarda paylaş

Emre333 said:

sqlite da neden mi commit ihtiyacim var? bunu anlamadim


evet bu feature'lara ihtiyacın olmadığını düşünüyorum. özellikle sqlite kullanarak yarattığın bir sistemde. ayrïca sqlite, en iyi open source projelerden biridir. dokümantasyonunun kötü olduğunu sanmıyorum.

sql commit'e neden ihtiyacın olduğunu düşünüyorsun mesela? ne yapmaya çalışıyorsun?
Link to comment
Sosyal ağlarda paylaş

aceleten bir örnek yazdım burdan bakabilirsin. ki aşşağıda yazdığımdan daha komplike şeyler var.

router.post("/test",function(req,res) {


db.run("INSERT INTO table_test bla bla ",function(err){

if(err) res.send("error when inserting bla bla");

else{ // ilk inserti yaptın, successfull diyelim.

db.run("INSERT INTO table_test2 bla bla",function(err){

if(err) res.send("error when inserting bla bla 2 "); // burada fail yaparsa rollback lazım çünkü bir üsttekini database e kaydetmiş oluyor.

else

res.render("success.ejs",{ message: message});

});

}
});

});
Link to comment
Sosyal ağlarda paylaş

kardes yani sqllite transaction diye aratinca 2. link te direk ornek cikiyor

http://www.sqlitetutorial.net/sqlite-transaction/

hic mi denk gelmedi bir ornek? yani bunun cozumu icin bu kadar beklemis olamazsin sanirim.


BEGIN TRANSACTION;

UPDATE accounts
SET balance = balance - 1000
WHERE account_no = 100;

UPDATE accounts
SET balance = balance + 1000
WHERE account_no = 200;

INSERT INTO account_changes(account_no,flag,amount,changed_at)
values(100,'-',1000,datetime('now'));

INSERT INTO account_changes(account_no,flag,amount,changed_at)
values(200,'+',1000,datetime('now'));

COMMIT;

Link to comment
Sosyal ağlarda paylaş

anam babam query yazmak yerine knex de kullanabilirsin, yarın öbür gün SQLite'tan kurtulmak istersen orda da işine yarayabilir.


knex.transaction(function(t) {
return knex('table1')
.transacting(t)
.insert({ foo: 'bar' })
.then(function(result) {
return knex('table2').insert({ baz: 'quux' });
})
.then(t.commit)
.catch(t.rollback);
})
.then(function() {
res.render('success.ejs', { message: 'oldu' })
})
.catch(function(err) {
console.error(err);
res.send({ error: ... });
});

Link to comment
Sosyal ağlarda paylaş

reyou said:

kardes yani sqllite transaction diye aratinca 2. link te direk ornek cikiyor

http://www.sqlitetutorial.net/sqlite-transaction/

hic mi denk gelmedi bir ornek? yani bunun cozumu icin bu kadar beklemis olamazsin sanirim.



en sona bıraktım bu işi, en olmadı uzun yol bir çözüm var aklımda ama insert yavaşlıyor onda da.

küçük bir örnek veriyorum, test etmek için analiz_ismi NOT NULL UNIQUE olarak ayarladım. (aslında bu kısımda problem yok ama 3-4 tane insert olan kısımlar için transaction işini öğrenmem lazım)

baya da bir şey denedim ya beyin yandı resmen yahu.


router.post("/firmaAnalizleri",function(req,res){


db.beginTransaction(function(err,transaction){

for(var x=0; x
var optcount = x + 1;
var y=req.body['analiz'+optcount];


transaction.run("INSERT INTO FirmaAnaliz(firma_adi,analiz_ismi) VALUES (?,?)",req.body.firma,y,function(e){

if(e){

res.send("rollback here");

transaction.rollback(function(err) {
if (err) console.log("rollback failed"+ err);
console.log("rollback successfull");

});

}




});

}

transaction.commit(function(err) {
if (err) console.log("Commit failed"+ err);
console.log("Commit successfull");

});


});

});



bu da başka method, bu da çalışmadı. burda tek insert var gerçi 2 üstü olan yerlerde denemem lazım belki de ondan uğraşıyorum boşu boşuna.


router.post("/firmaAnalizleri",function(req,res){
db.serialize(function() {

db.run("BEGIN");

for(var x=0; x
var optcount = x + 1;
var y=req.body['analiz'+optcount];



db.run("INSERT INTO FirmaAnaliz(firma_adi,analiz_ismi) VALUES (?,?)",req.body.firma,y, function(err, row){

if (err){

console.log(err);

db.rollback;

res.send("Transaction cancelled");

}



});
}

db.run('commit');

res.send("Transaction succeed");
});
});

Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...