folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Dinamik Siralama Ve Efektif Sekilde Veritabanina Kaydetme



Dinamik Siralama Ve Efektif Sekilde Veritabanina Kaydetme

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    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 (kendisi de ekleyebilir cünkü listeye)

    Bu durumda en efektif sekilde nasil yapilabilinir?

    Ek bilgiler: normalde DB olarak mysql kullaniyorum ancak bu liste olayinda bir nosql cözümü kullanmayi düsünüyorum (mongodb)..

    Aklimda söyle 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 (ki bu degerler ardisik index olmayabilir eger birden fazla elemanin yeri degismisse)..

    client tarafi vue (js kodu yazabilirim), server tarafi asp.net core (c#).

    Siralama olayini client tarafinda cözüp server'a o sekilde göndermek daha mantikli geliyor bana.

    Daha efektif bir yol ariyorum. Fikri olan?


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Bonibon
    Bonibon's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    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
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam isim ve siralama söyle 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 söyle 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.. Böyle devam ediyor ve gördü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..

    böyle bir problemi üniversitede görmüstük ama nasil cözdük hic aklimda degil.. Biraz arastirdim birisi söyle 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 göstermek

    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.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Bonibon
    Bonibon's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    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 böylece elemanları tek tek güncellemeyeceksin abstraction layer eklemeye benzeyecek iş iki olay arasına

    liste[1,2,3,4,5,6,7] den liste[2,7,3,5,6,4,1] e gibi

     

    Bonibon tarafından 04/May/20 02:34 tarihinde düzenlenmiştir

    om mani padme hum
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    tam demek istedigini anlamadim ama söylediklerinden söyle bir sey aklima geldi (belki ayni seydir)

    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 göre elemanlari göstereyim?

    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.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek

    Index için SQL de ayrı bir yer tutmayı düşündün mü?

    Örnek: 10 eleman için bir index array i olsun:

    A[10] , 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
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Bonibon
    Bonibon's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    aynen hocam dediğini kastettim on güncelleme olacağına tek güncelleme olacak. artık error handling kısmını da ona göre 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
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    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 cözü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 cözü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.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Bonibon
    Bonibon's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    edit olarak eklediğim şeyler haricinde aynı itemler farklı listelerde görünecekse bir kaç problem daha görünüyor gibi ufukta.


    om mani padme hum
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo

    order diye bir column eklesen ? 


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    Bonibon bunu yazdı

    edit olarak eklediğim şeyler haricinde aynı itemler farklı listelerde görünecekse bir kaç problem daha görü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.. (silinen kendi tablosunda olacak o ayri ama biz siralama ile ilgili konusuyoruz). Yani siralama bir kere degistigi anda ben her durumda o fieldi, listedeki son duruma göre güncelleyecegim.. Problem olarak görmedim 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.
Toplam Hit: 3698 Toplam Mesaj: 24
dinamik siralama