Eşzamanlılık sorunlarını denetlemek için bir sürüm numarası (artırılacak) veya zaman damgası kullanmayı mı tercih edersiniz?İyimser eşzamanlılık için sürüm numarası veya zaman damgası?
cevap
Sürüm numarası daha iyi çünkü kullandığınız zaman biçimi ne olursa olsun, sunucu saatinin yanlış olması veya zaman içinde yanlış hale gelmesi durumunda yine de atılabilir.
Kabul etmeliyim, birçok veritabanında zaman damgası kullandım çünkü verilerin son değiştirilme zamanı için eşzamanlılık denetimi ve okunabilirlik gibi ikili bir amaca hizmet edebilir. Ancak, bir sürüm numarası kullanmak gerçekten daha iyi bir yoldur.
Sürüm numarası. Veya zaman damgası kullanıyorum, UTC olduğundan emin olacağım - bu yüzden saat dilimi ile karışıklık yoktur.
Bir sürüm numarası kullanıyorum, özellikle kaynak zaman damgalarınızın çözünürlüğünden daha fazla güncelleştirilebiliyorsa (ör. Zaman damgalarını saniyeler içinde saklıyorsanız, tek bir saniyede birden çok güncelleştirmeniz varsa) , sürümünüz bozulacak).
Lieven,
Sana SQL Server belirtmedi biliyorum, ama SQL Server bahsediyoruz EĞER sonra veri türü TimeStamp kullanmak en iyi yöntem olacaktır. Açıklamasına rağmen, tarihi ve saati yapmak için hiçbir şey yapmıyor. Aslında, sadece satırın her değiştirildiği zaman değişen ikili bir sayıdır. Böylece, eğer satırda herhangi bir değişiklik yapılırsa, zaman damgası sütununun değişeceğini biliyorsunuz demektir. Bu, sürüm numaralarına göre avantajlıdır, çünkü programcı, sürüm numarasını "korumak" zorunda değilsiniz. Gerçek Tarih/Zaman zaman damgalarının daha önce - zaman farkları vs. için atıfta bulunulan başka bir posterin daha dikkatli kullanılması gerekir.
Ve hangi tipte C# zaman damgasını eşlemem gerekiyor? Çünkü bir güncelleme veya silme işleminden önce eşzamanlılık sorunlarını kontrol etmek istiyorum. (Ben gerçekten sql server ile çalışıyorum. Flex-WebORB-.NET-SQLServer). DOT'u Flex'e gönderiyoruz. Bu dtoda zaman damgasını koymam gerekecek. Dto kaydedileceği zaman, dtodaki zaman damgası veritabanındaki zaman damgasına karşılık gelirse, chack yapmam gerekecek. Teşekkürler. –
İşte bu konuda bir sohbet: http://social.msdn.microsoft.com/Forums/tr-TR/adodotnetdataproviders/thread/0ad05e31-c3b2-44fb-99f5-32e80754e37a/ Ancak, sunucunun sürümleri işlemesine izin vermeyi düşündünüz mü? İyimser kilitleme kullanıyorsanız, bir sorunu algılayacak ve istisnayı atacak bir sql eklentiniz olacaktır. – BIDeveloper
Bunu yapmak için sql eklentisinin sorunu tespit etmesine izin verecektim. Ancak zaman damgasını istemciye göndermeniz gerekmiyor mu? Ekliyorsanız, db'de zaman damgasını nesnenin zaman damgasıyla karşılaştırmanız gerekir. Yoksa burada bir şey mi özlüyorum? –
Windows kullanıyorsanız, sürüm tanımlayıcısı olarak genel olarak benzersiz bir tanımlayıcı (GUID) kullanmanızı öneririz.
Saat, kullanıcı tarafından ayarlanmışsa bir zaman damgası (UTC olsa bile) sorun çıkarabilir. Sunucu uygulaması yeniden başlatılırsa veya taşarsa (yalnızca 16 bit veya 32 bit tam sayıysa) artan bir sayı (bellekte tutulursa) sorun çıkarabilir.
Sürüm numarası. DateTime bazı nedenlerden dolayı benzersiz değildir, örneğin 'Yaz saati uygulaması' - iki '2 AM' saat olabilir. (Ambiguous Time).
Sanırım yeterince imzasız 32 bit tam sayıdan fazla, çünkü pratik olarak 4,294,967,295 işlem kaydedilirken SIFIR olasılığı vardır.
- 1. İyimser eşzamanlılık: IsConcurrencyToken ve RowVersion
- 2. sürüm numarası
- 3. Python - SSL - sürüm numarası
- 4. ASP.Net Sürüm/Yapı Numarası
- 5. eşzamanlılık 2.1 veya
- 6. libxxx.a sürüm numarası nasıl bulunur?
- 7. Gelişmiş yükleyicide sürüm numarası artırma
- 8. Unix Zaman Damgası Python
- 9. Zaman damgası Python
- 10. En yakın zaman damgası
- 11. XML Şeması'nda Zaman Damgası
- 12. Logrus zaman damgası biçimlendirme
- 13. PostgreSQL zaman damgası
- 14. PostgreSQL: Gelecekte zaman damgası
- 15. MySQL Zaman damgası geçerli zaman damgası daha eski olan satırları silmek için Sorgu
- 16. CakePHP'de geçerli zaman damgası gönderiliyor
- 17. Logolar zaman damgası dönüştürmek için Logstash
- 18. Lua'daki ISO 8601 için zaman damgası
- 19. unix zaman damgası için alan türü
- 20. Yalnızca MySQL zaman damgası oluştur
- 21. ClojureScript'te nasıl zaman damgası alırsınız?
- 22. Yaz saati uygulamasıyla zaman damgası hesaplaması
- 23. Eşzamanlılık sınamak için Junit
- 24. zaman damgası dize (Unix saati) datetime veya pandas.Timestamp
- 25. Yükleyici, GAC'daki bir dosyayı, sürüm numarası
- 26. Negatif zaman damgası - PHP'de anlamlıdır?
- 27. Dönüştürme OffsetDateTime UTC zaman damgası
- 28. SQL: Tarih zaman damgası dönüştürün
- 29. Emacs orgmode'de özel zaman damgası
- 30. Xcode Gettings Sürüm ve Oluşturma Numarası
Evet, idd, zaten bir ModifiedOn sütunum var ve bunu kullanmayı düşünüyordum, ancak fazladan bir sütun önerirsiniz? –
Evet. Tabloda çok fazla sütuna sahip olmaktan nefret ettiğim kadarıyla, daha kurşun geçirmez bir çözüm. – NYSystemsAnalyst
Eh, Jim'in cevabı yüzünden biraz kafam karıştı. TimeStamp, satırı değiştirirken otomatik olarak değişirse, bu oldukça kullanışlıdır. 'Hala atılabilir' ile ne demek istiyorsun? thx –