none
Veritabanında Tablo Yönetimi Hakkında RRS feed

  • Soru

  • Merhaba

    SQL'e sorgular gönderecek çoklu platform desteği sağlamayı düşündüğüm bir uygulama yazacağım.

    Veritabanında :

    -Kullanıcıların genel bilgilerini içerecek 'users' tablosu, içinde kimlik adı, şifresi, email ve yetkileri bulunacak.

    -Kullanıcıların hareketlerini izleyecek '<username>_log' tablosu, içinde tarih-saat ile birlikte yaptığı işlemin adı bulunacak.

    -Her kullanıcının kendine özgü bilgileri tutacağı'<username>_data' tablosu olacak.

    Diyelim ki aktif olarak 5 kullanıcı sisteme kayıtlı olup, uygulamayı kullandığını varsayarsak toplam tablo sayısı 10+1 olacak. SQL veritabanındaki tablolar klasörünün bu şekilde düzensiz olarak artacağını düşünüyorum. Bunun için farklı veritabanları yaratıp her tabloyu o veritabanına özgü hale mi getirmeliyim, ne dersiniz?

    Veritabanı1 'users' tablosundan sorumlu, Veritabanı2 ''<username>_log' tablosundan sorumlu, Veritabanı3 '<username>_data' tablosundan sorumlu olacak bu durumda.

    Sizce ilk başta söylediğim yöntem karışık bir yöntem mi? Karışıklığa öneride buluduğum farklı veritabanlarını kullanma fikri nasıl? Eğer yanlış çözüm olacağını düşünüyorsanız, bana öneride bulunabilir misiniz?

    Teşekkürler

    10 Ocak 2018 Çarşamba 10:06

Tüm Yanıtlar

  • Yardımcı olacak yok mu?
    10 Ocak 2018 Çarşamba 16:43
  • Merhaba , 

    Anlamadığım kısım şu aynı anda 5 kişi aktif ise neden 10 +1 tablo olacak ? ayrıca users tablosundaki userid ile username_log tablosuna kayıt geçebilirsin istersen 1k aktif kullanıcın olsun ayrımı sorgunda userid ile yaparsın .

    Burada soruya 5 ay sonra cevap veriyorum , 5 aylık süreçte bu konu ile ilgili nasıl bir yol izlediniz  ? Yorum olarak aktarır mısınız ? 


    Altan Özdemir

    29 Mayıs 2018 Salı 11:04
  • Merhaba,

    Programın ticari bir kaygısı olmadığı için bitirmedim şuanda da aktif olarak kullanılmamakta, ama 7 ay önce programı tek veritabanı içerisinde çokça fazla tablo oluşturarak çalıştırmıştım. Şuanda devam etmediği halde veritabanı organizasyonu nasıl olmalı kısmını halen merak etmekteyim, umarım biri yardımcı olur.

    Anlamadığınız kısmı açıklamaya çalışayım:

    Örnek olarak sistemde 5 kişi şu kullanıcı adları ile kayıt olmuş olsun:

    1.) qwerty

    2.) foo

    3.) boo

    4.) xyz

    5.) abc

    MsSQL içerisindeki SP ile kullanıcılar otomatik olarak "users" tablosuna kayıt oluyorlar ve derli toplu tüm kullanıcıların detaylı bilgilerini orada görebiliyoruz burası bir evin salonu gibi ortak alan diyebiliriz.

    Kayıt işlemi halen tamamlanmadı ilgili SP her kullanıcı adı için 2 adet tablo daha oluşturuyor ve tabloların isim kuralı <username>_log ve <username>_data şeklinde oluyor. Örnek olarak foo ve abc isimli kullanıcılar için ekstra açılan tablo isimleri şunlar oluyor:

    1.) foo_log

    2.) foo_data

    3.) abc_log

    4.) abc_data

    Bu durumda mevcut tablo miktarını bulmak için sisteme kayıt olan kullanıcılar "n" tane ise oluşturulan tablo sayısı 2*n+1 şeklinde bulunabilir ve 5 kullanıcı için hesaplarsak toplam 2*5+1 den 11 sayısını buluruz.

     

    Programın aktif olarak çalıştığını ve belirsiz bir zaman sonra "Y" kullanıcısından "X" kullanıcısı için şikayet aldığımızı varsayarsak. Kontrol mekanizmamız aşırı kolaylaşıyor. Tek yapmamız gereken "X_log" şeklinde tabloyu çağırmak ve hareket kayıtlarını izlemek oluyor. 

    Benim merak ettiğim kısım kullanıcı sayısı 6000 olduğundan veritabanında oluşturulan tablo sayısı 2*n+1 formülünden 12001 olmuş olacak ve artış miktarı sisteme olması gerektiğinden daha fazla bir yük mü bindirecek?

    Bu organizasyon nasıl yapılmalı sorunun cevabını merak ediyorum. Umarım açıklayıcı olmuştur.

    6 Temmuz 2018 Cuma 19:29
  • Bence size mssql dar gelmiş.MongoDb gibi bir document type veritabanı hoşunuza gider diye düşünüyorum en azından şöyle mi desek ;

    hani nosql ifadesini "not only sql" şeklinde tanımlayan düşünce şekline göre siz isterseniz belli bilgileri mssql da ki bunlar önemli bilgiler olmalılar.Diğer görece önemsiz kaybolsa ardına çok düşmek zorunda kalmayacağınız verileri mongodb yada türevi bir nosql çözümüne mi bıraksanız? 

    Mesela şu her kullanıcının kendi bilgisi diye kasıt ettiğiniz tablo yapısını mongoya devretseniz ve yine kullanıcının tarih saat bilgilerini tutan kısmını.Eğer böyle yaparsanız tablo kısmı ile uğraşmanıza gerek kalmaz çünkü document type bir veritabanı ile çalışacaksınız.Verileri okumanız çok hızlı olacaktır.Tek bir eksiğiniz olacak oda transaction olmaması ancak onları da atomic operatörlerle giderebilirsin (tamamen asla bir nebze) diye düşünüyorum.

    Ve şunu da eklemeliyim her kullanıcı için bir tablo oluşturmak bana mantıksız geliyor.

    6 Temmuz 2018 Cuma 20:39
  • MongoDB'yi hatırlatarak farklı perspektiften olayı değerlendirdiğiniz için teşekkür ederim. Daha öncesinde MongoDB ile tecrübem olmamıştı bu sebeple uygun bir zamanda kendisini detaylı inceleyeceğim.

    Bunun dışında MongoDB kullanmadan, SQL veritabanı ile aşağıda ki gerekli bilgileri tutacak bir veritabanı düzenlemesi nasıl olmalıdır?

    1.) Kullanıcının kritik bilgilerini - (Örnek: kullanıcı adı, şifre, email, üye olduğu tarih ve saat, varsa gerekli izinler)

    2.) Kullanıcı hareket kayıtları - (Örnek: giriş, çıkış, şu isteği gönderdi, böyle bir istek aldı)

    3.) Kullanıcı özel kayıtları - (Örnek: uzun bir text, ufak boyutlu dosyalar saklamak)


    8 Temmuz 2018 Pazar 09:55
  • Çok fantastik bir durumve milyarlarca veri söz konusu değilse tek bir tablo rahatlıkla işini görür, her kullanıcı için ayrı tablolara gerek yok, milyonlarca sorgu için bile bir CRUD işlemi en kötü cihaza bağlı olarak 3-5 sn sürebilir, bunu kod tarafında ara bellekte bazı verileri tutatak göz çarpmayan bir şekilde kullanılması mümkün. Ek olarak, DataTable, DataAdapter gibi konulara bakarak biraz bilgi sahibi olabilirsin.

    Yeni veritabanı ihtiyacı nerede doğar? Bu işin tanımı değiştiğinde göz önünde bulundurulması gereken bir soru. Ben hata/error log için ayrı bir veritabanı kullanırsam bu pek mantıklı olmaz, göz önünde gereksiz yer kaplayan bir şey üretmiş olurum ama (örneğin bir sosyal medya uygulamasıdır) ben mesajlaşma ile anasayfa, beğeni, takip gibi şeyleri ayrı veritabanlarında değerlendirmek isteyebilirim. Burada mesajları ayrı bir web uygulaması üzerinden ayrı bir özellikmiş gibi sunmak isteyebilirim, bu durumda ayrı bir veritabanı işimi daha rahat göreccektir, yönetimi daha kolay olur.

    Fikir vermesi açısından düşünebilirsin, genel bir yorum yaptım.


    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    8 Temmuz 2018 Pazar 10:24
  • Evet benimde zaten aylar sonra ilk yazma sebebim tam olarak neden her kullanıcı için bir tablo açma  gereksinimi duyulduğu hakkındaydı . Aşırı dikkat çekici bir gönderi :)

    Altan Özdemir

    9 Temmuz 2018 Pazartesi 07:00