گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3پوئين حصن ۾ (1, 2) اسان گلوبلن بابت وڻن جي طور تي ڳالهايو، هن ۾ اسان گلوبلز کي اسپارس صفن جي طور تي ڏسنداسين.

اسپارس صف صف جو هڪ قسم آهي جنهن ۾ اڪثر قدر ساڳيا قدر کڻندا آهن.

عملي طور تي، اسپارس صفون اڪثر ايتريون وڏيون هونديون آهن جو هڪجهڙا عنصرن سان ميموري تي قبضو ڪرڻ جو ڪو به مقصد ناهي. تنهن ڪري، اهو سمجهه ۾ اچي ٿو ته اسپارس صفن کي لاڳو ڪرڻ ۾ اهڙي طرح ته ميموري هڪجهڙائي واري قدرن کي محفوظ ڪرڻ تي ضايع نه ٿئي.
ڪجھ پروگرامنگ ٻولين ۾، اسپارس صفن کي ٻوليءَ ۾ ئي شامل ڪيو ويندو آھي، مثال طور جي, MATLAB. ٻين پروگرامنگ ٻولين ۾ خاص لائبريريون آهن جيڪي توهان کي انهن کي لاڳو ڪرڻ جي اجازت ڏين ٿيون. C++ لاءِ ايجين ۽ ٻيا.

اسپارس صفن کي لاڳو ڪرڻ لاءِ گلوبلز سٺا اميدوار آهن ڇو ته:

  1. اهي صرف ڪجهه نوڊس جي قيمتن کي ذخيرو ڪندا آهن ۽ اڻ ڄاڻايل قدرن کي ذخيرو نٿا ڪن؛
  2. نوڊ جي قيمت تائين رسائي حاصل ڪرڻ لاءِ انٽرفيس بلڪل ان سان ملندڙ جلندڙ آهي ته ڪيتريون ئي پروگرامنگ ٻوليون ملٽي ڊائميشنل ايري ايليمينٽ تائين رسائي کي لاڳو ڪن ٿيون.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. گلوبل ڊيٽا کي محفوظ ڪرڻ لاءِ ڪافي گھٽ سطحي ڍانچي آھي، تنھنڪري ان ۾ شاندار اسپيڊ خاصيتون آھن (ھزارين کان لکن کان لکن تائين ٽرانزيڪشن في سيڪنڊ، هارڊويئر تي منحصر آھي، ھيٺ ڏسو). 1)

جيئن ته گلوبل هڪ مستقل ڍانچي آهي، اهو انهن تي اسپارس صفن ٺاهڻ جو احساس ڪري ٿو جڏهن اهو اڳ ۾ ڄاڻايل آهي ته رام جي مقدار ڪافي نه هوندي.

sparse array جي عملن جي ملڪيتن مان ھڪڙو آھي ڪجھ ڊفالٽ قدر واپس ڪرڻ جيڪڏھن ڪنھن اڻ ڄاتل سيل تائين رسائي حاصل ڪئي وڃي.

هن فنڪشن کي استعمال ڪندي لاڳو ڪري سگهجي ٿو $GET COS ۾. هي مثال هڪ 3-dimensional صف سمجهي ٿو.

SET a = $GET(^a(x,y,z), defValue)

ڪهڙن ڪمن کي اسپارس صفن جي ضرورت آهي ۽ گلوبل ڪيئن مدد ڪري سگھن ٿا؟

وابستگي (رابطي) ميٽرڪس

اهڙيون ميٽرڪ گراف جي نمائندگي ڪرڻ لاء استعمال ڪيو ويو:

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

ظاهر آهي، گراف جيترو وڏو هوندو، اوترو وڌيڪ صفر هوندو ميٽرڪس ۾. جيڪڏهن، مثال طور، اسان هڪ سماجي نيٽ ورڪ گراف وٺون ٿا ۽ ان کي هڪ ساڳي ميٽرڪس جي صورت ۾ پيش ڪريون ٿا، پوء اهو تقريبا مڪمل طور تي صفر تي مشتمل هوندو، يعني. هڪ sparse صف ٿي ويندي.

Set ^m(id1, id2) = 1 
Set ^m(id1, id3) = 1 
Set ^m(id1, id4) = 1 
Set ^m(id1) = 3 
Set ^m(id2, id4) = 1 
Set ^m(id2, id5) = 1 
Set ^m(id2) = 2
....

هن مثال ۾، اسان عالمي طور تي بچايو ^m ڪنيڪشن ميٽرڪس، انهي سان گڏ هر نوڊ تي ڪنڊن جو تعداد (ڪير دوست آهن جن سان ۽ دوستن جو تعداد).

جيڪڏهن گراف ۾ عناصر جو تعداد 29 ملين کان وڌيڪ نه آهي (هي انگ 8 جي پيداوار جي طور تي ورتو وڃي ٿو * وڌ ۾ وڌ لائن سائيز)، اهو آهي ته، اهڙين ميٽرڪس کي ذخيرو ڪرڻ جو هڪ اڃا به وڌيڪ اقتصادي طريقو بٽ اسٽرنگ آهي، ڇاڪاڻ ته انهن تي عمل درآمد هڪ خاص طريقي سان وڏي خال کي بهتر بڻائي ٿو.

بٽ اسٽرنگ سان ٺهڪندڙ فنڪشن طرفان انجام ڏنو ويندو آهي $BIT.

; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)

رياستي مشين جي منتقلي ٽيبل

جيئن ته هڪ محدود آٽوميٽن جو ٽرانزيڪشن گراف هڪ عام گراف آهي، تنهن ڪري محدود آٽوميٽن جي منتقلي جدول ساڳي ويجهڙائي واري ميٽرڪس آهي جنهن تي مٿي ذڪر ڪيو ويو آهي.

سيلولر خودڪار

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

سڀ کان مشهور سيلولر automaton آهي راند "زندگي"، جيڪو، ان جي ضابطن جي ڪري (جڏهن هڪ سيل ۾ ڪيترائي پاڙيسري هوندا آهن، اهو مري ويندو آهي) هڪ اسپرس صف آهي.

اسٽيفن وولفرام جو خيال آهي ته سيلولر آٽوماٽا آهن سائنس جي نئين ميدان. 2002 ۾، هن هڪ 1280 صفحن جو ڪتاب شايع ڪيو، سائنس جو هڪ نئون قسم، جنهن ۾ هو وسيع طور تي بحث ڪري ٿو ته سيلولر آٽوميٽا ۾ ترقي الڳ الڳ نه آهن، پر پائيدار آهن ۽ سائنس جي سڀني شعبن لاء عظيم اثر آهن.

اهو ثابت ڪيو ويو آهي ته ڪنهن به الورورٿم تي عمل ڪري سگهجي ٿو ڪمپيوٽر تي سيلولر خودڪار استعمال ڪندي لاڳو ڪري سگهجي ٿو. سيلولر آٽوماٽا استعمال ڪيا ويندا آهن ماڊل متحرڪ ماحول ۽ سسٽم، الگورٿمڪ مسئلن کي حل ڪرڻ ۽ ٻين مقصدن لاءِ.

جيڪڏهن اسان وٽ هڪ وڏو ميدان آهي ۽ اسان کي سيلولر آٽوميٽن جي سڀني وچولي رياستن کي رڪارڊ ڪرڻ جي ضرورت آهي، پوء اهو عالمي استعمال ڪرڻ جو احساس آهي.

ڪارٽوگرافي

پهرين شيء جيڪا منهنجي ذهن ۾ اچي ٿي جڏهن اها اسپارس صفن کي استعمال ڪرڻ جي اچي ٿي نقشي جا ڪم.

ضابطي جي طور تي، نقشن تي تمام گهڻو خالي جاء آهي. جيڪڏهن نقشي کي وڏي پکسلز طور ڏيکاريو وڃي ته پوءِ ڌرتيءَ جو 71 سيڪڙو پکسلز سمنڊ جي قبضي ۾ هوندو. اسپرس صف. ۽ جيڪڏھن توھان صرف انساني ھٿن جي ڪم کي لاڳو ڪريو، پوء خالي جڳھ 95٪ کان وڌيڪ ٿي ويندي.

يقينا، ڪو به نقشن کي محفوظ نه ڪندو آهي راسٽر صفن جي صورت ۾؛ هڪ ویکٹر نمائندگي استعمال ڪيو ويندو آهي.
پر ویکٹر نقشا ڇا آهن؟ هي هڪ قسم جو فريم ۽ پولي لائنز ۽ پوليگون آهي جنهن ۾ پوائنٽون شامل آهن.
لازمي طور تي پوائنٽس جو ڊيٽابيس ۽ انهن جي وچ ۾ ڪنيڪشن.

اسان جي ڪهڪشان جو نقشو ٺاهڻ لاءِ گيا ٽيلي اسڪوپ مشن جو سڀ کان وڌيڪ امڪاني نقشي سازي مشن آهي. علامتي طور تي، اسان جي ڪهڪشان، سڄي ڪائنات وانگر، هڪ مسلسل ويران صف آهي: خالي جا وڏا وڏا جڳه جن ۾ ننڍا ننڍا نقطا آهن - تارا. خالي جڳهه 99,999999 …….٪ آهي. اسان جي ڪهڪشان جي نقشي کي ذخيرو ڪرڻ لاء، هڪ گلوبل ڊيٽابيس چونڊيو ويو - Caché.

مون کي خبر ناهي ته هن پروجيڪٽ ۾ گلوبلز جي صحيح جوڙجڪ، مان سمجهان ٿو ته اهو ڪجهه ساڳيو آهي:

Set ^galaxy(b, l, d) = 1; Номер звезды по каталогу, если есть
Set ^galaxy(b, l, d, "name") = "Sun"
Set ^galaxy(b, l, d, "type") = "normal" ; варианты blackhole, quazar, red_dwarf и т.д.
Set ^galaxy(b, l, d, "weight") = 14E50
Set ^galaxy(b, l, d, "planetes") = 7
Set ^galaxy(b, l, d, "planetes", 1) = "Mercury"
Set ^galaxy(b, l, d, "planetes", 1, weight) = 1E20
...

جتي ب، ل، ڊي آهن ڪهڪشان جو همعصر ويڪرائي ڦاڪ، ڊگھائي ڦاڪ ۽ سج تائين فاصلو.

گلوبلز جي لچڪدار ڍانچي توهان کي ستارن ۽ سيٽن جي ڪنهن به ضروري خاصيتن کي محفوظ ڪرڻ جي اجازت ڏئي ٿي، ڇاڪاڻ ته گلوبلز تي بنيادي اسڪيم کان گهٽ آهن.

اسان جي ڪائنات جي نقشي کي محفوظ ڪرڻ لاءِ، ڪيچ کي نه رڳو ان جي لچڪداريءَ لاءِ چونڊيو ويو، پر ان جي صلاحيت لاءِ پڻ ڊيٽا جي هڪ وهڪرو کي تمام تيزيءَ سان ذخيرو ڪرڻ لاءِ، جڏهن ته ان سان گڏوگڏ تيز ڳولان لاءِ انڊيڪس گلوبلز ٺاهيندي.

جيڪڏهن اسان ڌرتيءَ ڏانهن موٽياسين ته پوءِ ڪارٽوگرافڪ پروجيڪٽ گلوبلز تي ٺاهيا ويا OpenStreetMap XAPI ۽ OpenStreetMap جو هڪ ڪانٽو - FOSM.

تازو تي hackathon Caché geospatial indexes لاڳو ڪيا ويا Geospatial. اسان انتظار ڪري رهيا آهيون ليکڪن کان هڪ مضمون جو عملدرآمد تفصيل سان.

OpenStreetMap XAPI ۾ عالمي سطح تي مقامي انڊيڪسس جو نفاذ

تان ورتل تصويرون هن پيشڪش.

سڄي دنيا کي چورس ۾ ورهايو ويو آهي، پوءِ ذيلي چورس، ۽ ذيلي اسڪوائر کي ذيلي ذيلي اسڪوائر ۾، وغيره. عام طور تي، اسان کي ذخيرو ڪرڻ لاء هڪ ترتيب واري ڍانچي ملي ٿي جيڪا گلوبل ٺاهي رهيا آهن.

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

ڪنهن به وقت، اسان لڳ ڀڳ فوري طور تي گهربل چورس جي درخواست ڪري سگھون ٿا يا ان کي صاف ڪري سگھون ٿا، ۽ سڀئي ذيلي چورس پڻ واپس ڪيا ويندا يا صاف ڪيا ويندا.

ساڳئي اسڪيم کي عالمي سطح تي ڪيترن ئي طريقن سان لاڳو ڪري سگهجي ٿو.

اختيار 1:

Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idПервойТочки
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idВторойТочки
...

اختيار 2:

Set ^m('abacdabcdabacdabcda', 1) = idПервойТочки
Set ^m('abacdabcdabacdabcda', 2) = idВторойТочки
...

ٻنهي صورتن ۾، ڪنهن به سطح جي چورس ۾ واقع پوائنٽس جي درخواست ڪرڻ لاء COS/M استعمال ڪرڻ ڏکيو ناهي. پهرين اختيار ۾ ڪنهن به سطح تي چورس خلاء جي ٽڪرن کي صاف ڪرڻ ڪجهه آسان ٿيندو، پر اهو گهٽ ۾ گهٽ ضروري آهي.

هيٺين سطح جي چوڪن مان هڪ جو مثال:

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

۽ هتي XAPI پروجيڪٽ مان ڪيترائي گلوبل آهن: گلوبلز تي انڊيڪس جي نمائندگي:

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

عالمي ^ رستو پوائنٽن کي ذخيرو ڪرڻ لاء استعمال ڪيو ويو پولي لائنز (رستيون، ننڍيون نديون، وغيره) ۽ ڪثرت (بند ٿيل علائقا: عمارتون، ٻيلا، وغيره).

گلوبلز تي اسپارس صفن جي استعمال جي سخت درجه بندي.

  1. اسان ڪجهه شيون ۽ انهن جي رياستن جي همراهن کي ذخيرو ڪندا آهيون (ميپنگ، سيلولر آٽوميٽا)
  2. اسان اسپارس ميٽرڪ کي ذخيرو ڪندا آهيون.

صورت 2 لاءِ) جڏهن هڪ مخصوص ڪوآرڊينيٽ جي درخواست ڪئي وڃي جتي عنصر کي قيمت نه ڏني وئي آهي، اسان کي لازمي طور تي ڊفالٽ اسپارس سري عنصر جي قيمت حاصل ڪرڻ گهرجي.

بونس جيڪي اسان حاصل ڪندا آهيون جڏهن گلوبلز ۾ گھڻائي واري ميٽرڪ کي محفوظ ڪندا آهيون

جلدي هٽايو ۽/يا خلا جا ٽڪرا چونڊيو جيڪي قطارن، جهازن، ڪعبن وغيره جا گهڻا آهن. ڪيسن لاءِ جتي انٽيجر انڊيڪس استعمال ڪيا ويندا آهن، جلدي هٽائڻ جي صلاحيت ۽/يا خلا جا ٽڪرا جيڪي قطارن، جهازن، ڪعبن وغيره جا گهڻا هوندا آهن.

ٽيم ڪھو اسان يا ته هڪ عنصر يا هڪ قطار، يا اڃا به هڪ مڪمل جهاز کي ختم ڪري سگهون ٿا. گلوبلز جي ملڪيت جي مهرباني، اهو تمام جلدي ٿئي ٿو - عنصر جي عنصر کي هٽائڻ کان هزارين ڀيرا تيز.

انگ اکر ڏيکاري ٿو هڪ عالمي ۾ ٽي-dimensional صف ^a ۽ حذف ڪرڻ جا مختلف قسم.

گلوبلز ڊيٽا کي محفوظ ڪرڻ لاء خزانو تلوارون آهن. اسپرس صفون. حصو 3

سڃاتل انڊيڪس استعمال ڪندي خلا جا ٽڪرا چونڊڻ لاءِ، توهان ڪمانڊ استعمال ڪري سگهو ٿا ملن.

ڪالمن متغير ۾ ميٽرڪس ڪالمن کي چونڊيو:

; Зададим трёхмерный разреженный массив 3x3x3
Set ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1
Merge Column = ^a(2,2)
; Выведем переменную Column
Zwrite Column

نتيجو:

Column(0)=1
Column(2)=1

ڪالمن متغير جي باري ۾ دلچسپ ڳالهه اها آهي ته اسان وٽ پڻ هڪ اسپارس صف آهي، جنهن کي پڻ پهچڻ گهرجي $GET، ڇاڪاڻ ته ڊفالٽ قدر ان ۾ محفوظ نه آهن.

خلا جا ٽڪرا پڻ فنڪشن استعمال ڪندي ننڍڙي پروگرام ذريعي ڪري سگھجن ٿا $آرڊر. اهو خاص طور تي انهن هنڌن تي آسان آهي جن جا اشارا مقدار ۾ نه هوندا آهن (ڪاروگرافي).

ٿڪل

موجوده وقت نوان امڪاني ڪم پيدا ڪري ٿو. گراف اربين چوڪن تي مشتمل ٿي سگهن ٿا، نقشا اربين نقطن جا ٺهيل آهن، ۽ ڪجهه شايد سيلولر آٽوميٽا تي پنهنجي ڪائنات کي هلائڻ چاهين ٿا (1, 2).

جڏهن اسپارس صفن مان ڊيٽا جو مقدار هاڻي رام ۾ نه ٿي سگهي، پر توهان کي انهن سان گڏ ڪم ڪرڻ جي ضرورت آهي، پوء اهو ممڪن آهي ته گلوبل ۽ COS تي ساڳئي منصوبن کي لاڳو ڪرڻ جي امڪان تي غور ڪيو وڃي.

توهان جي توجه لاء مهرباني! اسان تبصرن ۾ توهان جي سوالن ۽ خواهشن جا منتظر آهيون.

اعلان: هي آرٽيڪل ۽ ان تي منهنجا رايا منهنجي راءِ آهن ۽ ان جو InterSystems Corporation جي سرڪاري پوزيشن سان ڪو به واسطو ناهي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو