ویدئو فارسی آموزش ارث بری جداول در دیتابیس postgresql
لینک کوتاه چهارشنبه , 18 مرداد 1396 5 دیدگاه
سلام در این آموزش در مورد ارث بری جداول در دیتابیس postgresql توضیحاتی ارائه داده ام . لطفا نظرات خودتون رو اعلام کنید
سلام
قطعا پیش آمده براتون که در دیتابیس رکوردهای تکراری براساس یک فیلد رخ بده
مثلا ، کاربری با نام کاربری یکسان منتها بصورت حروف بزرگ و کوچیک ثبت نام کرده باشه Reza , reza rEzA
یا حتی مثلا شخصی به اسم رضا اقدام به ارسال چندین نظر کرده باشه
یا اینکه یکی از مطالب اخبارتون دو بار ثبت شده باشه
علی ای حال ، قطعا این مساله رخ میدهد
و اما ما میخوایم ببینیم با اینها چکار کنیم
پارتیشن بندی اساسا در دیتاهای بزرگ سبب افزایش سرعت (قابل ملموس) دستورات SELECT میشود.
و همانطور که از اسمش پیداست براین اساس هست که رکوردهای یک جدول را به چندین پارت کوچکتر تقسیم میکند و براساس نوع تقسیم بندی فقط در یک یا چند پارت کوچکتر عملیات جستجو را انجام میدهد که این نتیجه خوبی در دیتاهای بارکورد بالا خواهد داشت ، دیتابیس هایی چون MySQL و MSSQL چنین قابلیتی رو دارا هستند که بسادگی پارتیشن بندی در آنها ایجاد کرد اما برای PostgreSQL کمی داستان متفاوت است. در حقیقت پارتیشن بندی در PostgreSQL با قابلیت وراثت جداول از یکدیگر قابل پیاده سازی میباشد به این ترتیب که یک جدول مادر ساخته میشود و جدولهای فرزند متعدد (که بعنوان پارت های جدا هستند) از جدول مادر ارث بری میکنند و وظیفه ذخیره داده ها را برعهده دارند .
در ادامه نحوه ساخت پارتیشن بندی دیتابیس در Postgresql را آموزش میدهیم .
با سلام
بعد از مدت طولانی باز هم برگشتم
شاید یک زمانی در یک پروژه ای خواستید یک اسکرین شات از یک صفحه سایت بگیرید
خیله خب ، ساده است اول میرید به اون سایت ، بعد روی کیبورد دکمه F11 رو میزنید تا صفحه FullScreen بشه و سپس دکمه PrintScreen رو میزنید تا یک تصویر از صفحه تون بگیره و سپس با استفاده از یک برنامه ادیتور تصویر مثل فوتوشاپ یا gimp اونو paste میکنید !
آههههه ، چه سخت شد :)
انگار یادم رفته من یه برنامه نویسم !
خیله خب هر چی که گفتم رو دور بریزید ، امروز میخوام یه کار دیگه بکنیم ، شاید روزی روزگاری هزار تا لینک دادن بهتون و گفتن ازشون عکس بگیر ، یا پرینت بگیر یا شایدم لازم شد توی سایتتون اسکرین شات سایتهای کاربراتونو نشون بدید یا هر چی
خب بریم ادامه مطلب
وبسرویس بانک سامان یکی از ساده ترین وبسرویس هاست و به راحتی هر برنامه نویس آماتوری میتواند نحوه اتصال به این سیستم را پیاده سازی کند
حتی دیده شده بسیاری از سایتهای درگاه واسط با الگو گیری از این روش اقدام به ارائه وبسرویس به مشتری هاشون شده اند .
این وبسرویس ساده بانک سامان متاسفانه مشکلات زیادی به همراه دارد و امکان سواستفاده فراوانی میدهد
اما اگر همه چیز اصولی باشد ، جز یک پرداخت موفق و مطمئن ، شاهد هیچ کاری نخواهیم بود !
خب جهت مشاهده کامل آموزش به ادامه مطلب رجوع کنید .
به لطف سایت وبشمار(webshomar.com) لازم شد بنچ مارکی روی رکوردهای نسبتا بالا(دومیلیون رکورد) روی دیتابیس محبوب mysql و postgresql انجام بدهم
مشخصات
mysql 5.5
postgresql 9.1
debian 7 os
ram 4gig
cpu Intel Core i5-2430M CPU @ 2.40GHz
این بنچ مارک روی سیستم شخصی خودم انجام شد و ساختار دیتابیس های هر دو مشابه بود و داده ها کاملا شبیه هم بودند
در تیبل از فیلد های int , char , varchar , smallint استفاده شده بود
مختصر نتایج این بنچ مارک به شرح زیر خدممتان ارائه میگردد
در دستورات select عادی با چندین condition دیتابیس mysql با اختلاف جزئی در حد یک دهم و یک صدم سریعتر از pg بود
اما نیاز سایت وبشمار ایجاب میکرد کوئریهای سنگین محاسباتی روی رکوردها انجام گیرد
دستوراتی شمارشی مثل select count(*) با چندیدن condition با برتری قابل ملاحضه ای با pgsql بود در تستی که انجام شد pgsql در 3.4 ثانیه و mysql در 6.4 ثانیه کوئری را به انجام رساند
در کوئری هایی که شامل دستور count و group by بود برتری با pgsql بود نتیجه کوئری در pgsql در 3.8 ثانیه و در mysql با 7.9 ثانیه به انجام رسید
در کوئری هایی که شامل دستور count(distinct field)بود برتری با mysql بود نتیجه یک کوئری در pgsql با 9.8 ثانیه و در mysql با 5.1 ثانیه به انجام رسید
اما در کوئری هایی که شامل distinct بدون استفاده از count بود برتری با pgsql بود با 2.6 ثانیه در حالیکه mysql در 4.6 ثانیه کوئری را به انجام رساند
در نهایت پیشنهاد میکنم بررسی کنید اگر قرار هست وبسایت شما داده های محاسباتی را ذخیره کند و لازم باشد محاسباتی روی داده ها انجام گیرد مثلا تعداد رکورد ها در سیستم هایی چون آمارگیر و انجمن و شبکه اجتماعی و امثالهم پیاده سازی کنید از postgresql استفاده کنید و اگر هم قرار هست سیستم های خبری و محتوایی پیاده سازی کنید از mysql استفاده کنید
اگر هم احساس میکنید رکوردهای شما هیچ وقت به میلیون رکورد نمیرسد از mysql استفاده کنید که سریعتر هست .
دقت کنید به طور مثال اگر سایت شما در هر دقیقه یک رکورد جدید به دیتابیس اضافه کند , بعد از دو سال به یک میلیون رکورد میرسد !!
پس حتما چشم انداز فعالیت سایتی که پیاده میکنید را بررسی کنید .
با تشکر رضا شیخله
کارهایی که بعد از نصب nginx باید انجام بدید .
1. عدم نمایش ورژن nginx در هدر ارسالی
server_tokens off;
2. فعال کردن gzip
gzip on; gzip_types text/plain application/xml text/css application/x-javascript application/javascript; gzip_vary on;
3. استفاده از دستور کش مرورگر (داخل هدر برای فایلهای ایستا)
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 1y; log_not_found off; }
کلیه دستورات فوق باید در فایل کافیگ nginx در داخل بلاک server قرار بگیرند.
بعد از انجام تغییرات وبسرور را رستارت کنید .
<?php // protected/components/CaptchaAction.php class CaptchaAction extends CCaptchaAction { protected function generateVerifyCode() { $rand = (int) mt_rand(11111,999888); $time = $rand + time() - 1300000000; $str = (string) substr($time,-5,6); $str = str_replace('0','1',$str); return $str; } }
public function actions() { return array( 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xFFFFFF, 'foreColor' => 0xD24400 , ),
public function actions() { return array( 'captcha'=>array( 'class'=>'CaptchaAction', 'backColor'=>0xFFFFFF, 'foreColor' => 0xD24400 , ),