tek güncelleme ile olmasi güzel hocam buradaki sikinti su olur. bir eleman listeden silindiginde onun indexini de db'de silinmesi gerek ya da yeni eleman eklendiginde onun da listeye eklenmesi gerek. Ancak yine de czülür bir sey. Cünkü kolonun icindeki degerlerle ilgilenmeden direk tüm field'i güncelleyecegim icin id varmis yokmus nem arzetmiyor. Mantikli bu czüm sagol hocam :) baska alternatifler var mi? Belki daha efektif yollar olabilir? :) Ve üstteki sistemin hangi olasi sorunlari olabilir? Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

Index için SQL de ayrı bir yer tutmayı düşündün mü? rnek: 10 eleman için bir index array i olsun: A , bu array in index i gerçek index i belirtiyor olsun. abcdefghij buradaki karakterleri elemanlara point eden ifadeler olarak düşün. Kullanici j yi 3. e almak istesin: abjcdefghi olur. Sonra sadece bu array i değiştirebilirsin veritabanında. Yukarıda yazılmış zaten. Fatih54 tarafından 04/May/20 02:41 tarihinde düzenlenmiştir

unbalanced bunu yazdı tek güncelleme ile olmasi güzel hocam buradaki sikinti su olur. bir eleman listeden silindiginde onun indexini de db'de silinmesi gerek ya da yeni eleman eklendiginde onun da listeye eklenmesi gerek. Ancak yine de czülür bir sey. Cünkü kolonun icindeki degerlerle ilgilenmeden direk tüm field'i güncelleyecegim icin id varmis yokmus nem arzetmiyor. Mantikli bu czüm sagol hocam :) baska alternatifler var mi? Belki daha efektif yollar olabilir? :) Ve üstteki sistemin hangi olasi sorunlari olabilir? Eğer DB deki girdilerin de bu array e gre update edilmesi gerekiyorsa; "Levenshtein Distance": Bir string den başka bir string elde edebilmek için en az yapılacak değişimi ifade eder. Levenshtein algoritmasını uyguladığında olan step lere gre index ler değiştirilebilir. Eğer son durumda boşluklar olursa db ye dummy girdiler eklenebilir hocam bu kadar neden karistirmaya gerek var yoksa ben mi kaciriyorum bir seyleri... Ben clienta listeyi yollayacagim + string seklinde siralamasini (1,2,3,4,5,6,7) user bu listeyle oynasin ve güncelle butonuna bastiginda ben client tarafinda yeni siralamayi alacagim bakacagim ki 1,2,3,4,5,6,7 degil artik demek ki degismis.. O halde yeni siralamayi direk 1,2,3,4,5,6,7 nin oldugu field ile degisecegim.. Tablo syle olacak. 1- tablo Id Name CustomerId 1 Item1 1 2 Item2 1 2- tablo Id CustomerId Order 1 1 1,2,3,4,5,6,7 eger customer1 siralamasini degistirdiye update -> order='6,5,4,3' where customerID=1 gibi.. clientta gstermek istedigimde select from tablo1 where customerID = 1 ve ikinci sorgu select order from tablo2 where customerId=1 daha sonra for dngüsüyle var orders = tablo2Columnstr. split ; for(i=0; i< orders. length;i++) yaz (tablo1Items[order ]); bu sekilde bir sorun gzükmüyor Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

hocam indexler neden artsın sadece yerlerini değiştirdiğin iki eleman indexlerini takas etmeyecek mi yoksa gece gece benim kafam almadı mı? sonradan gelen edit: kafam almamış sanırım :) Bonibon tarafından 04/May/20 02:30 tarihinde düzenlenmiştir om mani padme hum

Normalde yaptığım yntem; table_positions diye bir tablo açıp, sıralama bittikten sonra o tabloyu komple temizleyip, tüm veriyi tekrar insert etmek. Bendeki veri sıralaması 100'ler 1000'leri bulmadığı için pek de sorun olmuyordu. Diğer nerim; tabloda ayrı ayrı pozisyonları row şeklinde tutmak yerine json formatında tek row'da saklayabilirsin. Sadece o row'u update edersin. mysql 5.7'de gelmişti sanırım json data tipi. Yani veriyi array object şeklinde store edeceksin mysql'de. Bunun da en iyi yolu bildiğim kadarıyla json. since 2005 // tbt

@MhmdAlmz hocam nasil 1 delete 1 insert oluyor onu anlamadim? Birden fazla elemanin varsa sira degistiginde hepsini silip sonra tekrar eklemen gerekiyor. Tek delete ve insert ile olacak is degil. Benim düsündügüm her ne kadar tehlikeli grünse de suan en efektif yol bu grünüyor. Tek bir update ile is czülecek. siralama string seklinde gelecek client'a, client bu stringi array yapip yeni siralamayi ayarlayacak @sLeymN hocam olay belli bir düzene gre siralama degil, kullanici kafasina gre siralayabilir bu listeyi. Siraladiginda da ben o sekilde kaydedip, tekrar kullanici actiginda o sekilde gstermem gerek. Yani jquery ile yapilacak bir siralama yok, bu siralama kullaniciya bagli. Ister 1. geyi ortaya alir, ister 2. geyi en sona alir.. Buradaki siralama da nem arzediyor. Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

tek güncelleme ile olmasi güzel hocam buradaki sikinti su olur. bir eleman listeden silindiginde onun indexini de db'de silinmesi gerek ya da yeni eleman eklendiginde onun da listeye eklenmesi gerek. Ancak yine de czülür bir sey. Cünkü kolonun icindeki degerlerle ilgilenmeden direk tüm field'i güncelleyecegim icin id varmis yokmus nem arzetmiyor. Mantikli bu czüm sagol hocam :) baska alternatifler var mi? Belki daha efektif yollar olabilir? :) Ve üstteki sistemin hangi olasi sorunlari olabilir? Eğer DB deki girdilerin de bu array e gre update edilmesi gerekiyorsa; "Levenshtein Distance": Bir string den başka bir string elde edebilmek için en az yapılacak değişimi ifade eder. Levenshtein algoritmasını uyguladığında olan step lere gre index ler değiştirilebilir. Eğer son durumda boşluklar olursa db ye dummy girdiler eklenebilir

eh madem yle küçük bi fikir vereyim listeler ayrı bir şekilde array olarak tutulsun elemanların indexleri ya da idleri sabit kalsın liste sadece güncellensin yani tek bir array güncelleyeceksin ve arrayin index sıfırından başlayarak yazacak bylece elemanları tek tek güncellemeyeceksin abstraction layer eklemeye benzeyecek iş iki olay arasına liste den liste e gibi Bonibon tarafından 04/May/20 02:34 tarihinde düzenlenmiştir om mani padme hum

jquery ile ilgili tablonun listenin neyse boksa işte elemanlarına select attığında zaten sana yukarıdan aşşağıya doğru sıralı son halini verecektir abi neden bu kadar kasıyorsun ki? Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.

aynen hocam dediğini kastettim on güncelleme olacağına tek güncelleme olacak. artık error handling kısmını da ona gre ayarlaman lazım tabi ama işte yok mevcut olmayan id listeye eklenmiş falan gibi bir de delete işlemlerinde listeyi güncelleme işi de var üf gece gece taşaklarım kamaştı düşünürken. iyi ki yazılımcı falan değilim Bonibon tarafından 04/May/20 02:45 tarihinde düzenlenmiştir om mani padme hum

order diye bir column eklesen? 29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.

sıra gibi ayrı bir tablo olsa sonra kaydet dediğinde mevcuttakileri silip yeni listeyi sırayla yeniden kaydetsen olmazmı Büdüt: dediğim konuşulmuş zaten wert tarafından 04/May/20 04:37 tarihinde düzenlenmiştir |sadece aptalların başarısı ders notu ile lçülür|

edit olarak eklediğim şeyler haricinde aynı itemler farklı listelerde grünecekse bir kaç problem daha grünüyor gibi ufukta. om mani padme hum

Normalde yaptığım yntem; table_positions diye bir tablo açıp, sıralama bittikten sonra o tabloyu komple temizleyip, tüm veriyi tekrar insert etmek. Bendeki veri sıralaması 100'ler 1000'leri bulmadığı için pek de sorun olmuyordu. Diğer nerim; tabloda ayrı ayrı pozisyonları row şeklinde tutmak yerine json formatında tek row'da saklayabilirsin. Sadece o row'u update edersin. mysql 5.7'de gelmişti sanırım json data tipi. Yani veriyi array object şeklinde store edeceksin mysql'de. Bunun da en iyi yolu bildiğim kadarıyla json. hocam her kullanicinin birden fazla listesi olacak ve her listede 100 e yakin eleman olacak. O yüzden ekle-sil mantikli degil.. Evet json sekilde tutacagim ama mysql degil de nosql'de yapacagim. Cünkü bir sürü verinin sürekli gidip gelmesi olacak . O yüzden nosql mantikli. Siralamalayi tek bir kolonda indexleri yanyana yazarak czebilecegim gibi grünüyor. Tek bir kolon güncellenecek.. Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

edit: herlocksholmes tarafından 04/May/20 05:13 tarihinde düzenlenmiştir

DELETE from SiparisSiraTablo WHERE KuryeNumarasi=5 INSERT INTO SiparisSiraTablo VALUES (1,13,5), (2,12,5), (3,14,5), (4,11,5) 2 sorgu çalıştırmış olmuyor muyuz :/ Tabi baktığımız zaman bulk insert ama tek sorgu. Anladim hocam dedigini simdi.. her ne kadar bulk desen de bu sorgunun yükü fazladir. cünkü bir sürü item siliyorsun ve ekliyorsun. Bulk insert yaptirsan da yine bir sürü kayit ekliyorsun ve her siralama degistiginde bu islemi yaptirmak mantikli degil hele ki yüzlerde kullanicin olursa ve her kullanici icin 100 tane kaydin silinip tekrar eklendigini düsünürsen DB ye ekstra yük.. ontedi bunu yazdı Log tablosu gibi düşün. Mesela, şu sırada ilk kaydı girdik diyelim. nesne5, sirano = 1 nesne6, sirano = 2 nesne1, sirano = 3 nesne3, sirano = 4 nesne4, sirano = 5 nesne2, sirano = 6 daha sonra bir tane yer değiştirdi. O zaman mevcut kayıtları delete yapıp, yeni sıranlamışları insert et. Ha bundaki "nceki kayıtları delete yapmam performans sorunu çıkarır diyorsan", o zaman hiç eski kayıtları delete etme, yeni eklnenen kayıtlar için farklı bir sıra numarası ver, bu farklisirano ise diğer girilen değer ncekilerden büyük olsun gibi. Bylece sen kayıtları çağıracağın zaman farklisirano en büyük olanı çağırmış olursun. farklisirano mantigi ilgincmis ancak yine de 100 tane geyi sürekli insert etmek mantikli degil hocam. Hele silmezsen sürekli yeniler eklenecek ve tablo-db sisecek.. Düsün 1000 tane kullanicin var ve her birinin 100 er itemlik 5 listesi var, yani kullanici basina 500 item var ve 1'000 kullanici icin 500'000 item oluyor... 1 yil icinde bu adamlar kac kere tablo siralamasini degistirecek.. Ve her degistirdiginde ekstra 100 eleman artacak.. Ayrica tablo sistikce daha da yavaslayacak.. o yüzden bu siralama olayini ayri bir tabloda tek bir field de tutmak (yanyana yazili 100 numara) siralama degistiriginde icerigini okumadan yeni siralamayi yine virgülle ayirarak yazip update etmek daha az maliyetli olur Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

Log tablosu gibi düşün. Mesela, şu sırada ilk kaydı girdik diyelim. nesne5, sirano = 1 nesne6, sirano = 2 nesne1, sirano = 3 nesne3, sirano = 4 nesne4, sirano = 5 nesne2, sirano = 6 daha sonra bir tane yer değiştirdi. O zaman mevcut kayıtları delete yapıp, yeni sıranlamışları insert et. Ha bundaki "nceki kayıtları delete yapmam performans sorunu çıkarır diyorsan", o zaman hiç eski kayıtları delete etme, yeni eklnenen kayıtlar için farklı bir sıra numarası ver, bu farklisirano ise diğer girilen değer ncekilerden büyük olsun gibi. Bylece sen kayıtları çağıracağın zaman farklisirano en büyük olanı çağırmış olursun. Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.

tam demek istedigini anlamadim ama sylediklerinden syle bir sey aklima geldi yeni siralamayi al string olarak tabloda bir kolona yaz.. Ve sadece bu kolondaki tüm degerler degisecek. yani o kolonda 1,2,3,4,5,6,7,8,9,10 seklindeydi, adam siralamayi yapinca yeni siralama 10,4,3,2,1,6,5,7,8,9 seklinde oldu diyelim ve db ye aynen bu sekilde kaydedeyim. Veriyi okumaya gelince, listeyi yollayayim bir de bu siralamayi string olarak yollayayim ve virgülle split edip burdaki indexe gre elemanlari gstereyim? Bu sekil degilse, rnek verir misin? benim icin nemli olan kisim, DB'deki güncelleme hocam. Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

Selamlar Bir problemle karsilastim, ancak düsündügüm yolun maliyeti fazla o yüzden belki bir buradan fikir gelir amaciyla sormak istiyorum. Asagidaki sekilde bir liste düsünün.. Bu listede elemanlar 1 den 10 a kadar düzenli sekilde siralanmis ve veritabanina kaydedilmis olsun.. Ancak kullanicinin bu siralamayi degistirme sansi var. Yani 10. elemani tutup 1. elemanin yerine koymak isteyebilir ve bunu bu sekilde kaydetmek isteyebilir. Bu durumda, 1. elemandan itibaren tüm elemanlarin siralama indexi 1 artacak.. Yani 10 tane elemanin siralama indexini database'de update etmem gerekecek.. Durum daha da karmasiklasabilir. Kullanici birden fazla genin yerini degistirebilir ve toplam 10 eleman degil de 100 tane eleman olabilir Bu durumda en efektif sekilde nasil yapilabilinir? Ek bilgiler: normalde DB olarak mysql kullaniyorum ancak bu liste olayinda bir nosql czümü kullanmayi düsünüyorum .. Aklimda syle bir sey var, bu listeyi serilize edip json olarak tümden kaydetmek ve eskisini silmek.. 100 tane index degerini update etmekten daha iyidir diye düsünüyorum .. client tarafi vue , server tarafi asp. net core . Siralama olayini client tarafinda czüp server'a o sekilde gndermek daha mantikli geliyor bana. Daha efektif bir yol ariyorum. Fikri olan? Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

Benim de projemde bu tür bir şey var. Siparişlerin sırasını operasyon belirliyor. Bunun için şu yntemi izliyorum. Siparişler SiparisId KuryeNumarasi 11 5 12 5 13 5 14 5 SiparisSiraTablo diyelim Sira SiparisId KuryeNumarasi 1 13 5 2 12 5 3 14 5 4 11 5 Şeklinde. Sıra değişince değil de benim başka bir tetikleyicim var. Adam sırayı kople değiştirip tamam yeni sıra bu dediğinde başka kuryenin üstüne muhakkak tıklıyor. Tam o arada bende güncelliyorum. Sıra tablosuna delete atıp daha sonra yeni sırayı insert ediyorum. Select sorgusu atarken de bunu joinleyip Sıraya gre OrderBy çekiyorum. Bunun avantajı şu oluyor. Update sorgusundan daha performanslı oluyor. 1 Delete 1 de Insert methodu çalıştırıyorum. Bunu da Transaction ile yaptığım için bir problem olsa bile sıkıntı eski halini alıyor hemde hızlı oluyor. 1,2,3,4,5,6,7 bu olay kafama yatmıyor DB katmanında bunu sıralamak için garip gurup sorgular yazman gerekecek. Evet Client da bunu sıralarsın ve sıralama yükünü Client'a taşırsın ama yarın bürgün DB için de byle bir şeye ihtiyaç duyar mısın bilemiyorum. MhmdAlmz tarafından 04/May/20 09:46 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

@MhmdAlmz hocam nasil 1 delete 1 insert oluyor onu anlamadim? Birden fazla elemanin varsa sira degistiginde hepsini silip sonra tekrar eklemen gerekiyor. Tek delete ve insert ile olacak is degil. Benim düsündügüm her ne kadar tehlikeli grünse de suan en efektif yol bu grünüyor. Tek bir update ile is czülecek. siralama string seklinde gelecek client'a, client bu stringi array yapip yeni siralamayi ayarlayacak @sLeymN hocam olay belli bir düzene gre siralama degil, kullanici kafasina gre siralayabilir bu listeyi. Siraladiginda da ben o sekilde kaydedip, tekrar kullanici actiginda o sekilde gstermem gerek. Yani jquery ile yapilacak bir siralama yok, bu siralama kullaniciya bagli. Ister 1. geyi ortaya alir, ister 2. geyi en sona alir.. Buradaki siralama da nem arzediyor. DELETE from SiparisSiraTablo WHERE KuryeNumarasi=5 INSERT INTO SiparisSiraTablo VALUES (1,13,5), (2,12,5), (3,14,5), (4,11,5) 2 sorgu çalıştırmış olmuyor muyuz :/ Tabi baktığımız zaman bulk insert ama tek sorgu. Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

hocam isim ve siralama syle olsun Name Index Item1 1 Item2 2 Item3 3 Item4 4 Item5 5 Simdi ben Item5'i Item1'in yerine koyuyorum ama replace degil yani yeni siralama syle olacak Item5 Item1 Item2 Item3 Item4 haliyle de index siralamasi da degisiyor. Item5 in indexi 5 idi ama simdi 1 olmasi lazim. Item1'in indexi 1 idi simdi 2 olmasi lazim, item2'nin indexi 2ydi simdi 3 oldu.. Byle devam ediyor ve grdügün gibi her index degismis oldu. Bir de coklu degisim olursa Item5, Item3, Item1, Item4, Item2 gibi degisimler.. Bir de bunun 100 elemanli bir listede oldugunu düsün.. byle bir problemi üniversitede grmüstük ama nasil czdük hic aklimda degil.. Biraz arastirdim birisi syle bir tavsiyede bulunmus https://en. wikipedia. org/wiki/Doubly_linked_list Bu olayi hatirlar gibiyim ama hala net degil :) Aslinda bu olay biraz daha siralama ile ilgili ama benim istedigim kaydetmek ve yeni sirali sekilde gstermek unbalanced tarafından 04/May/20 02:29 tarihinde düzenlenmiştir Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

edit olarak eklediğim şeyler haricinde aynı itemler farklı listelerde grünecekse bir kaç problem daha grünüyor gibi ufukta. hocam nemi yok o isin.. mesela sira 1,2,3,4,5,6,7 diye kayitli.. adam bunu 7,5,2,1,6 yapti.. (3. elemani sildi).. beni ilgilendirmez bu, elimde benim zaten 7,5,2,1,6 verisi var.. Ben sadece 1,2,4,5,6,7 yerine 7,5,2,1,6 yazacagim.. Yani silinenle ilgilenmeyecegim.. . Yani siralama bir kere degistigi anda ben her durumda o fieldi, listedeki son duruma gre güncelleyecegim.. Problem olarak grmedim bunu ya da anlamadim demek istedigini? @yolbulucu hocam ikinci mesajimdaki Index isimli kolon zaten order column.. Iste onun siralamasi sikintili.. Tüm recordlari update etmek gerekiyor o durumda.. Ya da demek istedigin baska bir sey mi? Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

sıra gibi ayrı bir tablo olsa sonra kaydet dediğinde mevcuttakileri silip yeni listeyi sırayla yeniden kaydetsen olmazmı Evet hocam onu konuştuk zaten ve bu sıra olayı tek Field de olacak. Virgülle ayrılmış şekilde. Yaklaşık 250-300 karakterlik bir string veri türü olacak. Sıralama buradan gelecek ve o indeksler de aslında diğer tablodaki idler olacak biraz düşündüğümde benim tablom daha karışık aslında parent child olayı var ama o kısma girmiyorum, onu hallettim. sadece en efektif nasıl bu sıralamayı tutarım diye düşünüyordum. Sağolsun @bonanzi güzel fikir verdi :) Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.