Kicinta Database-yada Iyadoon Xiriiro Dhintay Lahayn
App-yada daabacan ee Mythex, iyo database-yadooda, way seexdaan markay ka fariisan yihiin. Marka app-ku kor u kacayo, wuxuu codsigiisa koowaad ku hayn karaa 10–12 ilbiriqsi, sababtoo ah wuxuu isku dayayay in uu dib u isticmaalo xiriirrada database oo dhintay intii uu seexday. Hadda waxaan u dhigaynaa app-yada Spring Boot settings database oo ammaan ku ah seexashada, waxaanan u sheegnaa agent-ka inuu dhiso app-yada stack kasta si isku mid ah. Platform-ka martigelinta, codsiga koowaad ee kadib kicinta wuxuu ka soo degay 12.7 ilbiriqsi ilaa 2.3 ilbiriqsi.
Sababta app-yada iyo database-yadu seexdaan
App daabacan oo Mythex ah wuxuu ku shaqeeyaa mishiin joogsada markii daqiiqado yar oo fariisan ay soo maro, database-keeduna waa serverless Postgres oo seexda shan daqiiqo oo fariisan kadib, oo wuxuu toosaa codsiga soo socda. Taasi waa wax ka joojiya app-ka fariisan inuu qaali noqdo: waxaad lacag ka bixisaa wixii database-ku dhab ahaan isticmaalay, app seexday wuxuu compute-ka ku bixin maayo. Waxaan ku qorna ka qoraal ku saabsan dhinaca lacagta ee billing databases by what they actually use.
Dhibaatadu waa in labadaba ay si kala duwan seexdaan, mana isku raacaan waxa xiriir uu yahay.
Calaamadda: booqasho bilow oo gaabis ah
Inta badan app-yada server-ka waxay hayaan connection pool: tiro yar oo xiriirro database oo furan oo diyaar ah, si codsi kasta uusan u bixin kharashka xiriir cusub. Taasi waa naqshad sax ah app-ka had iyo jeer shaqeeya.
Waxa dhaca seexashada:
- App-ku wuu shaqeynayaa, oo wuxuu hayaa xiriiro fudud oo fariisan oo pool-keeda ku jira.
- Qof ma booqdo. Mishiinka app-ku wuu joogsadaa — qabsaday, pool-kiisa oo sidaas ku jira.
- Database-ku wuu seexdaa wuuna tuuraa dhinacisa xiriirrada oo dhan.
- Obiye ayaa yimaada. App-ku wuu kor u kacaa sida uu ahaa, weli wuxuu hayaa xiriiro database-ku aanu ogayn.
- Pool-ku wuxuu bixiyaa mid ka mid ah xiriirradaas. Waa inuu ogaado inuu dhintay — isaga oo isku dayaya oo sugaya — ka hor inta uusan iska tuurin.
App Spring Boot ah, xaqiijinta xiriirrada dhintay waxay joojisay codsiga koowaad qiyaastii 10 ilbiriqsi ka hor inta aysan ku fashilmin "Connection is not available". Obiyaha waxay u muuqatay in site-ku si aamusan u joogsaday, kadibna waxaa laga yaabaa in uu cillad muujiyo.
Sababta app-yada Spring ay ugu dhibsanaayeen
Spring Boot waa framework Java caan ah, wuxuuna isticmaalaa pool xiriir oo la yiraahdo HikariCP si caadi ah. Spring waxay pool-ka ka habayn kartaa settings, oo ay ku jiraan tirada xiriirrada fariisan ee la hayo.
Laakiin Mythex wuxuu mid kasta oo app ah siiyaa database-keeda hal DATABASE_URL oo qaabka postgresql://user:pass@host/db leh. Spring ma akhriyi karto qaabkaas si toos ah. Sidaas darteed app-yada Spring ee Mythex lagu dhisay waxay dhisi jireen pool-kooda koodka gudihiisa iyagoo falanqeynaya URL-kaas — pool-ka gacanta lagu dhisay wuxuu iska indha tiray dhammaan settings-yada spring.datasource.* ee Spring. Xitaa haddii qof yaqaan settings-ka pool-ka ee saxda ah, meel uusan ku dhaqmi lahayn ma jirin.
Hagaajinta 1: settings Spring isticmaali karto
Marka mashruuc uu leeyahay database, hadda wuxuu sidoo kale helaa environment variables uu Spring si dabiici ah u akhriyo:
SPRING_DATASOURCE_URL,SPRING_DATASOURCE_USERNAMEiyoSPRING_DATASOURCE_PASSWORD, oo laga beddelayDATABASE_URL(SSL waa la rabaa haddii URL-ku si kale u sheegin).- Settings-yada pool-ka oo seexashada ka badbaadiya:
| Setting | Qiimaha | Sababta |
|---|---|---|
| Xiriirrada fariisan ee ugu yar | 0 | Waxba ha furin codsiga iyo codsiga, sidaas darteed waxba ma dhinto |
| Waqtiga fariinta (idle timeout) | 30 ilbiriqsi | Xiriirrada aan la isticmaalin si dhakhso ah u xir |
| Nolosha ugu badan (maximum lifetime) | 2 daqiiqo | Xiriir kasta ka dib intaanu duuban, hore u tuur |
| Waqtiga xiriirka (connection timeout) | 5 ilbiriqsi | Ha joojin codsi muddo dheer haddii database-ku gaabiyo jawaabta |
Adigoo aan xiriirro fariisan hayn, app-ka la kiciyay wuxuu furayaa hal xiriir cusub halkii uu ku dhex mari lahaa kuwa dhintay.
Marka caddaynta ayaa jira, Spring wuxuu pool-ka dhisaa isagu, settings-yadana way dhaqmaan. Wax kasta oo mashruucu horey u dejiyay had iyo jeer ayaa mudan; annagu waxaan buuxinaynaa kaliya kuwa maqan. App-yada aan Spring ahayn waxay iska indha tiraan doorsoomayaashaan.
Faahfaahin kaliya ayaa ku dhowaaday inay wax aan samayn
Spring waxay environment variables ku dhigtaa settings-keeda iyada oo raacaysa xeer aan fudud in la dhaqmo. Settingka minimum-idle waa in loo qoro SPRING_DATASOURCE_HIKARI_MINIMUMIDLE — dash-ka waa la tirtiraa, ereyada waa la isku xidhaa. Haddii loo qoro SPRING_DATASOURCE_HIKARI_MINIMUM_IDLE, oo dabiici u muuqda, wuxuu u beddelaa setting kale oo aan jirin (minimum.idle), ma jirto oo si aamusan ayaa loo iska indha tiraa.
Tani waa khalad kasta oo dib-u-eegis ah dhaafa, production-na wax ma beddelo. Sidaas darteed tijaabo ayaa hubisa labadaba in qiyamka la dejiyay iyo in aanu doorsoomayaal midna isticmaalin qaabka ereyada kala saaran underscore.
Hagaajinta 2: stack kasta oo kale
Spring ma aha framework kaliya oo leh pool, annagu ma nidhaaminno kuwa maktabad kasta oo luqad kasta. Sidaas darteed agent-ka Mythex — AI-ga qoraya app-kaaga — hadda wuxuu helaa tilmaam joogto ah stack kasta: app-yada daabacan iyo database-yadoodu way seexdaan marka ay fariisdaan, sidaas darteed xiriir la furay oo fariisan ayaa dhinti kara codsiga soo socda. Waa inuu:
- Ha furin xiriirro database fariisan, ama hubi mid kasta ka hor inta aan la isticmaalin,
- Mar keliya dib ugu noqo kadib cillad xiriir, iyo
- Isticmaal settings-yada database-ka ee platform-ku siiyo environment-ka, halkii uu pool u dhisi lahaa isagoo falanqeynaya
DATABASE_URL.
Qaybtaas ugu dambeysa wuxuu xidhaa wareegga qaybta 1: app-ka lagu dhisay settings-yada la siiyay si toos ah ayuu u helaa qaabeynta ammaan u ah seexashada.
Natiijada
Waxaa lagu cabbiray platform-ka martigelinta ee app-yada daabacan ee aan ku socodsiinno, codsiga koowaad kadib kicinta wuxuu ka soo degay 12.7 ilbiriqsi ilaa 2.3 ilbiriqsi.
Waxa aan ka barannay
- Lakabyada kasta ee seexda waa inay isku waafaqaan waxa badbaadi kara. App-ka oo fariisan iyo database-ka seexday midkiiba go'aan macquul ah ayuu qaatay. Wadajir, app-ku wuu kor u kacay isagoo hayay xaalad aan runtahay mar dambe.
- Defaults-ka loo dhisay server-yada had iyo jeer shaqeeya ma ku habboona app-yada hoos u dhaca eber ah. Xiriirrada diirran ayaa fikrad wanaagsan ilaa wax kasta oo ku wareegsan ay qabow yihiin.
- Frameworks-ka siiya xogtooda qaabkooda. URL hal ahaa wuxuu noo fudaydiyay, laakiin wuxuu Spring app kasta ku qasbay inay pool gacanta ku dhiso oo iska indha tirto settings-kooda.
- Tijaabi in setting-ka la qoro sidii framework-ku akhriyo. Qiime sax ah oo magac khaldan ku qoran ma samaynayo wax, si aamusan.
Haddii aad u baahan tahay inaad wax badan ka ogaato sida database-yadu u shaqeeyaan Mythex, eeg docs-ka database-ka iyo hagahayaga ku saabsan waa maxay Postgres.