ما صنعنا من JET BI. نظام ذكاء الأعمال المعمارية دون انحدار غنائي



في منشور سابق ، تحدثت عن تطور أنظمة BI وكيف توصلنا إلى فهم أن إنشاء منصتك الخاصة أفضل من التكيف مع الأنظمة الحالية.

اليوم ، كما وعدت ، أتحدث عن بنية منصتنا الجديدة ، والتي آمل أن تكون حلاً جيدًا لبناء أي أنظمة BI.

العمارة الوظيفية


في النظام ، يمكن تمييز "نواة" رئيسية وظيفيا.

جوهر التصور و BI ( الفريق وأنا أسميها "القارئ") إنها تعمل على حقيقة أنها تقوم بتصفية البيانات ، وحساب الحقائق والقياسات ، وحساب وتخزين الركام ، وما إلى ذلك. بشكل عام - OLAP الأكثر عادية. دعم الحوسبة في الذاكرة متاح أيضًا. يشغل محرك ETL الذي طورناه مكانًا منفصلاً ، ويدعم كلاً من طرق التحميل القياسية (على سبيل المثال ، SQL ، استعلام MongoDB ، التفريغ من ملفات Excel ، إلخ) ، وتحميل أي شيء من أي مكان باستخدام النصوص البرمجية JS. كيف بالضبط؟ والحقيقة هي أننا "ربطنا" محمل JS بواجهة برمجة تطبيقات خاصة ، والغرض منها هو توفير مجموعة من الطرق سهلة التعلم الأكثر طلبًا للاستعلامات إلى مصادر مختلفة ، بالإضافة إلى تحويل البيانات (على سبيل المثال ، تحويل ، ربط ، إضافة أعمدة محسوبة ، أنواع مختلفة وظائف رياضية وإحصائية).

لغة

جافا سكريبت؟ هل أنت مجنون؟

ربما ...

ولكن اختيار JS كلغة ورفض اختراع دراجة أخرى ، كما هو الحال غالبًا في منصات BI ، ليس من قبيل الصدفة. تحولت شعبية اللغة في حد ذاتها ، وبساطة تطورها (على الأقل بالنسبة لمهام ETL) والعدد الكبير من المتخصصين في السوق إلى عوامل حاسمة بالنسبة لنا. بشكل عام ، وفقًا لإيديولوجية منصتنا ، يشبه محرك ETL آلية "البرامج النصية للتحميل" المستخدمة ، على سبيل المثال ، في QlikView ، باستثناء اللغة التي كُتبت بها هذه البرامج النصية. آمل أن يأتي العديد من موردي منصات BI عاجلاً أم آجلاً إلى لغة برمجة عالمية ، لكننا نعمل حاليًا على ما هو.

جوهر منطق الأعمال.بل هو إطار عمل يدمج بنية البرنامج ويوفر عددًا من واجهات برمجة التطبيقات العالمية التي يمكنك من خلالها إضافة مكونات تحليلية إضافية للمعلومات التطبيقية إلى النظام.

من ما لدينا بالفعل ، يمكننا أن نلاحظ:

  • مُنشئ ومعالج لنماذج إدخال البيانات
  • ماذا لو بيئة النمذجة والتحليل
  • نظام إدارة الطلبات
  • مستودع المستندات الإلكتروني
  • وحدة إدارة المشروع والمشروع

أود أن أؤكد أن هذه المكونات موجودة في النظام لسبب ما ولا تعيش حياتهم الخاصة. ترتبط ارتباطًا وثيقًا ببعضها البعض وبشكل مباشر بنظام التصور والإبلاغ. في الواقع ، يصبحون إما مورّدين أو مستهلكين للبيانات. على سبيل المثال ، من نظام إدارة الطلبات ، يمكنك عمل تقرير بسيط من الصفر من الصفر يعرض حالة جميع الطلبات وقائمة بأكثر الأشخاص كسولًا ضارًا. ومن وحدة إدارة المشروع ، احصل على البيانات الخاصة بالمشاريع "الأكثر تعثرًا" وحدد سبب التأخير.

العمارة التقنية


تعمل الواجهة الخلفية للتطبيق تحت Node.JS ، تتخلل عددًا من المكونات الأصلية الهامة (من حيث الأداء). مثل أي تطبيق Node.JS ، يمكن تجميع النظام وحزمه ونشره في أي بيئة تلبي متطلبات العقدة.

لتخزين البيانات الوصفية ، يمكنك استخدام معظم DBMSs العلائقية الشائعة ، غالبًا ما نقوم بنشرها على PostgreSQL. تقوم قاعدة البيانات بتخزين جميع المعلومات الوصفية حول التقارير ولوحات التحكم وعمليات ETL والوحدات الإضافية وما إلى ذلك. يمكن أيضًا استخدام النظام كأداة لملء تخزين بيانات الطرف الثالث. بالنسبة لكميات صغيرة من البيانات ، يمكنك تنظيم التصور في وضع ROLAP ، أي مباشرة من أنظمة المصدر. شيء مثل "النموذج الترابط" من QlikView موجود أيضًا. إذا حددت مجموعتين أو أكثر من مجموعات البيانات كمصدر بيانات للمصور ، فسيتم دمجها وفقًا لأسماء الأعمدة في مجموعة واحدة.

Frontend هو سبا كلاسيكي على React والمكتبات ذات الصلة والوحدات الإضافية لـ JET BI نفسها. يحدث الاتصال بالواجهة الخلفية من خلال REST الأكثر شيوعًا ، حيث يكون جزء من الشفرة متشابهًا ، أي أنه يستخدم من الأمام والخلف. كل الكود هو ES7 مع نوع من التعليقات التوضيحية (تدفق) ، يمر عبر بابل. لقد تخلينا عن Typescript لصالح Flow ، لأنه عندما بدأنا لأول مرة ، استنتجنا الأنواع الأخيرة بشكل أفضل قليلاً.

في كثير من الأحيان (في حوالي 80 ٪ من الحالات) نأخذ وحدات مفتوحة المصدر جاهزة ولا نخترع وحداتنا الخاصة (في الخلفية أقل كثيرًا). هذا يبسط ويقلل من تكلفة التطوير والدعم ، ولكنه يقلل بشكل طفيف من المرونة. كانت هناك حسابات خاطئة ، وبعد ذلك كان لا يزال يتعين إعادة كتابة بعض المكتبات من تلقاء نفسها.

استنتاج


في النهاية ، أود أن أقول أنني كمهندس معماري سعيد لأن "إطار" النظام اتضح أنه قوي ومستقر من ناحية ، ومن ناحية أخرى ، عالمي بهامش كافٍ من المرونة (على الرغم من وفرة مكتبات المصدر المفتوح المذكورة أعلاه). إنها مثل شجرة عيد الميلاد ، التي نعلق عليها باستمرار ألعابًا جديدة. بعد كل شيء ، يجب أن تتحمل الشجرة ألعابًا من أصناف وخطوط مختلفة ، وفي نفس الوقت لا تقع تحت وزنها. في رأيي ، تم تحقيق هذا التوازن في JET BI ، مما يمنح الثقة بأن خططنا لتطوير النظام سيتم تنفيذها.

ألبرت نوروتدينوف ، مهندس معماري ، أنظمة جت انفستيمتكس

All Articles