سلام دوستان
یه راهنمایی میخواستم ازتون در مورد سیستمی که قصد تحلیل و پیاده سازی ش رو دارم.
من قصد دارم ی سامانه ای رو پیاده سازی کنم که بصورت آنلاین و لحظه ای ، یکسری دیتا رو از ی سورسی بگیره (از طریق api) ، پردازش کنه و خروجی رو نمایش بده و در شرایطی حتی خروجی ش رو به همون سورس برگردونه. فرض کنید قراره یه داشبورد داشته باشیم که بصورت لحظه ای اطلاعاتی رو نمایش میده و در پشت صحنه ، یکسری عملیات هم داره انجام میده.
مواردی که برای من مهم هست : آپ بودن پایدار سیستم ، سرعت (دریافت لحظه ای دیتا، پردازش و تولید خروجی) هست.
برای چنین سامانه ای باید در مورد برنامه نویسی Real time سرچ کنم ؟ آیا از حوزه ی هوش تجاری و ابزارهای هوش تجاری خارج میشه ؟
ممنون میشم راهنمایی کنین :)
سلام
این مواردی که شما فرمودید یک سیستم داشبورد معمولی است که تقریبا در بیشتر سامانه های اندازه متوسط هم دیده میشه.
دریافت اطلاعات از طریق سرویس و پردازش و نشان دادن آن روز نمودار چیز خیلی خاصی نیست و شما می توانی با هر زبانی مثل پایتون یا سی شارپ هم پیاده کنی
بحث Real Time خیلی خیلی مفصل تر از این بحث هاست و شما برای تولید الپیکیشن ریل تایم با محدودیت های بسیار زیادی مواجه هستی!! مثلا سیستم عامل! شما اگر زبان ریل تایم انتخاب می کنی باید سیستم عاملت هم ریل تایم باشد و دیگر نمی توانی مثلا از ویندوز سرور استفاده کنی!
من توصیه ام این است که فعلا کار را برای خودت سخت نکنی و با همین سی شارپ و کتابخانه های خوب برای نمودار مو داشبود مثل eChart یا CHARTJS کار کنی
ممنونم آقای قاسمی.
من میخوام ی تاکید دیگه بر (سرعت) بکنم و دوباره ازتون راهنمایی بگیرم :
بازه زمانی دریافت اطلاعات و پردازش برای من ، ماکزیمم در حد 1 دقیقه هست. یعنی تا جایی که بشه باید در (ثانیه) اطلاعات رو بگیرم ، پردازش و نتیجه رو ذخیره کنم ... اینقدر که مسئله ی دریافت لحظه ای و پردازشش اهمیت داره شاید تولید خروجی بلادرنگش اهمیت نداشته باشه. در واقع این سامانه قرار هست براساس ورودی هاش، خودش تصمیم گیری و عمل کنه و در نهایت خروجی عملیاتی که انجام داده رو تحت گزارش و نمودار نمایش بده.
پیشنهاد شما همچنان سی شارپ هست ؟
سلام مجدد
خب سوال عوض شد!
ببینید اول یک نکته را بگم بعد برم سر اصل مطلب:
واژه بلادرنگ یا Real Time تعاریف ویژه ی خودش را دارد و زمانی مفهوم پیدا می کند که شما اصلا تاخیر زمانی نداشته باشید یا وجود تاخیر زمانی منجر به فاجعه گردد. حالا این تاخیر چه یک دقیقه باشد چه هزارم ثانیه! مثلا در یک صفحه راداری اگر بلادرنگ نباشد حتا با تاخیر کم هم منجر به فاجعه می گردد. در برنامه نویسی بلادرنگ، سیستم عامل نقش بسیار مهمی دارد و معمولا لینوکس و ویندوز جزو سیستم عامل های بلادرنگ محسوب نمی شوند.
پس من از مفهوم بلادرنگ در جواب شما فاصله می گیرم.
اما جواب سوال شما:
خب شما فرمودید 1 دقیقه! 1 دقیقه اتفاقا زمان بسیار زیادی است! خب پس زمان به اندازه کافی داریم! من توصیه می کنم قسمت backend پروژه تان را حتما با ASP. Core C# 3.1 انجام دهید! فوق العاده سرعت پاسخگویی بسیار بسیار زیادی دارد و اصلا قابل مقایسه با دیگر زبان ها نیست. البته شما در متن سوالتان گونه ای صحبت کردید من حدس زدم شاید مفاهیم هوش مصنوعی نیز در میان است. اگر چنین بود و محاسبات ریاضی پیچیده بود به سراغ پایتون بروید.
در بحث دیتابیس اگر بصورت Code First عمل می کنید خب طبیعتا به سراغ Entity Framework .Core بروید که ان نیز در سرعت، زبانزد عام و خاص است اما بنده اینجا چند تبصره خدئمتتان اعلام می کنم.
تبصره 1: طراحی قسمت CRUD شما خیلی خیلی مهم است در چنین پروژه ای! کار با DbContext را حتما به خوبی یاد بگیرید و بدانید چه وقت از چه چیزی باید استفاده کنید در مدیریت DbContext و عمل Dispose کردن این موجود شیطانی!
تبصره 2: اگر حجم عظیمی از اطلاعات را واکشی می کنید من توصیه ای دارم مبنی بر استفاده از SP در زمان هایی که حجم اطلاعات بسیار بالاست. اینجا را باید از Linq صرف نظر کنیم
تبصره 3: محاسبات ریاضی را مدام کپچر کنید و در بهیهنه سازی آن کوشا باشید
تبصره 4: در سیستم هایی که زمان بسیار اهمیتد ارد معمولا مباحث نرمال سازی پایگاه داده باید نادیده گرفته شود.
باز اگر سوالی بود در خدمتم
من واقعا از پاسخ تون و از بابت وقتی که میذارین و با حوصله جواب میدین سپاسگزارم.
من چند دقیقه پیش در جریان جزئیات پروژه قرار گرفتم و الان شک دارم که جای مطرح کردن اون توی این تاپیک هست یا خیر ، اما اگه اجازه بدین میخوام همینجا مطرحش کنم . موضوع پروژه ، نوشتن یک Trader (معامله گر) اتومات هست! که در لحظه باتوجه به الگوریتم تحلیلی ثابتی که بهش داده شده، تصمیم گیری کرده و بصورت اتوماتیک خرید و فروش انجام میده!
اینترفیس خاصی نیاز نداره اما باید پردازش و معاملات رو اتوماتیک انجام بده و البته لاگ معاملات و برخی از پردازش هاش رو هم به end user بده.
در چنین شرایطی، پیشنهادتون چی هست ؟
من بازم تشکر میکنم از شما :)
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)