Өгөгдөл

**Өгөгдөл** бол  тоо болон тэмдэгтүүдийн цогц юм.

Өгөгдөл ( эсвэл үзүүлэлт – өгөгдлийн нэг нэгж) бол мэдээлэл биш юм. Өгөгдөл мэдээлэл болохын тулд тайлбар шаарддаг. Өгөгдлийг мэдээлэлд хөрвүүлэхэд хэд хэдэн хүчин зүйлсийг авч үзэх ёстой. Эдгээр хүчин зүйлүүд нь мэдээллийг үүсгэж, хэрэгцээт мэдээллээр хангана. Метадата гэдэг нь ерөнхийдөө бүтэцлэгдсэн мэдээлэл бөгөөд мэдээллийн хамаарлыг илрүүлэх, мэдээллийг танилцуулах, үнэлгээ өгөх болон мэдээллийг удирдахад тусалдаг компьютерт ойлгомжтой өгөгдөл юм. Өгөгдөл нь бодит үйл ажиллагаа эсвэл үйл явцын түр зуурын бүрэлдэхүүн байж болно. Бараг бүх тохиолдолд энэхүү түр зуурын бүрэлдэхүүн нь шууд бус утга илэрхийлдэг. Жишээ нь, температур мэдрэгч төхөөрөмж өгөгдлийг бичиж авдаг.  Температур  өгөгдлийг хүлээн авах үед  “одоо”-гийн түр зуурын тайлбарыг өгдөг. Иймээс тухайн төхөөрөмж нь  температурын хамт огноо, цаг хугацааг бичиж авдаг.  Температурын мэдээлэл бүртгэгчид холбогдох үед температур бүрт огноо, цаг (мета өгөгдлийг) тайлагнах ёстой.  

Тоон өгөгдөл буюу дижитал өгөгдөл нь 0 ба 1 цифрээр төлөөлөгддөг хоёртын системийн өгөгдөл юм.  Энэ нь аналог системийн эсрэг үзүүлэлт юм. Орчин үеийн (1960-аас хойш) компьютерийн бүх өгөгдөл тоон систем болсон. Компьютерын өгөгдөл нь ихэнх тохиолдолд зэрэгцээ холбоогоор хөдөлдөг. Зэрэгцээ холбоо, цуваа холбооны талаар үзнэ үү. Өгөгдөл нь аналог төхөөрөмжийн эх үүсвэр юм, энэ нь температур мэдрэгчтэй адил, "аналог тоон хувиргагч " буюу "ADC" -ийг дамжин өнгөрч дижитал өгөгдлийг аналог өгөгдөл рүү шилжүүлнэ. 

Өгөгдөл нь тоо хэмжээ, тэмдэгтүүд, эсвэл компьютерт хадгалагдсан тэмдэгтүүд бас соронзон дээр бичигдсэн, гэрлийн эсвэл гараар бичигдсэн мэдээлэл бас дижитал цахилгаан дохиог төлөөлдөг.  

Програм гэдэг нь компьютер болон бусад машины үйл ажиллагааг удирдахын тулд кодлосон програм хангамжийн зааварчилгааны дарааллуудаас тогтсон өгөгдлийн багц юм.  

Бодит компьютерийн санах ойн элементүүдийн  хаяг, мэдээлэл нь байт / үг- ээс бүрдэнэ. Тоон өгөгдөл нь ихэвчлэн хүснэгт, SQL өгөгдлийн сан гэх мэт харилцан хамааралтай өгөгдлийн сангуудад хадгалагддаг ба ерөнхийдөө хийсвэр түлхүүр/утгын хослол маягаар үзүүлэгдэж болно. Өгөгдөл нь өгөгдлийн бүтэцийн өөр өөр олон төрөл, бүрэлдэхүүн, график, болон обьектуудыг зэрэг зохион байгуулж чадна. Өгөгдлийн бүтэц нь маш олон өөр өөр төрлийн, тоо, мөр, тэр ч байтугай бусад өгөгдлийн бүтэц зэрэг мэдээллийг хадгалаж чадна. Өгөгдөлийг нэмэлт тоног төхөөрөмжийн тусламжтайгаар компьютерьт оруулж, гаргаж  болно. 

Өөр нэг төрлийн хэрэглээ нь хоёртын тооллын файлуудыг (хүн уншиж болохоор биш ) текстээс ялгах зорилгоор "өгөгдөл" гэж нэрлэдэг.  2007 оны байдлаар тоон өгөгдлийн нийт хэмжээг 281 тэрбум гигабайт гэж тооцсон байдаг.

## Шинж чанар
Үүний мөн чанар нь, нэгж өгөгдөл тодорхой байрлалд  үнэ цэнээ хадгалах юм.  

Үндсэндээ, компьютерууд өгөгдөл хэлбэрээр өгөгдсөн зааварчилгаануудын дарааллыг дагадаг. Өгөгдсөн ажлыг гүйцэтгэх зааварчилгааны багцыг программ гэдэг. Тухайн тохиолдолд, компьютероор гүйцэтгэгддэг программ нь хоёртын машины кодоос тогтоно. Компьютерийн үйлдлийг программаар удирддаг  ч CPU-р гүйцэтгэдэггүй, энэ нь ч мөн адил өгөгдөл юм. Програмын зааварчилгаа, програмын удирддаг өгөгдөл хоёр нь хоёулаа яг ижил замаар хадгалагддаг. Цаашлаад компьютерийн програмууд өөр компьютерийн програмууд дээр тэдний програмын өгөгдлийг удирдах замаар ажиллах боломжтой.

Програм ба өгөгдлийн хоорон дахь шугам тодорхой биш байж болно. Жишээ нь, interpreter (орчуулагч) нь хэмээх програм байдаг. Орчуулагч руу орох оролтын өгөгдөл нь угаас машины хэл дээр илэрхийлэгдсэн ердийн нэгэн зүйл биш, энэ нь өөрөө программ юм. Ихэнх тохиолдолд орчуулагдсан програм нь текст хянагч програмаар (эгэл текстэн өгөгдөлтэй илүү энгийнээр зохицдог) удирдагдсан хүн уншиж болох текстийн файл болно. Метапрограмминг мөн адилаар бусад програмыг өгөгдөл маягаар удирддаг програмыг татан оролцуулдаг. Түүвэрлэгч, холбогч, дебаггер, програм сайжруулагч, вирус хайгч гэх мэм програмууд бусад програмыг өгөгдөлөө болгож ашигладаг.

Файлд өгөгдлийн байт хадгалахын тулд файлын форматад тохируулагдсан байх ёстой. Ерөнхийдөө програмууд бусад өгөгдөлд хэрэглэдгээс ялгаатай тусгай файлын төрөлд хадгалагддаг. Гүйцэтгэгдэхүйц файлууд програм агуулдаг, бусад бүх файлууд ч бас өгөгдлийн файл байдаг. Хэдий тийм ч гүйцэтгэгдэхүйц файлууд програмд “built-in”-ддэг “in-line” өгөгдөл агуулдаг. Нарийвчилбал зарим гүйцэтгэгдэхүйц файлууд тогтмол ба анхдагч утгуудыг (хоёулаа өгөгдөл) нэр төдий агуулдаг өгөгдлийн сегмент гэгчийг агуулдаг.

Жишээ нь, нэгэн хэрэглэгч нэг файлаас үг боловсруулах програм ачааллахын тулд үйлдлийн системийг анх зааварчилсан байна, тэгээд үг боловсруулах програмтай өөр нэгэн файлд хадгалагдсан баримт бичиг (документ) янзлах байв. Энэ жишээн дээр баримт бичиг нь өгөгдөл гэж тооцогдоно. Үг боловсруулагч хэрэв зөв бичгийн алдаа шалгадаг бол үүний үгийн жагсаалт нь өгөгдөл нь болно. Зөв бичгийн алдаа шалгах алгоритм нь нэг бол машины кодон өгөгдөл болно, эсвэл тайлбарлаж болох ямар нэг програмчлалын хэлний текст болно.

## Өгөгдлийн түлхүүр ба утгууд, байгууламж ба тогтмол
Өгөгдөл дэх түлхүүрүүд утгуудыг контекстоор хангаж байдаг. Өгөгдлийн байгууламжаас үл хамааран түлхүүрийн олонлог үзэгдэж байдаг. Өгөгдөл дэх өгөгдлийн түлхүүр ба өгөгдлийн байгууламж нь өгөгдлийн утгад өгч байгаа утгын үндсэн суурь юм. Аливаа утга ба байгууламж дахь утгын цуглуулгатай шууд болон шууд бусаар холбогдсон түлхүүргүйгээр утгууд нь утгагүй болдог бөгөөд өгөгдөл байхаа больдог. Өөрөөр хэлбэл, өгөгдөл гэж тооцогдохын тулд утгын олонлогт холбогдсон дор хаяж нэг түлхүүрийн олонлог байхаас өөр аргагүй юм. Өгөгдөлийн дараах жишээнүүдээр нэг зэрэг олон аргаар компьютерт илэрхийлж болно:

**RAM (Random Access Memory-Шуурхай Санах Ой)**
•	Шуурхай санах ой нь компьютерийн процессорын (CPU) шууд хандсан өгөгдлүүдийг хадгалж байдаг. CPU санах ойд эсвэл өөр дээрээ өгөгдлийг ашиглаж болно.Энэ нь процессор өгөгдлийг хадгалалтын хэрэгсэл ба санах ойн хооронд зөөвөрлөх ёстой өгөгдлийн байнгын хадгалалтын эсрэг нь юм. RAM нь процессор унших ба бичих үйл ажиллагаанд хаяг өгөх замаар уншиж бичиж болдог шугаман зэргэлдээ байрлалуудын 1 ба хэд хэдэн блокын өгөгдлийн цуваа юм. RAM гэдгийн “random” буюу дурын гэдэг нь процессор ямар ч дарааллаар, ямар ч үед, санах ойн аль ч байршилд үйл ажиллагаагаа явуулж болно гэсэн үг. (Memory management unit-г хар). RAM-д өгөгдлий хамгийн бага элемент нь “Хоёртын бит” юм. RAM-д хандах хүчин чадал ба хязгаар нь процессорын тусгай мэдээлэл юм. Үндсэн санах ой буюу RAM нь “цахилгаан унтраалгын свич”-ийн өгөгдлийн цуваа эсвэл арванзургаатын тооллын системийн 0-ийн хаяг дээр эхлэлтэй байрлалаар эрэмбэлэгдсэн байдаг. Байрлал бүр процессорын байгууламжаас хамаарч ихэвчлэн 8, 16, 32, 64 параллель битээр хадгалагддаг. Цаашлаад RAM дахь нэг байтад хадгалагдсан ямар ч утга n нь санах ойн байршлын өгөгдлийн цуваа руу салаалсан 0+n байх санах ойн өгөгдлийн цуваан дахь санах ойн хамгийн эхний байршлаас гарсан салаа буюу тохирсон байршилтай байдаг.

**Түлхүүр**
* Өгөгдлийн түлхүүр санах ойд  техник хангамжийн хаяг байх шаардлагагүй . Шууд бус, хийсвэр, логик түлхүүр кодууд өгөгдлийн байгууламж байгуулах утгатайгаар хадгалагдаж болно. Өгөгдлийн байгууламжууд өгөгдлийн утгууд хадгалагдсан хэсэгт байгууламжийн эхнээс л урьдчилан төлөвлөсөн салаануудтай байна. Цаашлаад өгөгдлийн түлхүүр байгууламж руу орох салаан дээр нэмэгдэх түлхүүрүүдээс тогтоно. Ийм байгууламжууд давтагдсан үед өгөгдлийн утгууд болон түлхүүрүүдийг давтагдаж буй ижил байгууламжуудад хадгалахад үр дүнд нь давтагдаж буй байгууламжууд багана, байгууламж тус бүрийн давталт нь мөр болсон хүснэгт үүсгэж болдог. Өгөгдлийн иймэрхүү зохион байгуулалтад өгөгдлийн түлхүүр нь ихэвчлэн багануудын нэгэнд байдаг.
**Зохион байгуулалттай өгөгдлийн давталттай байгууламж**
* Давталттай өгөгдлийн байгууламжийн хүснэгтэн байдал бол олон боломжит аргуудаас сонгох зөвхөн нэг л арга зам юм. Давталттай өгөгдлийн байгууламжийг зангилаа нь эхтэй, салаатай шаталсан маягтайгаар зохион байгуулж болно. Утгууд болон цогц өгөгдлүүд нь зангилаанд холбогдсон байна. Ийм маягаар зангилаатай шаталсан хэлбэр нь өгөгдлийн хаяглалтын түлхүүр болж зангилаан холбож өгдөг. Энэ үзүүлэн модны үндсийг санагдуулж болох юм. Жишээлбэл, орчин үеийн компьютерийн үйлдлийн систем нь үүний нийтлэг нэгэн жишээ юм.
**Эрэмбэлэгдсэн өгөгдөл**
* Өгөгдөл түлхүүрээрээ эрэмбэлэгдэх үедээ өөрийн гэсэн онцлогуудтай болдог. Түлхүүрийн дэд олонлог дахь бүх утгууд хамт харагддаг. Ижил түлхүүрээр өгөгдлийн бүлгүүд рүү дарааллан нэвтрэх үед эсвэл түлхүүрийн дэд олонлог өөрчлөгдөх үед энэ нь гэмтэл, эсвэл удирдлагын гэмтэл гэж тооцогддог. Ялангуяа энэ нь түлхүүрийн дэд олонлог дээр өгөгдөл хуримтлагдахаас хөнгөвчилж өгдөг.
**Гадаад тоног төхөөрөмжийн санах ой**
* USB холболт гэх мэт компьютероос гадна санах ой гарч ирэх хүртэл тогтмол өгөгдлийн санах ойг соронзон хальс, диск драйв гэх мэт гадаад блок дээр өгөгдөл бичих уламжлалт арга ашиглаж авдаг байсан. Ийм хэрэгслүүд ерөнхийдөө соронзон хальсны мэдээллийн байрлал руу гүйлгээд, тэгээд урьдчилан төлөвлөсөн хэмжээний хэсэг өгөгдлийг уншиж, бичдэг байсан. Энэ нөхцөлд мэдээллийн гүйлгэлт нь өгөгдлийн түлхүүр болж, блокууд нь өгөгдлийн утга байв. Эхэн үеийн өгөгдлийн файлын систем буюу дискний үйлдлийн систем нь өгөгдлийн файлд зориулсан диск драйв дээрх зэргэлдээ блокуудыг нөөцөлдөг байв. Ийм системүүдэд бүх өгөгдөл бичигдэхээсээ өмнө санах ойг дүүргэчихэж ч болдог байв. Иймээс ихээхэн өгөгдлийн зай нөхцөл байдлыг муутгахаас сэргийлж хэрэглэгдэхгүйгээр нөөцлөгддөг байв. Үүнийг боловсруулаагүй диск ч гэдэг байв. Сүүлийн үеийн файлын системүүд хэсэглэх аргыг танилцуулсан. Тэд дискний өгөгдлийн зайг хэсэг хэсгээр нөөцөлж, төсөвлөсөн хэсэг хэсэг блокийг хэрэгцээнийх нь хэрээр хөдөлгөөнтэйгөөр хандах замаар блокуудыг илүү хэмнэлттэйгээр ашигласан. Үүнд хүрэхийн тулд файлийн системүүд файлын төсвийн хүснэгт эсвэл өгөгдлийн файлын блокууд дээр анхаарлаа хандуулахаас өөр аргагүй болсон. Хэдийгээр энэ нь дискний өгөгдлийн зайны илүү дээр ашиглалтыг бий болгосон ч , үр дүнд нь дискэн дээр файл хэсэгчлэгдэх, хугацаанаас үүдэлтэй дагалдах үйлдлийн нэмэлт зардал үүссэн. Орчин үеийн файлын систем файлын хандах хугацааг бататгахын тулд хэсэгчлэгдсэн файлыг дахин зохион байгуулдаг. Файлын системийн үсрэнгүй хөгжил нь логик драйв хэд хэдэн физик драйваас хэсэг хэсгээрээ тодорхойлогдож болдог, диск драйвын виртуалжуулалтад хөтөлсөн.
**Индексжүүлсэн өгөгдөл**
* Томоохон олонлогоос өгөгдлийн жижиг дэд олонлогийг гаргаж сэргээх нь өгөгдлийг дараалалтайгаар хайх давхар утгатай. Энэ нь хэмнэлттэй зүйл биш юм. Индекс нь файл, хүснэгт, өгөгдлийн олонлогт өгөгдлийн байгууламжаас түлхүүр ба байршлын хаягийг хуулах, тэгээд дараа нь эх өгөгдлийн дэд олонлогийг сэргээж авах цагийг багасгахын тулд модны үндсэн загварыг  ашиглаж  зохион байгуулдаг. Үүнийг хийхийн тулд сэргээн гарган авах явц эхлэхээс өмнө сэргээх өгөгдлийн дэд олонлогийн түлхүүр мэдэгдэж байх ёстой. Хамгийн түгээмэл индексүүд бол В-мод ба чагт тэмдгийн аргууд билээ. Индексжүүлэх нь мөн сэргээн гарган авах болон файлд гарах нэмэлт төлбөр ихтэй байдаг өөр нэг жишээ юм. Индекс зохион байгуулах өөр өөр аргууд байдаг, жишээлбэл түлхүүр эсвэл тоо хэмжээний зөв эсэхийг шалгах, шалгалтыг эрэмбэлэх (түлхүүр ба өгөгдлийг хамтад нь ч) ба тэдэн дээр хоёртын хайлт хийх гэх мэт...
**Хийсвэрлэлт ба шууд бус байдал**
* Объектийн чиг баримжаа нь өгөгдөл ба программыг ойлгох 2 суурь үзэл баримтлалыг ашигладаг: 1) Шаталсан өгөгдлийн байгууламжийн жишээ болох program-code classes-ийн таксономийн эрэмбэтэй байгууламж 2) Ачааллах үедээ өгөгдлийн түлхүүрийн үүсэл class library-с жишээгээр үзүүлэгдсэн объектуудын санах ойн өгөгдлийн байгууламжид хандаж лавладаг. Нарийвчилсан ангийн объект, гүйцэтгэгдэж байгаа жишээ үзүүлэлтийн дараа л оршин байдаг. Объектийн түлхүүрийн лавлагаа хоослогдсны дараа тэр объектоор лавлагдсан өгөгдөл, өгөгдөл байхаа больдог ба цаашлаад объект ч бас оршин байхаа больдог. Объектийн өгөгдөл хадгалагдсан санах ойн байршил тэгээд хэрэггүй болж дахин ашиглахад, хоосон зай болж ангилагддаг.
**Өгөгдлийн сангийн өгөгдөл**
* Өгөгдлийн сангийн бий болсонтой холбоотойгооох тогтмол өгөгдөл хадгалалтанд зориулж илүү зайтай хийсвэр давхрага бий болгосон. Өгөгдлийн сангууд тогтмол өгөгдлийн үед метадата, хэрэглэгч ба серверийн системийн хооронд байгууламжтай лавлах, хэлийн протокол ашиглаж сүлжээгээр холбон шилжүүлгийн бүрэн бүтэн байдлыг шалгах зэрэг 2 үе шаттай  нэвтрэх систем ашиглаж байна.
**Зэрэгцээ хуваарилагдсан өгөгдөл боловсруулах**
* Орчин үеийн өргөжсөн, өндөр хүчин чадалтай өгөгдлийн тогтмолын технологи нь өндөр өргөн хүрээний сүлжээн дэх олон тооны бүтээгдэхүүн компьютерууд дээрх зэрэгцээ хуваарилагдсан өгөгдөл боловсруулалтаас ихээхэн хамааралтай байна. Үүний нэг жишээ бол Apache Hadoop юм. Ийм системүүдэд өгөгдөл хэд хэдэн компьютеруудад хуваарилагдсан ба систем дэх аль ч компьютер өгөгдлийн түлхүүрт шууд ба шууд бусаар үзүүлэгдсэн байх ёстой. Энэ нь тус бүртээ нэг зэрэг өөр өөр компьютеруудад боловсруулагддаг өгөгдлийн 2 төсөөтэй олонлогийн хоорон дахь ялгаатай байдлыг хүлээн зөвшөөрдөг.