ისევ UNIQUEIDENTIFIER-ი როგორც Primary Key და NewSequentialID() – Microsoft-ის რეკომენდაციები

Mar 15th, 2012
146 views |  No comments

ჩემი ბლოგის ერთ-ერთ ძველ თემაში: UNIQUEIDENTIFIER ველი როგორც Primary Key, NEWID() და 1001 გაუგებრობა ვწერდი, საკმაოდ საინტერესო შედეგებს იძლევა წარმადობაზე შედარება როცა Primary Key-დ Unique Identifier-ია გამოყენებული. ამ საკითხზე საკუთარ ტესტებს, ინტუიციას და ინტერნეტში მოძიებულ ინფორმაციას დავეყრდენი და გავრისკე. რისკმა გაამართლა და შედეგი საკმაოდ ნორმალურია. ამ რამოდენიმე ხნის წინ, Microsoft-ის კონსულტანტებთან (უშუალოდ SQL სერვერის) საუბრისას, ეს საკითხი გამახსენდა და ვკითხე. მიუხედავად იმისა, რომ ადგილზე სრულად პასუხი ვერ გამცეს, დამპირდნენ რომ აუცილებლად დააზუსტებდნენ ინფორმაციას და მეტყოდნენ. და აი, ნანატრი პასუხი მოვიდა! პასუხი არც მეტი, არც ნაკლები, ბმულის სახითაა წარმოდგენილი და ბლოგზე მიუთითებს :) მაგრამ წასაკითხად და ინფორმაციის მისაღებად ძალიან საინტერესოა. რაღა ბევრი გავაგრძელო, იხილეთ მაიკროსოფტის ოფიციალური პასუხი და რეკომენდაციები ამ თემაზე. იმედია რამეში დაგეხმარებათ.

P.S. სპეციალურად მათთვის, ვინც შიშობს, რომ NewSequentialID-ს გამოყენება საფრთხეებს შეიცავს და შეიძლება არაუნიკალური რეზულტატი დააბრუნოს ან ზრდის რისკს დამთხვევებისა, ბმული გვეუბნება რომ: NEWID-ს შემთხვევაში განმეორებისა  რისკი არის: “Rare chance of duplicates” მაშინ როცა NEWSEQUENTIALID()-ს შემთხვევაში: Globally unique. Virtually no chance of collisions. ასე რომ ნუ ნერვიულობთ უნიკალურობის პრობლემაზე :)

24 საათში აშენებული ოცნება

Jan 29th, 2012
627 views |  7 comments

ლაიტმოტივი: “როდის გინდა? გუშინ!” – ყველაზე ცუდი და არასწორი პასუხი ყველაზე ხშირად დასმულ შეკითხვაზე…

ჯერ კიდევ სკოლაში რომ ვსწავლობდი, ერთი წიგნი მქონდა “მსოფლიოს 100 ყველაზე დიდი თაღლითობა” ერქვა. ორი ტომი იყო (თუმცა ტომი ცოტა ხმამაღალი ნათქვამია, ერთშიც ჩაეტეოდა, მაგრამ ეტყობა ავტორმა 101-ე თაღლითობა ჩაიდინა და 2 ტომად, შესაბამისად ორმაგად გაყიდა ის, რაც 1 ტომადაც გამოიცემოდა) და შიგნით მსოფლიო ისტორიის მანძილზე განხორციელებული 100 დიდი თაღლითობის შესახებ იყო მოთხრობილი. წიგნში უამრავ სხვადასხვა საინტერესო ისტორიას წააწყდებოდით. გახსოვთ ალბათ 90-იან წლებში, საქართველოში კომერციული ბანკების ბუმი იყო, შეიტანდი 100$-ს და გამოიტანდი 1 თვეში 200$-ს, შეიტანდი 200$-ს და გამოიტანდი 400$-ს და ა.შ. ისიც გახსოვთ, რამდენმა დაკარგა მაშინ ქონება და შესაბამისად რამდენი ადამიანი გახდა მილიონერი. სამწუხაროდ თუ საბედნიეროდ, ეს სქემა, სულაც არაა ქართული ნოუ-ჰაუ, ჯერ კიდევ მეთვრამეტე საუკუნის ბოლოს, იტალიელმა თაღლითმა მოიგონა და კარგი ფულიც იშოვა. იყო ისტორია ორი თაღლითის შესახებ, რომელმაც ძვირფასი ქვების “საბადო” აღმოაჩინა და ჩვეულებრივი ბრჭყვიალა ქვები უზარმაზარ ფულად აქცია. იყო ისტორია იმაზეც, როგორ დააჯერა რიგითმა თაღლითმა ნახევარი ნიუ-იორკი რომ მანჰეტენი უნდა გადაეხერხათ. მაგრამ ერთ-ერთი საყვარელი ისტორია, გრიგორი პოტიომკინის და ეკატერინე მეორის შესახებ იყო. ისტორია კი შემდეგში მდგომარეობდა: ერთხელ, ეკატერინე მეორემ, გადაწყვიტა სამეფო შემოევლო და ქვეყანაში მიმდინარე აღმშენებლობა შეეფასებინა. მოგზაურობის ორგანიზება გრიგორი პოტიომკინს დაევალა. ვინაიდან საჩვენებელი ბევრი არაფერი იყო, და ის, რაც იყო, საჩვენებლად არ გამოდგებოდა, პოტიომკინმა იმ დროისათვის არნახული თაღლითობა მოაწყო და საბოლოოდ ეკატერინე მეორე გულდამშვიდებული დაბრუნდა უკან.

პოტიომკინმა შეაგროვა ხალხი, მასალა, მისცა დავალება და წარმოდგენაც დაიწყო: პოტიომკინის ჯგუფი, დედოფლის ამალას 1-2 დღით უსწრებდა და იმ ადგილას, სადაც დედოფალს უნდა გაევლო, ხისა და მუყაოსაგან, მთელ “ქალაქებს” აგებდა ლამაზი ფასადებით, ლამაზად ჩაცმული და “ბედნიერი” მაცხოვრებლებით. სანახავი ბევრი იყო, დრო ცოტა. ამის გამო, ამალა პრაქტიკულად შეუჩერებლად მოძრაობდა და დედოფალიც მხოლოდ ვიზუალურად ტკბებოდა “აშენებული” იმპერიით.

საბოლოო ჯამში, ეკატერინე მეორე აღფრთოვანდა ქვეყანაში მიმდინარე “მუყაოს აღმშენებლობით”, გრიგორი პოტიომკინი კი ისტორიაში შევიდა როგორც ერთ-ერთი ბრწყინვალე აფიორის შემოქმედი. კაცმა რომ თქვას, შეიძლება ეს ყველაფერი არც მომხდარა და მხოლოდ ვიღაცის ფანტაზიის ნაყოფია, მაგრამ მშვენიერი წასაკითხი და მოსაყოლია :)

Read more…

WCF სერვისები, ტრასირება და წარმადობის ანალიზი

Sep 15th, 2011
582 views |  2 comments

ბოლო ხანებში WCF სერვისების ტრასირება და წარმადობის ანალიზი დამჭირდა გადავწყვიტე ამ ბნელით მოცული საკითხისთვის ერთხელ და სამუდამოდ მომეფინა ნათელი. რეალურად ყველაფერი იმდენად მარტივი აღმოჩნდა, რომ ნათელის მოსაფენი ბევრი არც არაფერი ყოფილა. თანაც შედეგებიც ისეთი შთამბეჭდავი მივიღე, რომ თუ ამ ორ საოცარ საშუალებას ჯერ არ იყენებთ, აუცილებლად სცადეთ, გამოგადგებათ :) ორი სიტყვით იმაზე, თუ რას წარმოადგენს WCF სერვისების ტრასირება და როგორ მოვახდინოთ წარმადობის ანალიზი.

Read more…

UNIQUEIDENTIFIER ველი როგორც Primary Key, NEWID() და 1001 გაუგებრობა :)

Sep 12th, 2011
649 views |  1 comment

ამ რამდენიმე დღის წინ, ჩემი ერთი ძველი მეგობარი და კოლეგა შემომეხმიანა (თქვენ ალბათ იცით მისი პროექტი jok.ge) და ერთი მარტივი კითხვა დამისვა: “გადახვედი ცხრილში GUID გასაღებებზე?” მე ამაყად ვუპასუხე რომ გადავედი, შემდეგი კითხვა ამ ველის მნიშვნელობების გენერაციას ეხებოდა “როგორ აგენერირებ, NEWID()-თი?” ჩემი პასუხი კვლავ დადებითი იყო. ამის შემდეგ ჩემმა ძველმა მეგობარმა და კოლეგამ ბოროტად ჩაიხითხითა, Primary Key ხომ კლასტერიზებული ინდექსიაო, შესაბამისად სორტირებულიო და ვინაიდან NEWID არასორტირებული სახით აბრუნებს რეზულტატს (ანუ NEWID()-ს ყოველი შემდგომი გამოძახება შეიძლება წინაზე მცირე რეზულტატს აბრუნებდეს) ეს იმას ნიშნავს რომ საცოდავი სერვერი იძულებულია ყველა INSERT-ისას ზევით-ქვევით ირბინოს რათა კლასტერიზებული ინდექსის თანმიმდევრობა შეინარჩუნოს. შედეგად იზრდება INSERT-ის დრო და ინდექსის ფაგმენტაცია. გამოსავალი? გამოსავალი NEWID()-ს ნაცვლად NEWSEQUENTIALID()-ს გამოყენებაშია.

Read more…

Entity Framework-ი, GUID გასაღებები როგორც PrimaryKey და ავტო-გენერაციის პრობლემები

Sep 2nd, 2011
557 views |  1 comment

დიდი შინაგანი ბრძოლების და უამრავი წაკითხული, გადამუშავებული და გატესტილი ვარიანტის შემდეგ, როგორც იქნა გავრისკე და ძველი, კეთილი ADO.NET-ის გამოყენებიდან Entity Framework-ის გამოყენებაზე გადავედი. პრინციპში უნდა ითქვას რომ საკმაოდ წარმატებითაც და ბევრად უფრო ბედნიერად ვგრძნობ თავს, CRUD ოპერაციებისთვის რომ აღარ ვწერ პროცედურებს SQL სერვერის მხარეს და მერე ამ ყველაფერზე ADO.NET-ით არ ვჩალიჩობ. მოკლედ მარტივად რო ვთქვათ ORM-ი საკმაოდ ეფექტური რამე აღმოჩნდა, მითუმეტეს linq-სთან კომბინაციაში. მაგრამ, როგორც ყოველთვის, აქაც არსებობს ბევრი პატარა მაგრამ…

ბოლო დღეებში უშედეგოდ ვიბრძოდი, რომ ცხრილში, რომლის Primary Key-ც uniqueidentifier-ის ტიპის მნიშვნელობაა, C#-ის კოდის მხრიდან, ცხადი სახით Guid.New()-ს გამოძახების გარეშე მიმეღწია ავტო-გენერირებადი მნიშვნელობების ჩაწერისთვის. საბოლოოდ ბრძოლამ შედეგი გამოიღო, მაგრამ გადაწყვეტილება იმდენად უშნოა, რომ ისევ Guid.New()-ს გამოყენება მომიწევს.

Read more…

Amazon Kindle – ტექნოლოგიური საოცრება წიგნების მოყვარულთათვის

Mar 5th, 2011
2,129 views |  8 comments

კითხვა ჩინებული რამ გახლავთ. მითუმეტეს თუ ბავშვობიდან მიჩვეული ხართ და თუ ჩემსავით ისეთ სფეროში ტრიალებთ, სადაც ყოველ დღე რაღაც ახალი იდეა და ტექნოლოგია გამოდის. თუმცა არც ესაა აუცილებელი, შეიძლება უბრალოდ მხატვრული ლიტერატურის დიდი მოყვარული ხართ და ძილის ინ 4-5 თავი თუ არ წაიკითხეთ არ დაგეძინებათ :)

ასეა თუ ისე, შევთანხმდეთ ერთ საკითხზე: თქვენ, ისევე როგორც მე, გიყვართ/გიწევთ/გჭირდებათ დიდი რაოდენობით წიგნების კითხვა, ყველა წიგნს ვერ/არ იყიდით, ზოგი აქ არ იყიდება, ზოგის ჩამოტანა ძვირია, ხოლო ელექტრონული ვერსიების კომპიუტერის ეკრანზე კითხვა დღითი დღე აუარესებს თქვენს მხედველობას… გამოსავალი არის და მას Amazon Kindle ეწოდება! :)

Read more…

(არცთუ) პრიმიტიული Server/Storage სახლის პირობებში :)

Apr 3rd, 2010
3,246 views |  5 comments

უკვე აღარ მახსოვს ბოლოს როდის დავწერე ბლოგზე რამე. მგონი სიცხე რო მქონდა 3 თვის წინ მაშინ :D ეგ იქეთ იყოს და ამ მოუცლელობის და გაწამაწიის ჟამს, როგორც ჭეშმარიტ geek-ს შეეფერება, მაინც გამოვნახე დრო რომ რაღაც ახალი გამეკეთებინა. გამომდინარე იქედან, რომ შედეგით ძალიან კმაყოფილი ვარ, გადავწყვიტე თქვენც გაგიზიაროთ :)

მაშ ასე, სანამ საქმეზე გადავიდოდეთ, მცირედი შესავალი: გაგიკვირდებათ და სახლში კომპიუტერი მაქვს :D ჩვეულებრივი, დიდი ქეისით, DVD ჩამწერით, თითქმის ტერაბაიტი ვინჩესტერებით და რაღათქმაუნდა ხმაურიანი ქულერით :D იყო დრო, როცა ჩემი კომპიუტერი პრაქტიკულად არ ითიშებოდა, მაგრამ მას მერე რაც ჩემს ცხოვრებაში ნოუთბუქი გაჩნდა, ჩემი და კომპიუტერის ურთიერთობა ნელ-ნელა გაცივდა და ბოლოს საერთოდ გავუცხოვდით ერთმანეთის მიმართ :D

Read more…

WM Unicode Fonts თქვენს ტელეფონში

Nov 22nd, 2009
6,063 views |  25 comments

დიდი ხანი არ არის, რაც ჩემი ძველი მობილური ტელეფონი ისე გაფუჭდა, რომ მის გაკეთებას აზრი აღარ ჰქონდა და ამიტომ ახლის ყიდვა მომიწია. მიუხედავად არსებული iPhone-მანიისა, არჩევანი მაინც Windows Mobile-ზე შევაჩერე. ბევრი ქექვის, შედარებისა და ფიქრის შემდეგ, ჩემი რჩეული Samsung Omnia 8GB გახდა.

Samsung-ის სასარგებლოდ უნდა ითქვას, რომ ტელეფონი მართლაც რომ მშვენიერია და პრაქტიკულად ყველა ასპექტში მომწონს. ერთადერთი რაც არ მომწონს მისი მუსიკალური შესაძლებლობებია, რაც Sony Ericsson-ის W სერიის ტელეფონის რამდენიმე წლიანი გამოყენების შემდეგ გასაკვირი არც არის.

Read more…

სტანდარტები, სტანდარტები, სტანდარტები!

Nov 17th, 2009
2,386 views |  3 comments

და კიდევ ერთხელ სტანდარტები! :) ვიცი რომ არავის არ გვიყვარს, ისიც ვიცი რომ თითოეულმა ჩვენთაგანმა აღმოაჩინა კოდის წერის ყველაზე ოპტიმალური და სწორი ვარიანტი, ფორმატირების ყველაზე მოსახერხებელი სტრუქტურა. ისიც ვიცი რომ თითოეული ჩვენთაგანის მიერ დაწერილი კოდი არ საჭიროებს კომენტირებას, რადგანაც ის თავისთავადაა ერთი დიდი კომენტარი, რადგანაც საოცრად გასაგები და ბუნებრივია. ეს ყველაფერი ვიცი, განა მეც ერთ-ერთი თქვენთაგანი არ ვარ? :) მაშინ რატომ ვდარდობ? ვდარდობ იმიტომ, რომ როცა საკუთარი კოდის გარდა სხვის კოდთან მუშაობა გიწევს და როცა ეს “სხვა” არა ერთი, არმედ რამოდენიმე ადამიანია, ხვდები რომ ამდენი გენიოსის მიერ დაწერილი კოდის გასარჩევად უბრალოდ რესურსი აღარ გყოფნის :)

Read more…

Google Applications – უფასო სასწაული :)

Jul 5th, 2009
3,470 views |  7 comments

რაც უფრო გადის დრო, ვრწმუნდები რომ Google ნელ-ნელა უახლოვდება იმ კომპანიას, რომელიც არა მხოლოდ ფულს აკეთებს ხალხზე, არამედ ხალხსაც ეხმარება იმის გაკეთებაში, რაც ამ უკანასკნელს სურს და რაოდენ საოცრადაც არ უნდა ჟღერდეს, ეს გამოსდის, თან არაჩვეულებრივად :)

ალბათ დაახლოებით 1,5-2 წლის წინ რომ დამეწერა ის, რის დაწერასაც ახლა ვაპირებ, ბევრისათვის ახალი იქნებოდა, მაგრამ დღეს დარწმუნებული ვარ უამრავი ადამიანი იცნობს Google Applications სერვისს. საქმე იმაშია, რომ მე რატომღაც მთელი ეს პერიოდი ვერ ვახერხებდი თავი მომება და ჩავჯდომოდი ამ საკითხს, შესაბამისად, ჩემი ცოდნაც 0-ზე იყო და მხოლოდ “იცი რა მაგარია?” ტიპის შეფასებების მოსმენით შემოიფარგლებოდა. ბოლო ხანებში კი რაღაც შემიჩნდა და უფრო კარგად გავეცანი ყველაფერს. შედეგად ახლა ამას ვწერ :)

Read more…

Tags: