گلوبلز ڈیٹا کو ذخیرہ کرنے کے لیے خزانہ کی تلوار ہیں۔ ویرل صفیں حصہ 3

گلوبلز ڈیٹا کو ذخیرہ کرنے کے لیے خزانہ کی تلوار ہیں۔ ویرل صفیں حصہ 3پچھلے حصوں میں (1, 2) ہم نے گلوبلز کے بارے میں درختوں کے طور پر بات کی، اس میں ہم گلوبلز کو ویرل صفوں کے طور پر دیکھیں گے۔

ویرل صف ایک قسم کی صف ہے جس میں زیادہ تر قدریں ایک جیسی ہوتی ہیں۔

عملی طور پر، ویرل صفیں اکثر اتنی بڑی ہوتی ہیں کہ ایک جیسے عناصر کے ساتھ میموری پر قبضہ کرنے کا کوئی فائدہ نہیں ہوتا۔ لہذا، اسپارس اریوں کو اس طرح نافذ کرنا سمجھ میں آتا ہے کہ ایک جیسی اقدار کو ذخیرہ کرنے میں میموری ضائع نہ ہو۔
کچھ پروگرامنگ زبانوں میں، ویرل صفوں کو زبان میں ہی شامل کیا جاتا ہے، مثال کے طور پر جے میں, MATLAB. دیگر پروگرامنگ زبانوں میں خصوصی لائبریریاں ہیں جو آپ کو ان پر عمل درآمد کرنے کی اجازت دیتی ہیں۔ C++ کے لیے - ایگین وغیرہ

اسپرس صفوں کو نافذ کرنے کے لیے گلوبلز اچھے امیدوار ہیں کیونکہ:

  1. وہ صرف مخصوص نوڈس کی اقدار کو ذخیرہ کرتے ہیں اور غیر متعینہ کی قدروں کو ذخیرہ نہیں کرتے ہیں۔
  2. نوڈ کی قدر تک رسائی حاصل کرنے کا انٹرفیس اس سے بہت ملتا جلتا ہے کہ کتنی پروگرامنگ زبانیں کثیر جہتی سرنی عنصر تک رسائی کو نافذ کرتی ہیں۔
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. گلوبل ڈیٹا کو ذخیرہ کرنے کے لیے کافی نچلی سطح کا ڈھانچہ ہے، اس لیے اس کی رفتار کی نمایاں خصوصیات ہیں (ہارڈ ویئر کے لحاظ سے فی سیکنڈ لاکھوں سے لے کر دسیوں لاکھوں ٹرانزیکشنز، نیچے دیکھیں)۔ 1)

چونکہ گلوبل ایک مستقل ڈھانچہ ہے، جب یہ پہلے سے معلوم ہو کہ RAM کی مقدار کافی نہیں ہوگی تو ان پر ویرل صفیں بنانا سمجھ میں آتا ہے۔

اسپارس ارے کے نفاذ کی خصوصیات میں سے ایک یہ ہے کہ اگر کسی غیر متعینہ سیل تک رسائی کی جاتی ہے تو کچھ ڈیفالٹ قدر واپس کرنا ہے۔

یہ فنکشن کا استعمال کرتے ہوئے لاگو کیا جا سکتا ہے $GET COS میں یہ مثال 3 جہتی صف پر غور کرتی ہے۔

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

کن کاموں کے لیے ویرل صفوں کی ضرورت ہوتی ہے اور عالمی کس طرح مدد کر سکتے ہیں؟

ملحقہ (کنیکٹیویٹی) میٹرکس

ایسے میٹرکس گراف کی نمائندگی کرنے کے لیے استعمال کیا جاتا ہے:

گلوبلز ڈیٹا کو ذخیرہ کرنے کے لیے خزانہ کی تلوار ہیں۔ ویرل صفیں حصہ 3

ظاہر ہے، گراف جتنا بڑا ہوگا، میٹرکس میں صفر اتنے ہی زیادہ ہوں گے۔ اگر، مثال کے طور پر، ہم سوشل نیٹ ورک کا گراف لیں اور اسے اسی طرح کے میٹرکس کی شکل میں پیش کریں، تو یہ تقریباً مکمل طور پر صفر پر مشتمل ہوگا، یعنی۔ ایک ویرل صف ہو جائے گا.

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

سب سے مشہور سیلولر آٹومیٹن ہے۔ کھیل "زندگی"، جو، اس کے قواعد کی وجہ سے (جب ایک سیل کے بہت سے پڑوسی ہوتے ہیں، یہ مر جاتا ہے) ایک ویرل صف ہے۔

سٹیفن وولفرام کا خیال ہے کہ سیلولر آٹومیٹا ہیں۔ سائنس کے نئے میدان. 2002 میں، اس نے 1280 صفحات پر مشتمل ایک کتاب شائع کی، A New Kind of Science، جس میں وہ بڑے پیمانے پر دلیل دیتے ہیں کہ سیلولر آٹومیٹا میں پیشرفت الگ تھلگ نہیں ہے، بلکہ پائیدار ہے اور سائنس کے تمام شعبوں پر اس کے بہت اچھے اثرات ہیں۔

یہ ثابت ہوا ہے کہ کمپیوٹر پر قابل عمل کوئی بھی الگورتھم سیلولر آٹومیٹن کا استعمال کرتے ہوئے لاگو کیا جا سکتا ہے۔ سیلولر آٹو میٹا کا استعمال متحرک ماحول اور سسٹمز کو ماڈل بنانے، الگورتھمک مسائل کو حل کرنے اور دیگر مقاصد کے لیے کیا جاتا ہے۔

اگر ہمارے پاس ایک بہت بڑا فیلڈ ہے اور ہمیں سیلولر آٹومیٹن کی تمام انٹرمیڈیٹ حالتوں کو ریکارڈ کرنے کی ضرورت ہے، تو گلوبلز کو استعمال کرنا سمجھ میں آتا ہے۔

نقشہ نگاری

جب ویرل صفوں کو استعمال کرنے کی بات آتی ہے تو پہلی چیز جو میرے ذہن میں آتی ہے وہ ہے نقشہ سازی کے کام۔

ایک اصول کے طور پر، نقشوں پر کافی جگہ خالی ہے۔ اگر نقشے کو بڑے پکسلز کے طور پر پیش کیا جائے تو زمین کے 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
...

جہاں b، l، d ہیں۔ کہکشاں کوآرڈینیٹ عرض بلد، عرض البلد اور سورج کا فاصلہ۔

گلوبلز کی لچکدار ساخت آپ کو ستاروں اور سیاروں کی کسی بھی ضروری خصوصیات کو بچانے کی اجازت دیتی ہے، کیونکہ گلوبلز کی بنیادیں اسکیم سے کم ہیں۔

ہماری کائنات کے نقشے کو ذخیرہ کرنے کے لیے، Caché کو نہ صرف اس کی لچک کے لیے منتخب کیا گیا تھا، بلکہ اس کے ساتھ ساتھ تیز رفتار تلاشوں کے لیے انڈیکس گلوبلز بنانے کے ساتھ ساتھ ڈیٹا کے ایک سلسلے کو بہت تیزی سے ذخیرہ کرنے کی صلاحیت کے لیے بھی منتخب کیا گیا تھا۔

اگر ہم زمین پر واپس آتے ہیں، تو عالمی سطح پر کارٹوگرافک پروجیکٹس بنائے گئے تھے۔ اوپن اسٹریٹ میپ XAPI اور OpenStreetMap کا ایک کانٹا - FOSM.

حال ہی میں ہیکاتھون کیشے جغرافیائی اشاریہ جات کو لاگو کیا گیا تھا۔ 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 کے لیے) ایک مخصوص کوآرڈینیٹ کی درخواست کرتے وقت جہاں عنصر کو کوئی ویلیو تفویض نہیں کیا گیا ہے، ہمیں ڈیفالٹ اسپارس ارے عنصر کی قدر حاصل کرنی چاہیے۔

وہ بونس جو ہم عالمی سطح پر کثیر جہتی میٹرکس کو ذخیرہ کرتے وقت وصول کرتے ہیں۔

جلدی سے ہٹائیں اور/یا جگہ کے ان ٹکڑوں کو منتخب کریں جو قطاروں، طیاروں، کیوبز وغیرہ کے ملٹیز ہوں۔ ایسے معاملات کے لیے جہاں عددی اشاریہ جات استعمال کیے جاتے ہیں، جگہ کے ٹکڑوں کو تیزی سے ہٹانے اور/یا حاصل کرنے کی اہلیت جو کہ قطاروں، طیاروں، کیوبز وغیرہ کے ملٹیلز ہوں مفید ہو سکتی ہیں۔

ٹیم کو مار ڈالو ہم یا تو ایک عنصر یا ایک قطار، یا یہاں تک کہ ایک پورے جہاز کو حذف کر سکتے ہیں۔ گلوبلز کی خصوصیات کی بدولت، یہ بہت تیزی سے ہوتا ہے - عنصر بہ عنصر ہٹانے سے ہزاروں گنا تیز۔

یہ اعداد و شمار عالمی سطح پر تین جہتی صف کو ظاہر کرتا ہے۔ ^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چونکہ پہلے سے طے شدہ اقدار اس میں محفوظ نہیں ہیں۔

فنکشن کا استعمال کرتے ہوئے ایک چھوٹے پروگرام کے ذریعے جگہ کے ٹکڑوں کا انتخاب بھی کیا جا سکتا ہے۔ $Order. یہ خاص طور پر ان جگہوں پر آسان ہے جن کے اشاریے کوانٹائز نہیں کیے گئے ہیں (کارٹوگرافی)۔

حاصل يہ ہوا

موجودہ وقت نئے مہتواکانکشی کاموں کو کھڑا کرتا ہے۔ گراف اربوں عمودی خطوط پر مشتمل ہوسکتے ہیں، نقشے اربوں پوائنٹس پر مشتمل ہوسکتے ہیں، اور کچھ لوگ سیلولر آٹو میٹا (1, 2).

جب ویرل صفوں سے ڈیٹا کا حجم اب RAM میں فٹ نہیں ہوسکتا ہے، لیکن آپ کو ان کے ساتھ کام کرنے کی ضرورت ہے، تو یہ گلوبلز اور COS پر اسی طرح کے منصوبوں کو لاگو کرنے کے امکان پر غور کرنے کے قابل ہے۔

آپکی توجہ کا شکریہ! ہم تبصروں میں آپ کے سوالات اور خواہشات کا انتظار کر رہے ہیں۔

اعلانِ لاتعلقی: یہ مضمون اور اس پر میرے تبصرے میری رائے ہیں اور ان کا انٹر سسٹم کارپوریشن کی سرکاری پوزیشن سے کوئی تعلق نہیں ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں