Architecture Decision Record

Active theme: Light

← فیصلہ ریکارڈ کی مثالیں

آرکیٹیکچر فیصلے کا ریکارڈ: TypeScript اور JSON سے ڈیٹا بصری کاری کے لیے چارٹ لائبریری ٹول کٹ

بنیادی مقصد:
TypeScript اور JSON کے ساتھ مالیاتی ڈیٹا، سائنسی ڈیٹا اور سرکاری ڈیٹا پر توجہ دیتے ہوئے انٹرایکٹو بصری کاری بنانے کے لیے جدید چارٹنگ ٹول کٹ منتخب کرنا۔ لائبریری کو مضبوط خصوصیات، لچک فراہم کرنی چاہیے اور اوپن سورس ہونی چاہیے۔

سیاق و سباق اور تقاضے:

  1. ایجائل ڈویلپمنٹ (اعلیٰ ترجیح): اسٹارٹ اپ کے طور پر تیز تکرار، پروٹوٹائپنگ اور ڈویلپمنٹ میں لچک ضروری ہیں۔ چارٹ لائبریری کو تیز ڈویلپمنٹ چکروں کی اجازت دینی چاہیے۔

  2. چارٹ کی اقسام (اعلیٰ ترجیح):

    • ڈونٹ چارٹ (Doughnut Chart)
    • ریڈار چارٹ (Radar Chart)
    • کلسٹرنگ پراسس چارٹ (Clustering Process Chart)
    • وقتی محور کے ساتھ ایریا چارٹ (Area Chart with Time Axis)
    • کینڈل اسٹک چارٹ (Candlestick Chart)
    • نائٹنگیل چارٹ (Nightingale Chart)
    • جغرافیائی SVG نقشہ (Geo SVG Map)

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

  3. مفت اور اوپن سورس (اعلیٰ ترجیح): ٹول کٹ لائسنسنگ کی لاگتوں سے بچنے، شفافیت فراہم کرنے اور حسبِ ضرورت ترتیب کی لچک دینے کے لیے اوپن سورس ہونی چاہیے۔

  4. کم اہمیت کے معیارات:

    • رن ٹائم رفتار: اگرچہ کارکردگی اہم ہے، اس فیصلے کے لیے یہ اعلیٰ ترجیح نہیں۔
    • وسعت پذیری: اگرچہ وسعت پذیری عموماً اہم ہے، فوری ضرورت ایسا MVP بنانا ہے جو وقت کے ساتھ بڑھ سکے۔ وسعت پذیری کے خدشات بعد میں حل کیے جا سکتے ہیں۔
    • پچھلی مطابقت: ابتدائی تعمیر کے لیے بنیادی تشویش نہیں، جب تک لائبریری جدید اور فعال طور پر برقرار رکھی جا رہی ہو۔

جانچی گئی لائبریریاں:

  1. Apache ECharts
  2. Chart.js
  3. ApexCharts
  4. AG Charts
  5. Highcharts
  6. Carbon Charts
  7. Layer Cake
  8. D3.js

1. Apache ECharts

جائزہ:
Apache ECharts انٹرایکٹو، حسبِ ضرورت ترتیب کے قابل بصری کاری کے لیے طاقتور، لچکدار چارٹنگ لائبریری ہے۔ یہ چارٹس کی وسیع قسم کو سپورٹ کرتی ہے اور خاص طور پر پیچیدہ، متحرک بصری کاری میں مضبوط ہے۔

طاقتیں:

  • جدید انٹرایکٹویٹی: ECharts زومنگ، پیننگ اور متحرک ڈیٹا اپ ڈیٹس جیسی خصوصیات کے ساتھ انٹرایکٹو چارٹس فراہم کرنے میں ممتاز ہے۔
  • ڈونٹ، ریڈار، کینڈل اسٹک، جغرافیائی SVG نقشے: ECharts مطلوبہ چارٹ کی بہت سی اقسام کو سپورٹ کرتی ہے، بشمول ڈونٹ، ریڈار، کینڈل اسٹک اور جغرافیائی نقشوں کی بصری کاری۔
  • مفت اور اوپن سورس: ECharts اوپن سورس لائبریری ہے، جو اسٹارٹ اپ کی بجٹ کے لحاظ سے محتاط نوعیت کے مطابق ہے اور کوڈ میں ترمیم کی آزادی دیتی ہے۔
  • لچک اور توسیع پذیری: اینیمیشنز، حسبِ ضرورت بصری کاری اور جدید چارٹنگ تکنیکوں کی وسیع سپورٹ کے ساتھ بہت زیادہ حسبِ ضرورت ترتیب کے قابل۔

کمزوریاں:

  • سیکھنے کا خم: ECharts، اگرچہ طاقتور ہے، اپنی لچک اور وسیع API کی وجہ سے زیادہ کھڑا سیکھنے کا خم رکھ سکتی ہے۔
  • دستاویزات کی پیچیدگی: دستاویزات جامع ہیں لیکن اسے ابھی استعمال کرنا شروع کرنے والے ڈویلپرز کے لیے بھاری پڑ سکتی ہیں۔

فیصلہ کن رائے:
انٹرایکٹو چارٹس کی سپورٹ کی وجہ سے ECharts منصوبے کے لیے بہت موزوں ہے، بشمول تمام مطلوبہ اقسام جیسے کینڈل اسٹک چارٹس، ریڈار چارٹس اور جغرافیائی نقشے۔ اس کی اوپن سورس نوعیت منصوبے کی لچک اور کفایت کی ضرورت سے ہم آہنگ ہے۔


2. Chart.js

جائزہ:
Chart.js عام چارٹ اقسام بنانے کے لیے سادہ، استعمال میں آسان چارٹنگ لائبریری ہے۔ یہ اپنی سادگی اور انضمام کی آسانی کے لیے جانی جاتی ہے۔

طاقتیں:

  • استعمال میں آسانی: Chart.js سیٹ اپ اور استعمال میں بہت سادہ ہے، سیکھنے کا خم کم سے کم۔
  • اوپن سورس: Chart.js مفت اور اوپن سورس ہے، جو لاگتیں کم کرنے کے لیے اہم ہے۔
  • عام چارٹ کی اقسام: یہ ڈونٹ، ایریا، ریڈار اور لائن چارٹس جیسے بنیادی چارٹس کو سپورٹ کرتی ہے، جو زیادہ تر بنیادی ضروریات کا احاطہ کرتے ہیں۔

کمزوریاں:

  • محدود جدید چارٹس: Chart.js پیچیدہ چارٹ اقسام، جیسے کینڈل اسٹک چارٹس، جغرافیائی SVG نقشے یا کلسٹرنگ پراسس چارٹس، کو مقامی طور پر سپورٹ نہیں کرتی۔ اگرچہ یہ خصوصیات پلگ اِنز یا حسبِ ضرورت ترتیب کے ذریعے شامل کی جا سکتی ہیں، یہ دوسری لائبریریوں کی طرح سیدھا نہیں۔
  • انٹرایکٹویٹی: اگرچہ Chart.js بنیادی انٹرایکٹویٹی (مثلاً ٹول ٹپس اور ہوور ایفیکٹس) سپورٹ کرتی ہے، یہ ECharts یا D3.js جیسی جدید خصوصیات پیش نہیں کرتی۔

فیصلہ کن رائے:
Chart.js سادہ، تیز منصوبوں کے لیے بہترین ہے، لیکن پیچیدہ چارٹ اقسام کی سپورٹ کی کمی اسے ڈیٹا پر بھاری ایسی ایپلیکیشن کے لیے نامناسب بناتی ہے جس کی ضروریات جدید ہوں، جیسے کینڈل اسٹک چارٹس اور جغرافیائی نقشے۔ یہ پروٹوٹائپنگ کے لیے اچھا انتخاب ہے، لیکن مطلوبہ چارٹ اقسام کے لیے زیادہ جدید ٹولز تجویز کیے جاتے ہیں۔


3. ApexCharts

جائزہ:
ApexCharts جدید چارٹنگ لائبریری ہے جو چارٹ کی مختلف اقسام فراہم کرتی ہے اور استعمال میں آسان API کے ساتھ انٹرایکٹو بصری کاری پر توجہ دیتی ہے۔

طاقتیں:

  • انٹرایکٹو خصوصیات: ApexCharts ٹول ٹپس، زومنگ، پیننگ اور اپ ڈیٹس کے ساتھ انٹرایکٹو چارٹس پیش کرتی ہے۔
  • مالیاتی اور سائنسی چارٹس کی سپورٹ: یہ کینڈل اسٹک چارٹس، ریڈار چارٹس اور ایریا چارٹس سمیت چارٹ اقسام کی وسیع قسم کو سپورٹ کرتی ہے۔
  • استعمال میں آسانی: اس کی API سیدھی ہے اور منصوبے میں ضم کرنا آسان ہے۔
  • مفت اور اوپن سورس: ApexCharts مفت اوپن سورس ورژن پیش کرتی ہے جو بہت سے استعمال کے کیسز کے لیے موزوں ہے۔

کمزوریاں:

  • پیچیدہ حسبِ ضرورت ترتیب: اگرچہ یہ بہت سی خصوصیات فراہم کرتی ہے، حسبِ ضرورت ترتیب کے اختیارات بہت پیچیدہ یا مخصوص چارٹنگ ضروریات کے لیے ECharts یا D3.js جتنے لچکدار نہیں۔
  • جغرافیائی نقشے: ApexCharts جغرافیائی نقشے یا کلسٹرنگ پراسس چارٹس کو مقامی طور پر سپورٹ نہیں کرتی، جو اس منصوبے کے لیے درکار ہیں۔

فیصلہ کن رائے:
ApexCharts استعمال میں آسانی اور انٹرایکٹویٹی کی وجہ سے مضبوط دعویدار ہے، لیکن بعض جدید چارٹ اقسام میں کم پڑ جاتی ہے، خاص طور پر جغرافیائی نقشوں اور کلسٹرنگ چارٹس کی ضرورت۔ یہ سادہ چارٹس کے لیے اچھا اختیار ہے لیکن اس میں کچھ مطلوبہ خصوصیات کی کمی ہے۔


4. AG Charts

جائزہ:
AG Charts کارکردگی اور درستگی کے لیے ڈیزائن کی گئی تجارتی معیار کی چارٹنگ لائبریری ہے۔ یہ مالیاتی، سائنسی اور کاروباری ڈیش بورڈز بنانے کے لیے بہت موزوں ہے۔

طاقتیں:

  • جدید چارٹ کی اقسام: AG Charts کینڈل اسٹک چارٹس، ایریا چارٹس، ریڈار چارٹس اور مزید سمیت بہت سی جدید چارٹ اقسام کو سپورٹ کرتی ہے۔ یہ دیگر AG-Grid مصنوعات کے ساتھ گہرا انضمام بھی پیش کرتی ہے۔
  • اعلیٰ کارکردگی: یہ بہترین کارکردگی پیش کرتی ہے، خاص طور پر بڑے ڈیٹا سیٹس سنبھالتے وقت۔
  • انٹرایکٹویٹی: AG Charts زومنگ، ٹول ٹپس اور متحرک اپ ڈیٹس جیسی مختلف انٹرایکٹو خصوصیات کو سپورٹ کرتی ہے۔

کمزوریاں:

  • مکمل مفت نہیں: اگرچہ AG Charts مفت ورژن پیش کرتی ہے، مکمل خصوصیات والا ورژن ادائیگی شدہ ہے، جو لاگتیں کم کرنا چاہنے والے اسٹارٹ اپس کے لیے رکاوٹ ہو سکتا ہے۔
  • پیچیدگی: اگرچہ لائبریری خصوصیات سے بھرپور ہے، یہ سادہ منصوبوں کے لیے ضرورت سے زیادہ ہو سکتی ہے اور دوسرے اختیارات کے مقابلے میں زیادہ سیٹ اپ اور کنفیگریشن درکار ہو سکتی ہے۔

فیصلہ کن رائے:
AG Charts طاقتور اور خصوصیات سے بھرپور ہے لیکن اپنی تجارتی نوعیت اور لاگت کے ڈھانچے کی وجہ سے بہترین موزوں نہ ہو۔ اس کی موزونیت اس پر منحصر ہے کہ آیا بجٹ ادائیگی شدہ ورژنز کی گنجائش رکھتا ہے یا اوپن سورس متبادل کو ترجیح دی جاتی ہے۔


5. Highcharts

جائزہ:
Highcharts مقبول چارٹنگ لائبریری ہے جو چارٹ کی اقسام کی وسیع رینج اور طاقتور حسبِ ضرورت ترتیب کے اختیارات کے لیے جانی جاتی ہے۔

طاقتیں:

  • جامع چارٹ کی اقسام: Highcharts کینڈل اسٹک، ریڈار، ایریا اور جغرافیائی نقشوں سمیت چارٹس کی وسیع قسم کو سپورٹ کرتی ہے۔
  • انٹرایکٹو اور متحرک: Highcharts ڈرِل ڈاؤنز، زومنگ اور پیننگ سمیت بھرپور انٹرایکٹو خصوصیات فراہم کرتی ہے۔
  • استعمال میں آسانی: اس کی صارف دوست API اور اچھی دستاویزات ہیں، جو شروع کرنا آسان بناتی ہیں۔

کمزوریاں:

  • تجارتی لائسنس: اگرچہ Highcharts غیر تجارتی استعمال کے لیے مفت ورژن پیش کرتی ہے، تجارتی لائسنس مہنگا ہے، جو اسٹارٹ اپس کے لیے نمایاں نقصان ہو سکتا ہے۔
  • سیکھنے کا خم: ECharts جتنا کھڑا نہ ہونے کے باوجود Highcharts کا سیکھنے کا خم ابتدائی افراد کے لیے اب بھی چیلنجنگ ہو سکتا ہے۔

فیصلہ کن رائے:
Highcharts خصوصیات سے بھرپور لائبریری ہے، لیکن اس کا تجارتی لائسنس اسے اوپن سورس، لاگت کے لحاظ سے حساس منصوبوں کے لیے کم موزوں بناتا ہے۔ اس کے جامع چارٹنگ اختیارات ایک مثبت پہلو ہیں، لیکن لائسنسنگ کا مسئلہ اس استعمال کے کیس کے لیے اس کی کشش محدود کرتا ہے۔


6. Carbon Charts

جائزہ:
Carbon Charts، IBM کی تیار کردہ چارٹنگ لائبریری ہے، جو بصری طور پر پرکشش اور بہت زیادہ حسبِ ضرورت ترتیب کے قابل چارٹس بنانے کے لیے ڈیزائن کی گئی ہے۔

طاقتیں:

  • حسبِ ضرورت ترتیب کی اہلیت: Carbon Charts چارٹ کی شکل اور رویے کی وسیع حسبِ ضرورت ترتیب کی اجازت دیتی ہے۔
  • اوپن سورس: یہ مفت اور اوپن سورس ہے، جو کفایتی حلوں کے منصوبے کے تقاضے سے ہم آہنگ ہے۔
  • عام چارٹس کی سپورٹ: یہ ڈونٹ، ریڈار اور ایریا جیسی عام چارٹ اقسام کو سپورٹ کرتی ہے، اگرچہ جغرافیائی نقشوں یا کینڈل اسٹک چارٹس جیسی زیادہ جدید اقسام کی سپورٹ کی کمی ہے۔

کمزوریاں:

  • محدود جدید چارٹ کی اقسام: یہ جغرافیائی نقشوں، کلسٹرنگ پراسس چارٹس یا کینڈل اسٹک چارٹس کو سپورٹ نہیں کرتی، جو منصوبے کے لیے لازمی ہیں۔
  • چھوٹا ماحولیاتی نظام: ECharts یا Highcharts جیسی بڑی چارٹ لائبریریوں کے مقابلے میں Carbon Charts کی کمیونٹی اور ماحولیاتی نظام چھوٹا ہے۔

فیصلہ کن رائے:
Carbon Charts اوپن سورس اور حسبِ ضرورت ترتیب کے قابل ہے لیکن اس میں اس منصوبے کے لیے درکار زیادہ پیچیدہ چارٹ اقسام کی سپورٹ کی کمی ہے۔ یہ سادہ چارٹنگ ضروریات کے لیے زیادہ موزوں ہے۔


7. Layer Cake

جائزہ:
Layer Cake ڈیٹا بصری کاری کی لائبریری ہے جو لچکدار، تہہ دار بصری کاری بنانے کے لیے ڈیزائن کی گئی ہے۔

طاقتیں:

  • حسبِ ضرورت ترتیب کے قابل تہیں: یہ پیچیدہ بصری کاری کے لیے طاقتور تہہ بندی کے اختیارات فراہم کرتی ہے۔
  • اوپن سورس: یہ مفت اور اوپن سورس ہے، جو اسے بجٹ کے لحاظ سے محتاط منصوبوں کے لیے قابلِ عمل اختیار بناتی ہے۔

کمزوریاں:

  • محدود دستاویزات: Layer Cake میں وسیع دستاویزات اور کمیونٹی سپورٹ کی کمی ہے، جس سے زیادہ قائم شدہ لائبریریوں کے مقابلے میں اس کے ساتھ کام کرنا مشکل ہو جاتا ہے۔
  • چارٹس کے لیے نہیں بنائی گئی: Layer Cake غیر چارٹ بصری کاری کے لیے زیادہ موزوں ہے، اس لیے اس کے تیار چارٹنگ اختیارات محدود ہیں۔

فیصلہ کن رائے:
اگرچہ منفرد بصری کاری کے لیے دلچسپ ہے، Layer Cake کینڈل اسٹک چارٹس یا ریڈار چارٹس جیسے روایتی چارٹنگ تقاضوں کے لیے مثالی نہیں۔ یہ معیاری چارٹس کے دائرے سے باہر حسبِ ضرورت بصری کاری کے لیے زیادہ موزوں ہے۔


8. D3.js

جائزہ:
D3.js، HTML، SVG اور CSS کے ذریعے ڈیٹا سے چلنے والی بصری کاری بنانے کے لیے طاقتور JavaScript لائبریری ہے۔

طاقتیں:

  • بے مثال لچک: D3.js تقریباً کسی بھی قسم کی حسبِ ضرورت بصری کاری بنانے کی اجازت دیتی ہے، جو اسے جدید اور انٹرایکٹو چارٹس کے لیے بہت طاقتور بناتی ہے۔
  • وسیع خصوصیات: یہ جغرافیائی نقشوں، کلسٹرنگ چارٹس اور مزید سمیت تمام مطلوبہ چارٹ اقسام کو سپورٹ کرتی ہے۔
  • حسبِ ضرورت ترتیب کے قابل: D3.js میں حسبِ ضرورت ترتیب کی سطح بے مثال ہے، جو ڈویلپرز کو انتہائی موزوں بصری کاری بنانے کی اجازت دیتی ہے۔

کمزوریاں:

  • کھڑا سیکھنے کا خم: D3.js کا سیکھنے کا خم کھڑا ہے اور دوسری لائبریریوں کے مقابلے میں ضم کرنا زیادہ پیچیدہ ہے۔
  • وقت طلب: D3.js میں چارٹس بنانا وقت طلب ہو سکتا ہے، خاص طور پر کینڈل اسٹک یا ڈونٹ چارٹس جیسے عام چارٹس کے لیے۔

فیصلہ کن رائے:
D3.js جدید، حسبِ ضرورت ترتیب شدہ چارٹس کے لیے ناقابلِ یقین حد تک طاقتور ہے لیکن اپنے کھڑے سیکھنے کے خم اور ڈویلپمنٹ کے وقت کی وجہ سے بہت سے عام استعمال کے کیسز کے لیے ضرورت سے زیادہ ہے۔ یہ ان حالات کے لیے بہترین ہے جہاں دوسری چارٹ لائبریریاں مطلوبہ سطح کی حسبِ ضرورت ترتیب فراہم نہیں کرتیں۔


اختتامیہ

منصوبے کی ضروریات کی بنیاد پر لائبریریوں کا جائزہ لینے کے بعد Apache ECharts بہترین اختیار کے طور پر ابھرتی ہے۔ یہ جغرافیائی نقشوں، کینڈل اسٹک چارٹس اور کلسٹرنگ چارٹس سمیت مطلوبہ چارٹس کی مکمل رینج کو سپورٹ کرتی ہے۔ یہ اوپن سورس، خصوصیات سے بھرپور اور بہت انٹرایکٹو ہے، جو منصوبے کے اہداف سے بالکل ہم آہنگ ہے۔ اگرچہ D3.js سب سے زیادہ لچک پیش کرتی ہے، اس کی پیچیدگی اور وقت کی سرمایہ کاری اسے تیزی سے تکرار کرنے کے خواہاں اسٹارٹ اپ کے لیے کم مثالی بناتی ہے۔ ApexCharts اور Chart.js سادہ منصوبوں کے لیے اچھے متبادل ہیں لیکن ان میں جدید چارٹ اقسام کی سپورٹ کی کمی ہے۔