
نوشته شده توسط
رامین مرادی
هرکسی یه نظری داره.
شاید این گفته شما تو برنامه های تک کاربره درست به نظر بیاد اما وقتی برنامه میره سمت شبکه و تعداد کاربرا مثلا میشه پونصدنفر(مثاله که مثلا تو پروژه های بزرگ این عدد خیلی خیلی بالاتر از این چیزی که من گفتم میشه)
حساب کنید پونصد نفر دارن اطلاعات ثبت میکنن. هر بار برنامه پونصد درخواست رو تو بستر شبکه ارسال کنه و برفرض مثال برا هردرخواست یک میلیون رکورد برگردونه سرور دیتابیس شدیدا کم میاره (حالا بگذریم از سرعت شبکه و اینترنت و این چیزا). بحث امنیت اطلاعات مبادله شده تو شبکه هم هست. بحث سیستمی که قراره این یک میلیون رکورد رو پیمایش کنه هم هست.
ولی وقتی این کار سپرده میشه سمت دیتابیس اینجور میشه که پونصد درخواست ارسال میشه به سرور و سرور بانک اطلاعاتی مثلا با پروسیجر(پروسیجر با یک بار اجرا تو حافظه کش میشه و دفعه های بعد سرعتتون خیلی خیلی بهبود پیدا میکنه.امنیت دیتابیستون بالا میره چون اطلاعات جداول و فیلدها در سمت برنامه نیست.اس کیو ال اینجکشن جلوش گرفته میشه.) این کار رو میکنه و نتیجه رو فقط با یه مقدار مثلا ثبت شد یا نشد برمیگردونه. و اینجوری کل ترافیکتو از 500 میلیون رکورد میرسونی به پونصد رکورد. و دیگه اینکه داده هاتون در طول شبکه جریان نداره و جلوی سواستفاده احتمالی رو هم گرفتید.
تا حدودی با نظر شما موافقم ولی در حجم اطلاعات دارید یکم زیاده روی میکنید و از 1 میلیون رسیدید به 500 میلیون.
برنامه ای که بخواد هر بار این حجم از اطلاعات رو پردازش کنه نیاز به یک ابر کامپیوتر داره ولی شاید بهتر باشه بگم برنامه نویسی که اینجور برنامه ای بخواد بنویسه رو باید بهش حبس ابد داد. همه ما تجربه کار با دیتای بزرگ رو داشتیم. من الان با دیتا بیسی کار میکنم که حدود 130 گیگ اطلاعات غیرگرافیکی داخلش هست ولی در 1درصد مواقع هم نیازی به چنین پردازشی نداشتم و ندارم. ولی در کل شاید ماهیت پروژه جوری باشه که در چند مورد خاص نیاز به چنین کاری باشه و منم هم منکرش نیستم. به همین خاطر گفتم "هر چیزی رو که میتونید، بهتره سمت برنامه هندل کنید". اما اجازه ندید این بهانه شما رو مجبور کنه رو بیارید به سمت کد نویسی داخل دیتابیس و منطق تجاری برنامه رو پراکنده کنید.هر چند میدونم خیلی از برنامه نویسای داخل ایران طرفدار این روش هستند ولی بهتره به چیزهایی که جدید هست رو بیارید و دست از سر دیتابیس بیچاره بردارید.
در مورد امنیت هم باید بگم من و شما برنامه نویس نباید نگران امنیت داده ها توی شبکه باشیم. اونی که باید نگران باشه مسئول شبکه و امنیت هست. در ضمن برای جلوگیری از این مورد به راحتی میتونید برای SQL Server یک گواهینامه SSL تعریف کنید تا اطلاعات توی شبکه قابل دستیابی نباشه.