Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Pib - saib part 1.

3. Cov qauv sib txawv thaum siv thoob ntiaj teb

Cov qauv xws li cov ntoo txiav txim muaj ntau yam tshwj xeeb. Cia peb xav txog cov uas muaj txiaj ntsig zoo thaum ua haujlwm nrog thoob ntiaj teb.

3.1 Cov ntaub ntawv tshwj xeeb 1. Ib qho tsis muaj ceg


Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Ntiaj teb no tuaj yeem siv tsis tau tsuas yog zoo li ib qho array xwb, tab sis kuj nyiam cov hloov pauv tsis tu ncua. Piv txwv li, raws li ib tug counter:

Set ^counter = 0  ; установка счётчика
Set id=$Increment(^counter) ;  атомарное инкрементирование

Hauv qhov no, lub ntiaj teb, ntxiv rau nws lub ntsiab lus, tuaj yeem muaj ceg. Ib tug tsis cais lwm tus.

3.2 Cov ntaub ntawv tshwj xeeb 2. Ib qho vertex thiab ntau ceg

Feem ntau, qhov no yog lub hauv paus tseem ceeb-tus nqi classic. Thiab yog tias peb txuag ib tuple ntawm qhov tseem ceeb raws li tus nqi, peb yuav tau txais ib lub rooj zoo tib yam nrog lub ntsiab tseem ceeb.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2

Txhawm rau siv lub rooj rau thoob ntiaj teb, peb yuav tsum tsim cov kab peb tus kheej los ntawm kab ntawv tseem ceeb, thiab tom qab ntawd txuag lawv mus rau lub ntiaj teb siv tus yuam sij tseem ceeb. Txhawm rau ua kom nws tuaj yeem faib cov hlua rau hauv kab dua thaum nyeem ntawv, koj tuaj yeem siv:

  1. delimiter cov cim.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. ib tug nruj scheme nyob rau hauv uas txhua daim teb occupies ib tug predetermined tus naj npawb ntawm bytes. Raws li tau ua tiav hauv kev sib txheeb databases.
  3. ib qho haujlwm tshwj xeeb $LB (muaj nyob hauv Cache), uas tsim cov hlua ntawm qhov tseem ceeb.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Interestingly, nws tsis yooj yim rau siv thoob ntiaj teb los ua ib yam dab tsi zoo ib yam li theem nrab indexes hauv kev sib raug zoo databases. Cia peb hu cov qauv no index globals. Ib qho kev ntsuas thoob ntiaj teb yog ib tsob ntoo pabcuam rau kev tshawb nrhiav sai sai uas tsis yog ib feem ntawm qhov tseem ceeb ntawm lub ntiaj teb tseem ceeb. Txhawm rau sau thiab siv nws, koj yuav tsum sau cov lej ntxiv.

Cia peb tsim qhov ntsuas thoob ntiaj teb ntawm thawj kab.

Set ^i("col11", id1) = 1
Set ^i("col12", id2) = 1

Tam sim no, txhawm rau tshawb nrhiav cov ntaub ntawv sai sai hauv thawj kab, peb yuav tsum saib mus rau hauv lub ntiaj teb ^i thiab nrhiav cov yuam sij tseem ceeb (id) sib raug rau tus nqi xav tau ntawm thawj kab.

Thaum tso tus nqi, peb tuaj yeem tsim tam sim ntawd tus nqi thiab qhov ntsuas thoob ntiaj teb rau cov teb uas xav tau. Thiab rau kev ntseeg siab, cia peb qhwv nws tag nrho hauv kev lag luam.

TSTART
Set ^t(id1) = $LB("col11", "col21", "col31")
Set ^i("col11", id1) = 1
TCOMMIT

Paub meej txog yuav ua li cas rau M rooj ntawm thoob ntiaj teb, emulation ntawm theem nrab indexes.

Cov ntxhuav zoo li no yuav ua haujlwm sai li sai tau hauv cov ntaub ntawv ib txwm muaj (lossis sai dua) yog tias cov haujlwm rau kev ntxig / hloov kho / tshem cov kab sau hauv COS / M thiab muab tso ua ke.Kuv tau tshuaj xyuas cov nqe lus no nrog cov kev ntsuam xyuas ntawm ntau INSERT thiab SELECT rau hauv ib lub rooj ob kab lus, suav nrog kev siv TSTART thiab TOCOMMIT cov lus txib (kev lag luam).

Kuv tsis tau sim cov xwm txheej nyuaj ntxiv nrog rau kev nkag mus thiab kev sib txuas ua ke.

Tsis siv cov kev hloov pauv, tus nqi nkag yog 778 ntxig / thib ob rau ib lab tus nqi.
Nrog 300 lab tus nqi - 422 inserts / thib ob.

Thaum siv kev lag luam - 572 inserts / thib ob rau 082M inserts. Txhua qhov haujlwm tau ua los ntawm kev sau M code.
Hard drives tsis tu ncua, tsis yog SSD. RAID5 nrog Sau-rov qab. Phenom II 1100T processor.

Txhawm rau kuaj SQL database hauv ib txoj hauv kev zoo sib xws, koj yuav tsum sau cov txheej txheem khaws cia uas yuav ua qhov ntxig rau hauv lub voj. Thaum kuaj MySQL 5.5 (InnoDB cia), siv txoj kev no kuv tau txais cov lej tsis pub ntau tshaj 11K ntxig ib ob.
Yog lawm, kev siv cov ntxhuav hauv ntiaj teb zoo li nyuaj dua hauv cov ntaub ntawv sib txheeb. Yog li ntawd, kev lag luam databases hauv ntiaj teb no muaj SQL nkag mus ua haujlwm yooj yim nrog cov ntaub ntawv tabular.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Feem ntau, yog tias cov ntaub ntawv schema yuav tsis hloov ntau zaus, qhov nkag ceev tsis yog qhov tseem ceeb thiab tag nrho cov ntaub ntawv tuaj yeem sawv cev tau yooj yim hauv daim ntawv ntawm cov ntxhuav, ces nws yooj yim dua los ua haujlwm nrog SQL, vim nws muab qib siab dua ntawm abstraction. .

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Hauv qhov tshwj xeeb no kuv xav qhia qhov ntawd ntiaj teb no tuaj yeem ua tus tsim tsim los tsim lwm cov databases. Zoo li ib tug assembler uas lwm yam lus sau tau. Nov yog cov piv txwv ntawm yuav ua li cas koj tuaj yeem tsim cov analogues hauv ntiaj teb key-value, lists, sets, tabular, document-oriented databases.

Yog tias koj xav tau tsim qee yam tsis yog tus qauv database nrog kev siv zog tsawg, ces koj yuav tsum saib mus rau lub ntiaj teb.

3.3 Cov ntaub ntawv tshwj xeeb 3. Ob-theem ntoo, txhua qhov ntawm qib thib ob muaj cov ceg ntoo ruaj khov

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Tej zaum koj yuav twv nws: qhov no yog lwm txoj hauv kev siv cov rooj hauv ntiaj teb. Cia peb piv qhov kev siv no nrog rau yav dhau los.

Cov ntxhuav ntawm tsob ntoo ob theem vs. ntawm tsob ntoo ib theem.

Daim ntawv
Yav tas los

  1. qeeb rau kev ntxig, txij li koj yuav tsum teeb tsa tus naj npawb ntawm cov nodes sib npaug ntawm cov kab.
  2. Ntau qhov chaw siv disk. Txij li thaum lub ntiaj teb indexes (xws li array indexes) nrog kem npe coj mus rau qhov chaw disk thiab duplicated rau txhua kab.

  1. Kev nkag tau sai dua rau cov txiaj ntsig ntawm tus kheej txhua kab, txij li tsis tas yuav cais cov hlua. Raws li kuv cov kev ntsuam xyuas, nws yog 11,5% sai dua ntawm 2 kab thiab ntau dua ntawm cov kab ntau dua.
  2. Yooj yim hloov cov ntaub ntawv schema
  3. Cov lej meej dua

Xaus: tsis yog rau sawv daws. Txij li kev ceev yog ib qho txiaj ntsig tseem ceeb tshaj plaws ntawm lub ntiaj teb, tsis muaj qhov taw qhia me me hauv kev siv qhov kev siv no, vim tias nws yuav ua tau zoo dua tsis tau nrawm dua li cov ntxhuav hauv cov ntaub ntawv sib txheeb.

3.4 General Case. Ntoo thiab txiav ntoo

Txhua cov ntaub ntawv qauv uas tuaj yeem sawv cev raws li tsob ntoo haum zoo kawg nkaus nrog lub ntiaj teb.

3.4.1 Cov khoom nrog cov ntsiab lus

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2

Qhov no yog thaj tsam ntawm kev siv ib txwm siv thoob ntiaj teb. Hauv kev kho mob muaj ntau yam kab mob, tshuaj, cov tsos mob, thiab kev kho mob. Nws yog irrational los tsim ib lub rooj nrog ib lab teb rau txhua tus neeg mob. Ntxiv mus, 99% ntawm cov teb yuav khoob.

Xav txog cov ntaub ntawv SQL ntawm cov ntxhuav: "tus neeg mob" ~ 100 teb, "Tshuaj" - 000 teb, "Kev Kho" - 100 teb, "Cov Teeb Meem" - 000 teb, thiab lwm yam. thiab lwm yam. Lossis koj tuaj yeem tsim cov ntaub ntawv ntawm ntau txhiab lub rooj, txhua tus rau ib hom neeg mob (thiab lawv tuaj yeem sib tshooj!), kev kho mob, tshuaj, thiab ntau txhiab lub rooj sib txuas ntawm cov rooj no.

Lub ntiaj teb no zoo tagnrho rau cov tshuaj, raws li lawv tso cai rau koj los tsim rau txhua tus neeg mob cov lus piav qhia meej ntawm nws cov keeb kwm kev kho mob, ntau yam kev kho mob, thiab cov kev ua ntawm cov tshuaj, nyob rau hauv daim ntawv ntawm ib tsob ntoo, tsis txhob nkim ntxiv disk qhov chaw nyob rau hauv seem seem. yuav ua li cas nyob rau hauv ib tug kev sib raug zoo rooj plaub.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Siv thoob ntiaj teb nws yooj yim los tsim cov ntaub ntawv nrog cov ntaub ntawv hais txog tib neeg, thaum nws yog ib qho tseem ceeb rau sau thiab systematize ib tug siab tshaj plaws ntawm ntau yam ntaub ntawv hais txog tus neeg siv khoom. Qhov no yog qhov xav tau hauv cov tshuaj, kev lag luam, kev lag luam, archiving thiab lwm qhov chaw

.
Tau kawg, hauv SQL koj tuaj yeem ua raws li tsob ntoo nrog ob peb lub rooj (EAV, 1,2,3,4,5,6,7,8,9,10), txawm li cas los xij qhov no tseem ceeb dua thiab yuav qeeb dua. Qhov tseem ceeb, koj yuav tsum tau sau lub ntiaj teb uas ua haujlwm ntawm cov ntxhuav thiab zais tag nrho cov haujlwm nrog cov ntxhuav hauv qab txheej abstraction. Nws yog qhov tsis ncaj ncees rau kev ua raws li cov thev naus laus zis qis (thoob ntiaj teb) siv cov thev naus laus zis siab dua (SQL). Tsis tsim nyog.

Nws tsis muaj qhov zais cia uas hloov cov ntaub ntawv schema ntawm cov ntxhuav loj (ALTER TABLE) tuaj yeem siv sijhawm ncaj ncees. MySQL, piv txwv li, ua ALTER TABLE ADD|DROP COLUMN los ntawm kev luam cov ntaub ntawv los ntawm lub rooj qub mus rau lub rooj tshiab (kuaj MyISAM, InnoDB cav). Qhov twg tuaj yeem dai cov ntaub ntawv ua haujlwm nrog ntau lab cov ntaub ntawv rau hnub, yog tias tsis yog lub lis piam.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2Hloov cov ntaub ntawv qauv yog tias peb siv thoob ntiaj teb ua nqi peb tsis muaj dab tsi. Txhua lub sijhawm peb tuaj yeem ntxiv cov khoom tshiab uas peb xav tau rau txhua yam khoom, ntawm txhua qib ntawm hierarchy. Cov kev hloov pauv cuam tshuam nrog kev hloov npe cov ceg tuaj yeem khiav hauv keeb kwm yav dhau ntawm cov ntaub ntawv khiav.


Yog li ntawd, thaum nws los txog rau khaws cov khoom nrog ntau tus lej ntawm cov khoom xaiv, thoob ntiaj teb yog qhov kev xaiv zoo.

Ntxiv mus, cia kuv ceeb toom rau koj tias kev nkag mus rau ib qho ntawm cov khoom tam sim no, txij li hauv ntiaj teb txhua txoj hauv kev yog B-ntoo.

Cov ntaub ntawv thoob ntiaj teb, feem ntau, yog hom ntaub ntawv-oriented database nrog lub peev xwm khaws cov ntaub ntawv hierarchical. Yog li ntawd, cov ntaub ntawv-taw qhia cov ntaub ntawv tuaj yeem sib tw nrog thoob ntiaj teb hauv kev khaws cov ntaub ntawv kho mob. Tab sis nws tseem tsis zoo li qubCia peb coj MongoDB rau kev sib piv. Hauv no domain nws poob rau lub ntiaj teb no vim li no:

  1. Cov ntaub ntawv loj. Chav tsev cia yog cov ntawv hauv JSON hom (ntau dua BSON) nrog qhov ntim siab tshaj plaws ntawm 16MB. Qhov kev txwv no tau tsim tshwj xeeb kom cov ntaub ntawv JSON tsis qeeb thaum lub sijhawm txheeb xyuas yog tias cov ntaub ntawv loj loj JSON khaws cia rau hauv nws thiab tom qab ntawd nkag los ntawm cov teb. Cov ntaub ntawv no yuav tsum muaj tag nrho cov ntaub ntawv hais txog tus neeg mob. Peb txhua tus paub tias cov ntaub ntawv tus neeg mob tuab npaum li cas tuaj yeem ua tau. Qhov siab tshaj plaws daim npav loj ntawm 16MB tam sim ntawd tso tseg rau cov neeg mob uas nws daim npav kab mob suav nrog MRI cov ntaub ntawv, X-ray scans thiab lwm yam kev tshawb fawb. Hauv ib ceg ntawm lub ntiaj teb koj tuaj yeem muaj gigabytes thiab terabytes ntawm cov ntaub ntawv. Hauv txoj ntsiab cai, peb tuaj yeem xaus rau qhov no, tab sis kuv yuav txuas ntxiv mus.
  2. Lub sij hawm nco ntsoov / hloov / tshem tawm cov khoom tshiab hauv tus neeg mob daim ntawv. Xws li cov ntaub ntawv yuav tsum tau nyeem tag nrho daim ntawv qhia rau hauv lub cim xeeb (qhov no yog ib qho loj heev!), parse BSON, ntxiv / hloov / rho tawm ib qho tshiab, hloov tshiab indexes, ntim rau hauv BSON, thiab khaws cia rau disk. Lub ntiaj teb tsuas yog yuav tsum nkag mus rau ib qho khoom tshwj xeeb thiab tswj nws.
  3. Nkag mus ceev rau cov khoom ntiag tug. Nrog rau ntau yam khoom hauv ib daim ntawv thiab nws cov qauv ntau theem, kev nkag mus rau cov khoom ntiag tug yuav nrawm dua vim tias txhua txoj hauv kev hauv ntiaj teb yog B-ntoo. Nyob rau hauv BSON, koj yuav tsum linearly parse cov ntaub ntawv kom nrhiav tau cov khoom uas xav tau.

3.3.2 Associative arrays

Associative arrays (txawm tias nrog cov nested arrays) haum zoo kawg nkaus hauv ntiaj teb. Piv txwv li, xws li ib qho array los ntawm PHP yuav tshwm sim hauv thawj daim duab 3.3.1.

$a = array(
  "name" => "Vince Medvedev",
  "city" => "Moscow",
  "threatments" => array(
    "surgeries" => array("apedicectomy", "biopsy"),
    "radiation" => array("gamma", "x-rays"),
    "physiotherapy" => array("knee", "shoulder")
  )
);

3.3.3 Cov ntaub ntawv Hierarchical: XML, JSON

Kuj yooj yim khaws cia hauv ntiaj teb. Nws tuaj yeem muab tso rau hauv ntau txoj hauv kev rau kev khaws cia.

XML
Txoj hauv kev yooj yim tshaj plaws los rhuav tshem XML rau hauv ntiaj teb yog khaws cov cim cim hauv cov nodes. Thiab yog tias xav tau kev nkag mus rau cov cwj pwm nrawm, ces peb tuaj yeem txav lawv mus rau hauv nyias ceg.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2

<note id=5>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>

Ntawm COS qhov no yuav ua raws li cov cai:

Set ^xml("note")="id=5"
Set ^xml("note","to")="Саша"
Set ^xml("note","from")="Света"
Set ^xml("note","heading")="Напоминание"
Set ^xml("note","body")="Позвони мне завтра!"

Nco tseg: Rau XML, JSON, associative arrays, koj tuaj yeem tuaj nrog ntau txoj hauv kev los nthuav tawm thoob ntiaj teb. Hauv qhov no, peb tsis xav txog qhov kev txiav txim ntawm subtags hauv daim ntawv sau. Thoob ntiaj teb ^xml subtags yuav tshwm nyob rau hauv alphabetical order. Txhawm rau nruj me ntsis rau qhov kev txiav txim, koj tuaj yeem siv, piv txwv li, cov duab hauv qab no:

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2
JSON.
Thawj daim duab los ntawm ntu 3.3.1 qhia txog qhov kev xav ntawm JSON daim ntawv no:

var document = {
  "name": "Vince Medvedev",
  "city": "Moscow",
  "threatments": {
    "surgeries": ["apedicectomy", "biopsy"],
    "radiation": ["gamma", "x-rays"],
    "physiotherapy": ["knee", "shoulder"]
  },
};

3.3.4 Cov qauv zoo tib yam txuas nrog kev sib raug zoo ntawm hierarchical

Piv txwv li: cov qauv ntawm cov chaw muag khoom, qhov chaw ntawm cov neeg nyob rau hauv ib tug MLM qauv, lub database ntawm qhib nyob rau hauv chess.

Debuts database. Koj tuaj yeem siv lub zog stroke kwv yees li qhov ntsuas tus nqi ntawm lub ntiaj teb node. Tom qab ntawd, txhawm rau xaiv qhov muaj zog tshaj plaws, nws yuav txaus los xaiv ceg nrog qhov hnyav tshaj plaws. Hauv ntiaj teb no, txhua ceg ntawm txhua qib yuav raug txheeb xyuas los ntawm kev txav mus los.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2

Cov qauv ntawm cov chaw muag khoom, cov qauv ntawm cov neeg hauv MLM. Nodes tuaj yeem khaws qee qhov caching qhov tseem ceeb uas cuam tshuam cov yam ntxwv ntawm tag nrho cov ntoo. Piv txwv li, qhov muag ntim ntawm ib tug muab subtree. Thaum twg los xij peb tuaj yeem tau txais daim duab qhia txog kev ua tiav ntawm txhua ceg.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Ntoo. Ntu 2

4. Dab tsi yog qhov zoo tshaj plaws los siv thoob ntiaj teb?

Thawj kem nthuav tawm cov xwm txheej uas koj yuav tau txais kev nrawm nrawm los ntawm kev siv thoob ntiaj teb, thiab thib ob thaum tus qauv tsim lossis cov ntaub ntawv yuav yooj yim.

Ceev
Yooj yim ntawm kev ua cov ntaub ntawv / kev nthuav qhia

  1. Insertion [nrog tsis siv neeg sorting ntawm txhua qib], [indexing los ntawm tus tswv yuam sij]
  2. Tshem cov subtrees
  3. Cov khoom uas muaj ntau yam khoom zes uas xav tau kev nkag mus rau tus kheej
  4. Hierarchical qauv nrog lub peev xwm los hla cov ceg me me los ntawm txhua ceg, txawm tias tsis muaj nyob
  5. Qhov tob-thawj traversal ntawm subtrees
  1. Cov khoom / cov chaw uas muaj ntau qhov kev xaiv [thiab/los yog zes] cov khoom / cov chaw
  2. Schema-tsawg cov ntaub ntawv. Thaum cov khoom tshiab tuaj yeem tshwm sim thiab cov qub ploj mus.
  3. Koj yuav tsum tsim ib qho kev cai database.
  4. Txoj hauv paus thiab cov ntoo txiav txim siab. Thaum nws yog qhov yooj yim los sawv cev rau txoj kev raws li tsob ntoo.
  5. Tshem tawm cov txheej txheem hierarchical yam tsis siv rov ua dua

Tshaj Tawm "Lub ntiaj teb yog cov khoom muaj nqis-ntxuav rau khaws cov ntaub ntawv. Sparse arrays. Part 3".

Disclaimer: Kab lus no thiab kuv cov lus rau nws yog kuv lub tswv yim thiab tsis muaj kev cuam tshuam rau txoj haujlwm ntawm InterSystems Corporation.

Tau qhov twg los: www.hab.com

Ntxiv ib saib