მონაცემთა ბაზების ანგარიშსწორება იმის მიხედვით, რას ნამდვილად იყენებენ
Mythex-ის ყოველ აპს, რომელსაც მონაცემების შენახვა სჭირდება, საკუთარი Postgres მონაცემთა ბაზა აქვს, და გამოქვეყნებული აპის მონაცემთა ბაზის გამოყენება იმავე კრედიტის ბალანსიდან იხარჯება, რომლითაც აგებას იხდი. სექტემბრის ბოლომდე ამ გამოყენებას ვაფასებდით იმის მიხედვით, რამდენ ხანს მუშაობდა აპის სერვერი. შეფასება არასწორი აღმოჩნდა მნიშვნელოვანი ფორმით, ამიტომ ის შევცვალეთ: ახლა ყოველი მონაცემთა ბაზა იხდის იმ გამოთვლითი რესურსის მიხედვით, რომელიც მისმა პროვაიდერმა ნამდვილად გაზომა, დასრულებული საათ-საათობით, და ყოველი საათი მხოლოდ ერთხელ შეიძლება დაეჭვიოს.
როგორ მუშაობს მონაცემთა ბაზები
ყოველი მონაცემთა ბაზა მუშაობს სერვერულ Postgres-ზე, რომელიც ნულამდე იკუმშება: რამდენიმე უმოქმედო წუთის შემდეგ ის ძინავს და შემდეგ მოთხოვნაზე იღვიძებს. როცა გაღვიძებულია, მისი გამოთვლითი რესურსი დატვირთვის მიხედვით იზრდება და მცირდება. სწორედ ამით არის შესაძლებელი „ბაზა ყოველ აპზე“ — ბევრი აპი დიდ დროს მშვიდად არის, და მძინარე ბაზა თითქმის არაფერი ღირს.
ეს ასევე ნიშნავს, რომ მონაცემთა ბაზის ღირებულება ორ რამეზეა დამოკიდებული, რომელსაც გარედან ვერ ვხედავთ: რამდენ ხანს იყო გაღვიძებული და რამდენად დიდი იყო, როცა გაღვიძებული იყო.
რა შეცდა შეფასებაში
ჩვენს თავდაპირველ მრიცხველს ერთი დაშვება ჰქონდა: გამოქვეყნებული აპის სერვერის მუშაობის ყოველი საათისთვის მონაცემთა ბაზას ყველაზე პატარა გამოთვლითი ზომით ვუწერდით.
ეს სამი მიზეზით იყო არასწორი:
- ზომა იყო არასწორი. მონაცემთა ბაზები რეალურად უფრო დიდი ნაგულისხმევი ზომით მუშაობდნენ, ვიდრე შეფასება ივარაუდებდა.
- მონაცემთა ბაზები ავტომატურად იზრდება. დატვირთვისას ისინი იზრდებიან, და შეფასება ამას ვერასდროს ხედავდა.
- მონაცემთა ბაზა აპის სერვერს არ მიჰყვება. ბაზა ღვიძავს, როცა რამე მას ეკითხება — აპი, დაგეგმილი სამუშაო, სკრიპტი, რომელიც მას ამოწმებს — მიუხედავად იმისა, იყო თუ არა აპის სერვერი ჩართული.
საბოლოო შედეგი: შეფასება მომხმარებლებს დაახლოებით ნახევარს უწერდა იმისა, რაც მონაცემთა ბაზებს ნამდვილად უჯდებოდა. ეს ჩვენთვის მდგრადი არ იყო, და ასევე ნიშნავდა, რომ აპში გამოყენების რიცხვები არ ნიშნავდა იმას, რასაც ადამიანები ფიქრობდნენ.
გაზომვა ვარაუდის ნაცვლად
ჩვენი მონაცემთა ბაზის პროვაიდერი თითოეული პროექტისთვის საათში გამოთვლითი ერთეულ-წამებს აწვდის — რამდენი გამოთვლითი რესურსი მოიხმარა ნამდვილად, ზომის ჩათვლით. ამიტომ მრიცხველი ახლა ასე მუშაობს:
- ყოველი გამოქვეყნებული აპისთვის, რომელსაც ბაზა აქვს, ვიღებთ გაზომილ გამოყენებას ყოველი დასრულებული საათისთვის, მას შემდეგ რაც აპი ცოცხალი გახდა.
- ამ გამოყენებას პროვაიდერის ფასით ვაქცევთ ღირებულებად, ვიყენებთ გეგმის განაკვეთს და ვწერთ აპის მფლობელის კრედიტებზე.
- ყოველჯერ ერთ დღემდე უკან ვბრუნდებით, ასე რომ საათები, რომლებიც გამოგვრჩა, როცა API-ი რესტარტდებოდა, მოგვიანებით მაინც ანგარიშდება.
მეხსიერება ცალკე ანგარიშდება, ზომის მიხედვით, რადგან ის აქტივობაზე არ არის დამოკიდებული.
საათი არასდროს ორჯერ არ ანგარიშდება
განაწილებულ მრიცხველს, რომელიც ერთზე მეტ სერვერზე მუშაობს და შეიძლება ჩავარდეს და ხელახლა სცადოს, ფრთხილად უნდა იყოს, რომ ორმაგად არ ჩამოწეროს. მონაცემთა ბაზის ყოველი საათი ანგარიშდებოდა თავისსავე მწკრივში დაკავებულად, სანამ მისი ღირებულება ჩაიწერებოდა, და წყვილზე (მონაცემთა ბაზა, საათი) ერთადერთობის შეზღუდვა იყო. თუ ორი სერვერი, ან ხელახალი მცდელობა, ერთ საათს შეეცდება ანგარიშსწორებას, მხოლოდ ერთი დაკავება წარმატებული იქნება.
ასევე გავაკეთეთ შეგნებული არჩევანი იშვიათი ჩავარდნის შემთხვევისთვის: თუ პროცესი ჩაიშლება საათის დაკავებასა და მის ღირებულებას შორის, ეს საათი დაკავებული და შეუფასებელი დარჩება. იშვიათ ჩავარდნაში ფულის მცირე ნაწილის დაკარგვა უკეთესია, ვიდრე ვინმეს ორჯერ ანგარიშსწორება.
და როცა გაზომილი ანგარიშსწორება ჩაირთო, ის შემდეგი სრული საათიდან დაიწყო. იმ საათებს, რომლებიც ადრე იყო, ძველმა შეფასებამ უკვე გადაუხადა, და მათი ხელახლა ანგარიში გაზომილი მონაცემებიდან ამ მონაკვეთს ორჯერ ჩამოწერდა.
რას ნიშნავს ეს, თუ Mythex-ზე აგებ
- შენი მონაცემთა ბაზის ანგარიში ახლა ასახავს, რას აკეთებდა შენი ბაზა. იშვიათად გამოყენებული აპი ძალიან ცოტას ღირს; აპი, რომელიც მუდმივად ეკითხება თავის ბაზას, მას ღვიძავს და მეტი ჯდება.
- ყველაზე დიდი ბერკეტი ისაა, როგორ იყენებს შენი აპი ბაზას. ბაზის ყოველ რამდენიმე წამში გამოკითხვა მას მთელი დღე-ღამე ღვიძავს. თუ AI-ს მოსთხოვ მონაცემების მოთხოვნისთანავე მიღებას ან ქეშირებას, ბაზა იძინებს. ჩვენი გზამკვლევი იმის შესახებ, რა არის მონაცემთა ბაზა ძირითად საფუძვლებს ფარავს.
- Pro გეგმები ჰოსტინგის, მონაცემთა ბაზებისა და შენახვისთვის Free-ის განაკვეთის ნახევარს იხდიან. დეტალები კრედიტების დოკუმენტაციაშია.
რა ვისწავლეთ
- გამოყენებაზე დაფუძნებული ხარჯების შეფასებები გადაუხრის. როცა ზემოთა პროვაიდერს შეუძლია გითხრას, რა იქნა გამოყენებული, ანგარიშსწორება მისი მონაცემებით უნდა მოხდეს.
- გახადე ანგარიშსწორება იდემპოტენტური იმ უმცირეს ერთეულზე, რომელსაც იხდი. ჩვენთვის ეს არის ერთი მონაცემთა ბაზის საათი.
- როცა უნდა ჩაიშალო, ჩაიშალე მომხმარებლის სასარგებლოდ.