Database engine

**Database engine** (эсвэл **storage engine**) бол ӨСУС-ийн ашигладаг ӨС-нд өгөдөлийг үүсгэх унших засварлах устгах үндсэн бүрэлдэхүүн програм хангамж юм.Бараг бүх ӨСУС нь өөрийн application programming interface(API)-тэй бидний хэлдэгээр CLI(command line interface). Энэ нв хэрэглэгч ӨСУС-ын engine-тэй хэрэглэгчийн инткрфейс буюу график интерфейс ашиглахгүйгээр шууд холбогдох боломжийг олгодог.
 Database engine гэдгийг ихэнхдээ | "database server" эсвэл "Database management system"-тэй харилцан уяалдуулж цугт нь хэлж заншсан.ӨС-ийн объект нь database engine-ны санах ойн байгуулалт , процессуудын ажиллагаанд ханддаг.

## Хадгалатын engine-үүд
Орчин үед ихэнх ӨСУС нь ижил төстэй database engine-үүд болон бусад ихэнх хадгалалтын engine-үүдийг бүгдийн дэмждэг.Жишээлбэл: MySql ӨСУС нь innodb engine-ийг MyISAM шиг сайн дэмждэг.
Хадгалалтын engine-үүд нь ӨСУС-г харьцаа ӨСУС болон харьцаа биш ӨСУС гэж ангилдагтай ижилээр ангилагддаг. 

Нэмэлт engine-нй төрөл:
*Embeded engine
*In-memory database engine

## Хэлэлцүүлэг, сэдлүүд
Мэдээллийн сан бит хүлээн авч, тэдгээрийг болон хадгалах өөрийн гэсэн шинж чанартай ажиллахын тулд аль алинд нь мэдэгдэж байгаа үр дүнтэй өгөгдлийн бүтэц ба хэсгүүдэд хадгалж байрлуулагдсан буй алгоритм ашиглана. Ер нь хадгалах нь өөрөө мэдээллийн сан гэх мэт өргөн ашиглагддаг төрөл бүрийн талбарууд, шаардлагыг хангаж хадгалах зорилготой юм.DBMS  нь үйл ажиллагаандаа үргэлж нэгэн зэрэг хэд хэдэн хадгалах төрлийн төхөөрөмжтэй(ж.нь санах ой, гадаад хадгалах төхөөрөмж) холбогдож зохион байгуулалтыг хийдэг.

Зарчмын хувьд мэдээллийн санг хадгалах нь шугаман хаягийн талбар ба мэдээлэл бүр  өөрийн орон зай дахь  давтагдашгүй хаягтай байна гэж үзнэ.Бодит байдал дээр, тухайн хадгалалтын орчинд маш бага хувь нь анхан шатны лавлагаа цэг болгон давхардалгүйгээр хаяглагдаж хадгалагдсан мөн өгөгдөл хандалтын үйл ажиллагааны оновчтой хандах замуудыг (заагч ашиглан) тодорхойлосон өгөгдлийн бүтцээр хандгалсан байх (энэ нь мөн түүнчлэн хадгалалтын шаардлага юм)бас бүх өгөдөл нь хамгийн үр дүнтэй заагчаар тодорхойлогдсон өгөгдөлийн бүтэцээр чиглүүлэлтгүй тооцоолол хийгддэг.
### Өгөдөлийн бүтэц
өгөгдлийн бүтэц нь сайн тодорхойлсон байдлаар өгөгдөл оруулдаг хийсвэр бүтэц юм.Үр ашигтай өгөгдлийн бүтэц нь өгөгдлийг үр ашигтай удирдах боломжоор хангана. Янз бүрийн төлөвд тухайн өгөгдөл оруулах, устгах, сэргээх, үед янз бүрийн арга заль хэрэглэж болно. Тодорхой өгөгдлийн бүтцийн төрөл нь тодорхой зарим үйл ажиллагаанд маш үр дүнтэй байж болох ба бусад нь үр ашиггүй байдаг.Агуулгад шаардлагатай үйл ажиллагааг хангахын тулд өгөгдлийн бүтцийн төрлүүдээс түүнд тохирсон хамгийн шилдэг өгөгдлийн төрөл нь DBMS хөгжилд сонгогддог.Тодорхой даалгаварт сонгогдсон өгөгдлийн бүтэц нь ихэвчлэн тухайн агуулагын төрөлд  хандалтын хурд, хандалтын хэсгүүд нь хэр бага хэмжээтэй(хандалт хэр их санах ой эзэлэх) гэх мэтийг харгалзан үздэг. Зарим DBMS-үүд өгөгдлийн сангийн администраторт хэрэглэгчийн өгөгдлийг гүйцэтгэлийн шалтгаанаар өгөгдлийн бүтцийг сонгох уян хатан чанартай байдаг.Заримдаа өгөгдлийн бүтэц нь өгөгдлийн сангийн гүйцэтгэлийг тааруулах сонголттой параметртэй байдаг(ямар engine сонгох гэх мэт).

Мэдээллийн сан нь олон өгөгдлийн бүтэц төрлийн өгөгдлийг хадгалж болно. Нийтлэг жишээ бол дараах байдалтай байна:
*flat files
*Хаш Хүсхэгтүүд
*Хоёртын+ мод
*ISAM
*[Овоолго](https://en.wikipedia.org/wiki/Heap_(data_structure))

### Database indexing
Индексжүүлэлт мэдээллийн баазын үйл ажиллагааг сайжруулахад ашиглах арга юм. Олон индексүүд нь хоорондоо нийтлэг шинж чанараа хаваалцаж query-ний ажжиллагаанд нэвтрэлт шалгалтыг багасгадаг. Том Өгөгдөлийн сангуудад эрэмбэлэх гэх мэт үйлдлүүдийн цаг хугацаа, өртгийг бууруулж чаддаг. Индексийн хамгийн хялбар хэлбэр нь хоёртын хайлтыг ашиглан эрэмбэлж буй эрэмблэгдсэн жагсаалтуудын жагсаалтыг оруулгын байршилтай нь адилхан, номны хуудасны дугаартай адилтгадаг. Ижил мэдээлэл нь олон тооны индекстэй байж болно (ажилтны мэдээллийн хүснэгтийг сүүлээс нь болон ажлын өдрөөр индексжүүлж болно).
Индексжүүлэлт нь гүйцэтгэлд нөлөөлдөгч хүсэлт илгээдэггүй.Өс-ийн дизайнарууд нь index-ийг програмын логикоос хамааралгүй нэмэж устгаж болно.

Ангилал:Өгөгдлийн менежмент
Ангилал:Өгөгдлийн сан удирдах систем