
Ինչ իմացավ Ջուլիա Էվանսը Django-ի կայքի հետևում SQLite-ը աշխատեցնելու մասին
Նա նկարագրում է հինգ վայրկյան տևած որոնումը, որը փրկեց ANALYZE-ը, տողերի մաքրումը, որը կործանում է աշխատող պրոցեսները, և restic-ով ու Litestream-ով կրկնօրինակումը։
Ջուլիա Էվանսը հրապարակել է նշումներ Django-ի կայքի հետևում SQLite-ը աշխատեցնելու մասին. սա ներկառուցված տվյալների բազան օգտագործող նրա չորրորդ վեբնախագիծն է։ Նրա խոսքով՝ փոքր կայքի համար արտադրական միջավայրում SQLite օգտագործելու խորհուրդը ճիշտ է, սակայն փորձն ընդգծեց մի բան, որ բլոգային գրառումները սովորաբար շրջանցում են. SQLite-ը դեռ տվյալների բազա է, բազաները բարդ են, իսկ դրանց շահագործումը՝ առանձին հմտություն։
ANALYZE-ը և հինգ վայրկյանանոց հարցումը
Առաջին անակնկալը FTS5 ընդլայնմամբ լրիվ տեքստային որոնման հարցումն էր 4000 տող ունեցող աղյուսակում, որը տևում էր հինգ վայրկյան։ ANALYZE-ի գործարկումը ժամանակը իսկույն իջեցրեց մոտ 0.05 վայրկյանի։ ANALYZE-ը վիճակագրություն է հավաքում, որն օգտագործում է հարցումների պլանավորիչը՝ ավելի լավ պլան ընտրելու համար. Էվանսը խոստովանում է, որ դեռ չգիտի, թե կոնկրետ ինչն էր սխալ սկզբնական պլանում, և կասկածում է պատահաբար քառակուսային բարդության վրա։ SQLite-ը վեբնախագծերում օգտագործում է 2022 թվականից, իսկ ANALYZE-ի գոյության մասին իմացել է նոր միայն։
Տողերի մաքրումը ավելի բարդ է, քան թվում է
Ավելորդ տողերի ջնջումը, օրինակ՝ django-tasks-db-ի թողած ավարտված առաջադրանքները, մեկից ավելի անգամ խնդիր է առաջացրել։ Երբ մաքրման հրամանը տևում է հինգ վայրկյանից ավելի, մեկ այլ պրոցես փորձում է գրել բազայում, անցնում է սահմանված հինգ վայրկյանի շեմը, ընկնում է և իր հետ տապալում վիրտուալ մեքենան։ Առայժմ լուծումը մաքրումը փոքր խմբաքանակներով անելն է, որ ոչ մի հարցում չանցնի սահմանը։ Էվանսի խոսքով՝ այս դեպքն ավելի լավ բացատրեց, թե ինչու կարող է պետք գալ Postgres-ի նման բազա, որտեղ միաժամանակ մի քանի գրող է աշխատում. հնարավոր է՝ ապագա մաքրումների համար նա պլանավորի տեխնիկական դադար։
Կրկնօրինակում. restic և Litestream
Ընթացիկ ընթացակարգը բազան արտահանում է VACUUM INTO-ով, սեղմում և restic-ով ուղարկում S3. սկզբում արձակում է պահոցը, քանի որ սպանված կրկնօրինակումը կողպեք է թողնում, ապա մաքրում հին պատկերները։ Վերջերս նա սկսել է փորձարկել Litestream-ը աճողական կրկնօրինակման համար՝ 400 ժամ պահպանման պատուհանով, մասամբ այն պատճառով, որ restic-ի աշխատանքները երբեմն սպանվում էին հիշողության անբավարարությունից։ Կրկնօրինակները վերահսկվում են ազդանշանի ընդհատմանը արձագանքող համակարգով, սակայն Էվանսը խոստովանում է, որ վերականգնումը երբեք չի ստուգել։
Արտադրողականության հարցում Էվանսը միտումնավոր հանգիստ է. հարցումները գրում է Django ORM-ով և չի հետևում դանդաղ պլաններին, իսկ բազան պահում է մոտ 10 000 տող և, նրա ակնկալիքով, կմնա փոքր։ Երբ աղյուսակներին միասին լինելը պետք չէ, նա դրանք բաժանում է մի քանի ֆայլի. այս մոտեցումը կիրառել է նաև Mess with DNS-ում, որն արդեն չորս տարի՝ 2022 թվականից, աշխատում է SQLite-ի վրա։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։