نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهپیل کول - لومړۍ برخه وګورئ.

3. د جوړښتونو ډولونه کله چې د ګلوبل کارول

یو جوړښت لکه یو ترتیب شوی ونې مختلف ځانګړي قضیې لري. راځئ چې هغه ته پام وکړو چې د نړیوالو سره کار کولو پرمهال عملي ارزښت لري.

3.1 ځانګړې قضیه 1. یو نوډ پرته له څانګو


نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهګلوبلونه نه یوازې د سرې په څیر کارول کیدی شي ، بلکه د منظم متغیرونو په څیر هم کارول کیدی شي. د مثال په توګه، د کاونټر په توګه:

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

په دې حالت کې، نړیوال، د هغې معنی سربیره، څانګې هم کولی شي. یو له بل څخه خارج نه کوي.

3.2 ځانګړې قضیه 2. یو عمودی او ډیری څانګې

په عموم کې، دا د کلاسیک کلیدي ارزښت اساس دی. او که موږ د ارزښتونو یوه برخه د ارزښت په توګه خوندي کړو ، نو موږ به د لومړني کیلي سره خورا عادي میز ترلاسه کړو.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه

په ګلوبل کې د جدول پلي کولو لپاره ، موږ باید د کالم ارزښتونو څخه پخپله قطارونه رامینځته کړو ، او بیا یې د لومړني کیلي په کارولو سره نړیوال ته خوندي کړو. د دې لپاره چې دا ممکنه کړئ چې تار په کالمونو کې بیا د لوستلو پر مهال ویشئ، تاسو کولی شئ وکاروئ:

  1. حروف محدودوي.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. یو سخت سکیم په کوم کې چې هر ساحه د مخکې ټاکل شوي شمیر بایټس نیسي. لکه څنګه چې په اړونده ډیټابیسونو کې ترسره کیږي.
  3. یو ځانګړی فعالیت $LB (په کیچ کې شتون لري) ، کوم چې د ارزښتونو تار رامینځته کوي.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

په زړه پورې خبره دا ده چې په اړونده ډیټابیسونو کې د ثانوي شاخصونو سره ورته یو څه ترسره کولو لپاره د نړیوالو کارول ستونزمن ندي. راځئ چې دا ډول جوړښتونه شاخص نړیوال ووایو. د شاخص نړیوال د ګړندي لټون ساحو لپاره یوه مرستندویه ونه ده چې د اصلي نړیوال لومړني کلیدي برخه نه ده. د دې ډکولو او کارولو لپاره، تاسو اړتیا لرئ چې اضافي کوډ ولیکئ.

راځئ چې په لومړي کالم کې نړیوال شاخص جوړ کړو.

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

اوس، په لومړي کالم کې د معلوماتو د چټک لټون لپاره، موږ باید نړیوال وګورو ^i او د لومړي کالم د مطلوب ارزښت سره سم لومړني کلیدونه (id) ومومئ.

کله چې ارزښت داخل کړئ، موږ کولی شو سمدلاسه د اړینو ساحو لپاره ارزښت او شاخص نړیوال دواړه جوړ کړو. او د اعتبار لپاره، راځئ چې دا ټول په راکړه ورکړه کې وتړو.

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

په M کې د دې کولو څرنګوالي په اړه توضیحات په نړۍ کې میزونه, د ثانوي شاخصونو تقلید.

دا ډول جدولونه به د دودیزو ډیټابیسونو په څیر ګړندي کار وکړي (یا حتی ګړندي) که چیرې د قطارونو داخلولو/تازه کولو / حذف کولو دندې په COS/M کې لیکل شوي وي او تالیف شوي وي.ما دا بیان په یو دوه کالم میز کې د بلک INSERT او SELECT ازموینو سره چیک کړ ، پشمول د TSTART او TCOMMIT کمانډونو (معاملاتو) کارول.

ما د ورته لاسرسي او موازي معاملو سره ډیر پیچلي سناریوګانې ندي ازمولي.

د معاملو کارولو پرته، د داخلولو کچه 778 داخلونه/ثانوي په هر ملیون ارزښت وه.
د 300 ملیون ارزښتونو سره - 422 داخلونه / ثانیه.

کله چې د راکړې ورکړې کارول - د 572M داخلولو لپاره 082 داخلونه / ثانیه. ټول عملیات د مرتب شوي M کوډ څخه ترسره شوي.
هارډ ډرایو منظم دي، نه SSD. د رایټ بیک سره RAID5. د فینوم II 1100T پروسیسر.

په ورته ډول د SQL ډیټابیس ازموینې لپاره ، تاسو اړتیا لرئ یو زیرمه شوي طرزالعمل ولیکئ چې په لوپ کې داخلونه ترسره کړي. کله چې د MySQL 5.5 (InnoDB ذخیره) ازموینه کول ، د دې میتود په کارولو سره ما په هره ثانیه کې د 11K داخلونو څخه ډیر شمیر ترلاسه کړل.
هو، په نړۍ کې د جدولونو پلي کول د اړونده ډیټابیسونو په پرتله خورا پیچلي ښکاري. له همدې امله، په نړیوالو کې صنعتي ډیټابیسونه د جدول ډیټا سره کار ساده کولو لپاره SQL لاسرسی لري.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهپه عموم کې ، که چیرې د ډیټا سکیما په مکرر ډول بدل نشي ، د ننوتلو سرعت مهم نه وي او ټول ډیټابیس په اسانۍ سره د نورمال شوي جدولونو په شکل کې ښودل کیدی شي ، نو د SQL سره کار کول اسانه دي ، ځکه چې دا د لوړې کچې خلاصون چمتو کوي. .

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهپدې ځانګړې قضیه کې ما غوښتل دا وښیم نړیوال کولی شي د نورو ډیټابیسونو رامینځته کولو لپاره د جوړونکي په توګه عمل وکړي. د یو جمع کونکي په څیر چې په نورو ژبو لیکل کیدی شي. دلته مثالونه دي چې تاسو څنګه کولی شئ په نړۍ کې انلاګونه رامینځته کړئ کلیدي ارزښت، لیستونه، سیټونه، جدول، د اسنادو پر بنسټ ډیټابیسونه.

که تاسو اړتیا لرئ د لږترلږه هڅې سره یو ډول غیر معیاري ډیټابیس رامینځته کړئ ، نو تاسو باید د نړۍ په لور وګورئ.

3.3 ځانګړې قضیه 3. دوه درجې ونې، د دویمې درجې هر نوډ یو ټاکلی شمیر څانګې لري

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهتاسو شاید اټکل کړی وي: دا په نړیوالو کې د جدولونو بدیل پلي کول دي. راځئ چې دا تطبیق د تیر سره پرتله کړو.

میزونه په دوه سطحه ونې کې په مقابل کې. په یوه سطحه ونه کې.

Минусы
Плюсы

  1. د ننوتلو لپاره ورو، ځکه چې تاسو اړتیا لرئ د نوډونو شمیر د کالمونو شمیر سره برابر کړئ.
  2. د ډیسک ځای ډیر مصرف. ځکه چې نړیوال شاخصونه (د سري شاخصونو په توګه پیژندل شوي) د کالم نومونو سره د ډیسک ځای نیسي او د هر قطار لپاره نقل شوي.

  1. د انفرادي کالمونو ارزښتونو ته ګړندي لاسرسی ، ځکه چې د تار پارس کولو ته اړتیا نشته. زما د ازموینو له مخې، دا په 11,5 کالمونو کې 2٪ ګړندی دی او نور په لوی شمیر کالمونو کې.
  2. د ډیټا سکیما بدلول اسانه دي
  3. نور روښانه کوډ

پایله: د ټولو لپاره نه. څرنګه چې سرعت د نړۍ یو له مهمو ګټو څخه دی، د دې پلي کولو په کارولو کې لږ څه شتون لري، ځکه چې دا به په احتمالي توګه په اړونده ډیټابیسونو کې د جدولونو په پرتله ګړندی کار ونه کړي.

3.4 عمومي قضیه. ونې او امر شوي ونې

د هر ډول ډیټا جوړښت چې د ونې په توګه ښودل کیدی شي په بشپړ ډول د نړیوالو سره فټ کوي.

3.4.1 د فرعي موضوعاتو سره توکي

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه

دا د نړۍ د دودیزو کارونې ساحه ده. په طبي برخه کې د ناروغیو، درملو، نښو نښانو او د درملنې میتودونو لوی شمیر شتون لري. دا غیر منطقي ده چې د هر ناروغ لپاره د یو ملیون ساحو سره میز جوړ کړئ. سربیره پردې، 99٪ ساحې به خالي وي.

د جدولونو د SQL ډیټابیس تصور وکړئ: "ناروغ" ~ 100 ساحې، "درمل" - 000 ساحې، "تراپی" - 100 ساحې، "پیچلتیاوې" - 000 ساحې، او داسې نور. او همداسی پسی. یا تاسو کولی شئ د ډیرو زرګونو میزونو ډیټابیس جوړ کړئ، هر یو د یو ځانګړي ډول ناروغ لپاره (او دوی کولی شي پورته شي!)، درملنې، درمل، او د دې میزونو ترمنځ د اړیکو لپاره زرګونه نور میزونه.

ګلوبلونه د درملو لپاره غوره دي ، ځکه چې دوی تاسو ته اجازه درکوي د هر ناروغ لپاره د هغه د طبي تاریخ ، مختلف درملنې ، او د درملو عملونو دقیق توضیحات رامینځته کړي ، د ونې په شکل کې ، پرته له دې چې په خالي کالمونو کې د ډیسک اضافي ځای ضایع کړي. په یوه اړونده قضیه کې قضیه وي.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهد نړیوالو په کارولو سره دا د خلکو په اړه د معلوماتو سره ډیټابیس رامینځته کول اسانه دي، کله چې دا مهم وي چې د پیرودونکي په اړه ډیری مختلف معلومات راټول او سیسټم کړئ. دا د درملو، بانکدارۍ، بازار موندنې، آرشیف کولو او نورو برخو کې غوښتنه ده

.
البته، په SQL کې تاسو کولی شئ یوازې د څو میزونو سره یوه ونه تقلید کړئ (EAV, 1,2,3,4,5,6,7,8,9,10که څه هم دا د پام وړ ډیر پیچلی دی او ورو به وي. په لازمي ډول ، تاسو باید یو نړیوال ولیکئ چې په میزونو کار کوي او ټول کار د میزونو سره د خلاصون پرت لاندې پټ کړئ. دا غلطه ده چې د لوړې کچې ټیکنالوژۍ (SQL) په کارولو سره د ټیټ کچې ټیکنالوژۍ (نړیوال) تقلید وکړئ. نامناسب.

دا هیڅ راز پټ نه دی چې په لوی میزونو کې د ډیټا سکیما بدلول (ALTER TABLE) کولی شي کافي وخت ونیسي. MySQL، د مثال په توګه، ALTER TABLE ADD|DROP COLUMN د زاړه جدول څخه نوي جدول ته د معلوماتو په بشپړ ډول کاپي کولو سره (ازموینه شوي MyISAM، InnoDB انجنونه). کوم چې کولی شي د ورځو لپاره د ملیاردونو ریکارډونو سره کاري ډیټابیس ځړ کړي ، که اونۍ نه وي.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخهد معلوماتو جوړښت بدلول که چیرې موږ نړیوال وکاروو موږ ته هیڅ لګښت نه راځي. په هر وخت کې موږ کولی شو هر ډول نوي ملکیتونه اضافه کړو چې موږ ورته اړتیا لرو هر شی ته، د درجه بندي په هره کچه کې. د څانګو د نوم بدلولو سره تړلي بدلونونه په روان ډیټابیس کې په شالید کې پرمخ وړل کیدی شي.


له همدې امله ، کله چې د لوی شمیر اختیاري ملکیتونو سره د توکو ذخیره کولو خبره راځي ، نړیوال غوره انتخاب دی.

سربیره پردې ، اجازه راکړئ تاسو ته یادونه وکړم چې کوم ملکیتونو ته لاسرسی سمدستي دی ، ځکه چې په نړۍ کې ټولې لارې د B ونې دي.

نړیوال ډیټابیسونه، په عموم کې، د سند پر بنسټ یو ډول ډیټابیس دی چې د درجه بندي معلوماتو ذخیره کولو وړتیا لري. له همدې امله، د اسنادو پر بنسټ ډیټابیسونه کولی شي د طبي ریکارډونو ذخیره کولو په برخه کې د نړیوالو سره سیالي وکړي. مګر دا لاهم په بشپړ ډول ورته نه دیراځئ چې د پرتله کولو لپاره MongoDB واخلو. په دې ډومین کې دا د لاندې دلیلونو لپاره نړیوالو ته له لاسه ورکوي:

  1. د سند اندازه. د ذخیره کولو واحد د JSON بڼه کې متن دی (په دقیق ډول BSON) د اعظمي حجم شاوخوا 16MB سره. محدودیت په ځانګړي ډول رامینځته شوی ترڅو د JSON ډیټابیس د پارس کولو پرمهال ورو نه شي که چیرې د JSON لوی سند په دې کې زیرمه شي او بیا د ساحو لخوا لاسرسی ومومي. دا سند باید د ناروغ په اړه ټول معلومات ولري. موږ ټول پوهیږو چې د ناروغ ریکارډونه څومره قوي کیدی شي. د کارت اعظمي اندازه 16MB سمدلاسه د ناروغانو پای ته رسوي چې د ناروغۍ کارت کې د MRI فایلونه ، د ایکس رے سکینونه او نور مطالعات شامل دي. د نړۍ په یوه څانګه کې تاسو کولی شئ ګیګابایټ او ټیرابایټ معلومات ولرئ. په اصولو کې، موږ کولی شو دا پای ته ورسوو، مګر زه به دوام ورکړم.
  2. د ناروغ په چارټ کې د نوي ملکیتونو د شعور / بدلون / حذف کولو وخت. دا ډول ډیټابیس باید ټوله نقشه په حافظه کې ولولي (دا لوی مقدار دی!) ، BSON پارس کړئ ، نوی نوډ اضافه کړئ / بدل کړئ / حذف کړئ ، شاخصونه تازه کړئ ، په BSON کې یې بسته کړئ ، او ډیسک ته یې خوندي کړئ. یو نړیوال یوازې یو ځانګړي ملکیت ته لاسرسی ته اړتیا لري او هغه یې سمبالوي.
  3. انفرادي ملکیتونو ته ګړندي لاسرسی. په سند کې د ډیری ملکیتونو او د هغې څو کچې جوړښت سره ، انفرادي ملکیتونو ته لاسرسی به ګړندی وي د دې حقیقت له امله چې په نړۍ کې هره لاره د B- ونه ده. په BSON کې، تاسو باید د مطلوب ملکیت موندلو لپاره سند په کرښه توګه پارس کړئ.

3.3.2 ملګری صفونه

ایسوسی ایټیو اریونه (حتی د نیست شوي صفونو سره) په نړۍ کې په بشپړ ډول فټ کیږي. د مثال په توګه، د PHP څخه دا ډول لړۍ به په لومړي انځور 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 درجه بندي اسناد: XML، JSON

همدارنګه په اسانۍ سره په ګلوبلونو کې ذخیره کیږي. د ذخیره کولو لپاره په بیلابیلو لارو کې ایښودل کیدی شي.

ایکس ایم ایل
په نړۍ کې د XML تخریب کولو ترټولو اسانه لاره په نوډونو کې د ټګ ځانګړتیاو ذخیره کول دي. او که چیرې د ټګ ځانګړتیاو ته ګړندي لاسرسي ته اړتیا وي ، نو موږ کولی شو دوی جلا جلا څانګو ته واړوو.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه

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

په COS کې دا به د کوډ سره مطابقت ولري:

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

څرګندونه: د XML، JSON، ملګري صفونو لپاره، تاسو کولی شئ په نړیوالو کې د ښودلو ډیری مختلف لارو سره راشي. په دې حالت کې، موږ د نوټ ټاګ کې د فرعي ټګونو ترتیب منعکس نه کړ. په نړیواله کچه ^xml فرعي ټګونه به د الفبا په ترتیب کې ښودل شي. د امر په کلکه منعکس کولو لپاره ، تاسو کولی شئ د مثال په توګه لاندې نندارتون وکاروئ:

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه
JSON.
د 3.3.1 برخې څخه لومړی عکس د دې JSON سند انعکاس ښیې:

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

3.3.4 ورته جوړښتونه چې د درجه بندي اړیکو په واسطه تړل شوي

مثالونه: د پلور دفترونو جوړښت، د MLM په جوړښت کې د خلکو موقعیت، په شطرنج کې د پرانیستلو ډیټابیس.

ډیبټ ډیټابیس. تاسو کولی شئ د سټروک ځواک اټکل د نړیوال نوډ شاخص ارزښت په توګه وکاروئ. بیا، د قوي حرکت غوره کولو لپاره، دا به کافي وي چې د لوی وزن سره څانګه غوره کړئ. په نړۍ کې، په هره کچه ټولې څانګې به د حرکت ځواک لخوا ترتیب شي.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه

د پلور دفترونو جوړښت، په MLM کې د خلکو جوړښت. نوډونه کولی شي د کیشینګ ځینې ارزښتونه ذخیره کړي چې د ټولې فرعي ونې ځانګړتیاوې منعکس کوي. د مثال په توګه، د ورکړل شوي فرعي ونې د پلور حجم. په هر وخت کې موږ کولی شو داسې ارقام ترلاسه کړو چې د هرې څانګې لاسته راوړنې منعکس کوي.

نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. ونې. 2 برخه

4. په کومو قضیو کې د ګلوبل کارول خورا ګټور دي؟

لومړی کالم هغه قضیې وړاندې کوي چیرې چې تاسو به د ګلوبل په کارولو سره د پام وړ سرعت لاسته راوړئ ، او دوهم کله چې ډیزاین یا ډیټا ماډل به ساده شي.

چټک
د معلوماتو پروسس / پریزنټشن اسانه کول

  1. داخلول [په هره کچه د اتوماتیک ترتیب سره]، [د ماسټر کیلي لخوا لیست کول]
  2. د فرعي ونو لرې کول
  3. هغه شیان چې د ډیری نیست شوي ملکیتونو سره انفرادي لاسرسي ته اړتیا لري
  4. درجه بندي جوړښت د دې وړتیا سره چې د ماشوم څانګې له هرې څانګې څخه تیریږي ، حتی شتون نلري
  5. ژوروالی - د فرعي ونو لومړی تیریدل
  1. هغه شیان/ادارې چې د ډیرو اختیاري [او/یا نیست شوي] ملکیتونو/ادارې سره
  2. د سکیما کم معلومات. کله چې نوي ملکیتونه ډیری وختونه څرګند شي او زاړه ورک شي.
  3. تاسو اړتیا لرئ یو دودیز ډیټابیس جوړ کړئ.
  4. د لارې اډې او د پریکړې ونې. کله چې دا د ونې په توګه د لارو استازیتوب کول اسانه وي.
  5. د تکراري کارولو پرته د درجه بندي جوړښتونو لرې کول

دوام "نړیوال د معلوماتو ذخیره کولو لپاره خزانه تلوارونه دي. سپین سرې. دریمه برخه ".

دادعا: دا مقاله او دې ته زما نظرونه زما نظر دی او د InterSystems Corporation رسمي دریځ سره هیڅ تړاو نلري.

سرچینه: www.habr.com

Add a comment