Architecture Decision Record

Active theme: Light

← Mifano ya rekodi za maamuzi

Rekodi ya Uamuzi wa Usanifu: Kuchagua Teknolojia ya Hifadhidata

Hali

Imekubaliwa

Muktadha

Tunabuni programu mpya inayohitaji kuhifadhi na kupata data kwa njia inayoweza kupanuka na yenye utendaji mzuri. Tumebaini aina tatu za teknolojia za hifadhidata zinazotumika kwa kawaida: hifadhidata za uhusiano, hifadhidata za nyaraka, na hifadhidata za matukio.

Hifadhidata za uhusiano huhifadhi data katika majedwali yenye skima zisizobadilika na hutekeleza vikwazo vikali vya uadilifu wa data. Zinafaa kwa programu zinazohitaji mahusiano changamano ya data na miamala. Mifano ni MySQL, PostgreSQL, na Oracle.

Hifadhidata za nyaraka huhifadhi data katika nyaraka zinazofanana na JSON na hazina skima. Zinafaa vizuri kwa programu zinazohitaji modeli za data zinazobadilika na kupanuka kwa mlalo. Mifano ni MongoDB, Couchbase, na Amazon DynamoDB.

Hifadhidata za matukio huhifadhi data kama mfululizo wa matukio, zikinasa kila badiliko la data. Zinafaa kwa programu zinazohitaji ukaguzi, event sourcing, na usindikaji changamano wa data. Mifano ni Apache Kafka, Apache Pulsar, na AWS Kinesis. Uamuzi

Baada ya kutathmini kwa makini mahitaji na vikwazo vya programu yetu, tumeamua kutumia hifadhidata ya nyaraka.

Sababu

Tumechagua hifadhidata ya nyaraka kwa sababu:

  1. Programu yetu inahitaji modeli ya data inayobadilika inayoweza kubadilika kwa muda. Hifadhidata za nyaraka huturuhusu kuhifadhi data kwa muundo usio na skima, ambayo ina maana tunaweza kuongeza sehemu mpya au kubadilisha muundo wa nyaraka zilizopo bila kurekebisha skima ya hifadhidata.

  2. Programu yetu inahitaji kupanuka kwa mlalo ili kushughulikia kiasi kikubwa cha data na trafiki. Hifadhidata za nyaraka hutoa usaidizi uliojengewa ndani wa kugawanya (sharding) na kunakili, ambao unatuwezesha kusambaza data katika seva nyingi na kushughulikia upitishaji wa juu wa kusoma na kuandika.

  3. Programu yetu inahitaji upatikanaji wa haraka na wenye ufanisi wa data. Hifadhidata za nyaraka hutoa uwezo wenye nguvu wa kuorodhesha na kuuliza unaotuwezesha kupata data kwa haraka na kwa ufanisi.

  4. Programu yetu haihitaji miamala changamano au mahusiano ya data. Ingawa hifadhidata za uhusiano hufanya vizuri katika kutekeleza vikwazo vya uadilifu wa data na kushughulikia miamala changamano, programu yetu haina mahitaji kama hayo. Hifadhidata za nyaraka zinaweza kutoa dhamana za kutosha za uthabiti na uimara kwa kisa chetu cha matumizi.

Matokeo

Kwa kuchagua hifadhidata ya nyaraka, tutahitaji kuwekeza katika kujifunza na kuelewa teknolojia mahsusi tunayochagua kutumia. Zaidi ya hayo, tutahitaji kuhakikisha kwamba modeli ya data ya programu yetu inaendana vizuri na modeli ya data ya hifadhidata ya nyaraka ili kuongeza utendaji na uwezo wa kupanuka.

Hata hivyo, tunaamini kwamba manufaa ya kutumia hifadhidata ya nyaraka yanazidi gharama, na kwamba ndiyo inayofaa zaidi kwa mahitaji na vikwazo vya programu yetu.