الستیک سرچ چیست و چه زمانی از آن استفاده کنیم؟

Elasticsearch یک موتور جستجو و تحلیل دادهی بزرگ و توزیعشده است که بر اساس Apache Lucene ساخته و توسط شرکت Elastic توسعه یافته است. این ابزار متنباز، به دلیل سرعت بالا، مقیاسپذیری و قابلیت پشتیبانی از دادههای ساختاریافته و غیر ساختاریافته، یکی از محبوبترین ابزارها در دنیای تحلیل داده و جستجو است. در این مقاله خواهیم گفت elasticsearch چیست؟ و به بررسی ویژگیها، معماری، نحوه نصب و راهاندازی، کاربردها و مزایای آن خواهیم پرداخت. elasticsearch چیست؟ الستیک سرچ یا Elasticsearch یک موتور تحلیل و جستجوی open source (متن باز)، بر مبنای معماری Rest و توزیع شده است که بر اساس تکنولوژی Apache Lucene ساخته شده. جالبه بدونید از سال ۲۰۱۰ که این محصول منتشر شده، به مشهورترین موتور جستجو تبدیل شده و در مواردی مثل تحلیل لاگ، جستجوی Full-text، هوش امنیتی، تحلیل تجاری و هوش عملیاتی بیشترین استفاده را بین رقبای خودش داشته. ویژگیهای Elasticsearch چه هستند؟ Elasticsearch مزایای بسیاری دارد که در ادامه به مهمترین آنها میپردازیم: ۱. جستجوی سریع و دقیق Elasticsearch از شاخصگذاری دادهها برای بهبود سرعت جستجو استفاده میکند. با استفاده از این تکنیک، این ابزار قادر است تا دادهها را بهصورت بلادرنگ و با دقت بالا جستجو کند. این ویژگی به ویژه برای وبسایتها و […]
کشف کوئری های کند و افزایش سرعت دیتابیس در sql server

یکی از متداولترین مشکلات سازمان هایی که با حجم زیادی از دیتا سر و کار دارند، کوئری هایی هستند که سرعت اجرای پایینی دارند. چالش برانگیزترین مشکل این است که بتوانیم تشخیص دهیم کدام کوئری کند اجرا می شود و علت این کندی که باعث افت کارایی شده است، چیست؟ خوشبختانه در اغلب موارد پیدا کردن آن بسیار ساده است. پیشنهاد من این است که بیشتر وقت خود را جهت پیدا کردن علت واقعی که باعث این افت سرعت شده، صرف کنید تا راه حل های احتمالی که ممکن است وجود داشته باشد. خوشبختانه، ابزار و تکنیک هایی برای توسعه دهنده یا مدیر بانک اطلاعاتی وجود دارد که باید همیشه از آن استفاده کند تا بتواند راه حل خوبی برای کوئری های کند ارائه دهد. نکته: من در این مقاله برای تست های خودم از SQL Server 2016 استفاده می کنم. اگر شما از ورژن های قدیمی تر استفاده می کنید، Query Store را در دسترس نخواهید داشت اما بقیه ابزارها وجود دارند. ابزار و تکنیک ها انجام هر کار تخصصی در دنیا نیاز به ابزار خاص خود دارد. فرآیند شناسایی کوئری های کند هم ازین قائده مستثنی نیست. در این مقاله ابزارهایی را معرفی می کنیم که یا […]
بازگردانی همزمان دیتابیس های یک دایرکتوری

یکی از چالش هایی که مدیران پایگاه داده بصورت مداوم با آن مواجه می باشند، پشتیبان گیری و بازگردانی دیتابیس ها می باشد. روش های مختلفی مانند نرم افزارهای جانبی، job نرم افزار sql و کوئری های مختلف برای اینکه پشتیبان گیری بصورت خودکار انجام شود وجود دارد، اما جهت بازگردانی دیتابیس ها اغلب بصورت تکی و با انجام چندین مرحله عملیات صورت می گیرد و در صورتیکه تعداد زیادی دیتابیس را بخواهید بازگردانی کنید، مجبور خواهید بود این مراحل را برای هر دیتابیس بصورت مجزا انجام دهید.
امن سازی بانک اطلاعاتی MySql

Mysql سرویس پایگاه داده بسیار معروف و پراستفاده از سرورهای لینوکسی و البته ویندوزی میباشد و با توجه گستردگی و پرکاربرد بودن این سرویس، امنیت آن نیز قابل توجه خواهد بود. افزایش امنیت نرم افزارهای سرور قسمت مهمی از ساختار امنیتی یک سرور را تشکیل میدهد، در این مقاله سعی کردیم راهکارهای افزایش امنیت در سرویس Mysql سرور را بررسی کرده و از نفوذ و آسیب پذیری های متداول در این سرویس جلوگیری نماییم.
راهکاری جهت انتقال پایگاهداده SQl Server از نسخه بالا به نسخههای پائینتر

در نرمافزار SQL Server Management امکان بازگردانی پایگاهداده از نسخه بالاتر به نسخههای پائینتر وجود ندارد، بهعنوان مثال نمیتوانید Backup (بکآپ) پایگاهدادهای که از طریق نسخه ۲۰۱۲ این نرمافزار گرفته شدهاست را در نسخه ۲۰۰۸ آن Restore (بازگردانی) نمائید و درصورت اقدام به بازگردانی با خطای Specified Cast is not Valid مواجه خواهید شد. بهترین راهکار این است که ما همیشه از نرم افزارهای جدید و بروز شده استفاده کنیم اما در برخی مواقع کاربر به برخی دلایل نیاز به بازگردانی در نسخه پائینتر دارد. جهت رفع این مشکل با استفاده از قابلیت Generate Script در MSSQL Server میتوان از کلیه جداول همراه با دادههای کنونی آنها، viewها، Store Procedureها Script (اسکریپت) تهیه نمود و این فایل اسکریپت را در نسخه پائینتر اجرا و از این طریق پایگاهداده را به نسخه پائینتر منتقل نمود. البته بهدلیل تفاوتهای نسخههای مختلف ممکن است با خطاهایی مواجه شوید که در این صورت طراح پایگاهداده میتواند بهصورت دستی تغییرات را با توجه به نسخه پائینتر اعمال و خطاها را برطرف نماید. اسکریپت گرفتن از پایگاهداده MSSQL در مبدا: بر روی نام پایگاهداده کلیک راست نموده و از منو Task گزینه Generate Script را انتخاب نمائید. در صفحه بعد میتوانید انتخاب کنید که اسکریپت از کل پایگاهداده یا از Objectهای خاص (مثلا […]
قابلیتهای Microsoft SQL Server 2014

Microsoft SQL Server 2014 قابلیتهای ویژهای جهت سرعت بخشیدن به کسب و کار شما دارد. در ادامه به معرفی آنها خواهیم پرداخت. Microsoft (مایکروسافت) با ارائه ویژگیهای جدید در OLTP، انبار دادهها و آنالیز پایگاه داده بدون نیاز به خرید سخت افزارهای خاص باعث افزایش سرعت اجرای Queryها میشود؛ علاوه بر آن قابلیتهای دیگری را در سایر زمینهها ارائه و یا بهبود بخشیدهاست. برخی از این قابلیتها بهشرح زیر میباشد: In-Memory OLTP: رویکردی جدید در MSSQL Server 2014، نوع خاصی از جداول که در حافظه ذخیره میشوند و در برخی حالات بهبود در عملکرد را تا ۴۰ برابر افزایش میدهد. با استفاده از این قابلیت میتوانید مشخص کنید جداولی که به حافظه زیادی نیاز دارند در حافظه مقیم شوند. Buffer Pool Extension: روشی برای استفاده نمودن از درایورهای SSD بهجای Memory است. فضای مربوط به Buffer Pool بجای اینکه در RAM ذخیره شود و حافظه RAM را اشغال کند در هاردهای SSD که از سرعت بالایی برخودارند ذخیره میشود. این ویژگی زمانیکه حجم دیتابیس به میزان RAM بیشتری نیاز دارد و امکان افزایش RAM نیز مقدور نمیباشد مفید است. Backup Encryption (رمز نگاری نسخه پشتیبان): در نسخههای Standard ،BI و Enterprise پشتیبانی میشود. MSSQL Server 2014 از چندین الگوریتم رمزنگاری، از جمله استاندارد رمزگذاری پیشرفته AES ۲۵۶ ،AES […]
لاگها در MySQL server

MySQL server دارای چندین لاگ میباشد که با استفاده از آنها مشخص میشود چه فعالیتهایی در حال وقوع است؛ لاگهای دیتابیس ابزارهای مفیدی برای آنالیزنمودن کارائی و یا مشکلات احتمالی دیتابیس میباشند و در واقعیت در بسیاری مواقع با بررسی لاگ فایلها میتوان راهحلهای مناسب جهت رفع مشکلات ارائه نمود. در جدول زیر لیست لاگهای MySQL و اطلاعاتی که با فعال شدن هر لاگ در آن ذخیره میشود نمایش داده شده است: نوع لاگ اطلاعاتی که در لاگ ذخیره می شود Error Log مواجه شدن با مشکلات در زمان start یا دراجرا بودن یا stop شدن mysql General query Log برقرارشدن صحیح اتصالات و دستوارت کلاینت ها Binary Log رویدادهایی که تغییرات دیتابیس را تشریح می کند مانند عملیات ایجاد جدول یا تغییرات روی داده های جداول (همچنین برای replication استفاده می شود) Relay Log تغییرات داده که از replication master server دریافت می شود Slow query Log اطلاعات query هایی که زمان اجرایی بیش از یک مدت زمان تعیین شده دارند DDL Log (metadata Log) سوابق عملیات metadata تولید شده توسط دستورات تعریف داده مانندDROP و Alter و create. ، این اطلاعات در فایل ddl_log.log بصورت باینری ذخیره می شوند در ادامه به تشریح سه نوع لاگ پرکاربرد MySQL […]
Proliant Gen8،نسل هشتم سرورهای HP

Proliant Gen8 نتیجه ۳۰۰ میلیون دلار هزینه و ۲ سال برنامه ریزی کمپانی HP میباشد که با نام Project Voyager مطرح شدهاست. این پروژه از مجموع بیش از ۹۰۰ اختراع به ثبت رسیده انتخاب، و از معماری سیستم جدیدی که به HP ProActive Insight architecture معروف است، حاصل شده است. هدف اصلی طراحی نسل هشتم سرورهای ProLiant، مدیریت آسان، افزایش قابل ملاحظهی سرعت IO و میزان پهنای باند میباشد. سرورهای سری Gen8 بسیار هوشمند هستند و تقریبا میتوانند خودشان را مدیریت کنند. سرورهای Proliant در ۴ دسته زیر ارائه شدهاند: server blades (BL series) rack-optimized servers (DL series) tower servers (ML series) hyperscale servers (SL series) در تصویر زیر مدلهایی که در نسل هشتم، جایگزین نسل قبلی شدهاند نمایش داده شدهاست. HP در ساخت سرورهای سری Gen8، بر مقوله کارایی بالا و چابکی تمرکز نموده؛ در ادامه برخی از خصوصیات این سری ذکر شدهاست: عملکرد: ۴ برابر کارایی بیشتر در ماشینهای مجازی، و ۳۸% سریعتر نسبت به مدل های قبل. سرعت وچابکی: ۹ برابر سریعتر در پیکربندی، و ۳ برابر سریعتر در توسعه. بهینه سازی انرژی به صورت خودکار: این قابلیت به صورت هوشمندانه، استفاده از فضا، قدرت و خنک کنندگی قطعات سرور را به حداکثر میرساند. افزایش حجم کار […]
تفاوتهای نسخههای ۲۰۰۸ و ۲۰۱۲ پایگاهداده MSSQL Server

Microsoft (مایکروسافت) نسخه جدید پایگاهداده MSSQL خود را تحت عنوان MS SQL Server ۲۰۱۲، همراه با قابلیتهای ویژهای نسبت به نسخه قبل آن ارائه کردهاست. برخی از این ویژگیها بشرح زیر میباشد: ۱- پشتیبانی از Windows Server Core: این نسخه قابل نصب بر روی Windows Server Core میباشد. بدین معنا که شما میتوانید این نسخه را بدون رابط گرافیکی نصب، و به کمک command prompt و powershell با آن ارتباط برقرار نمایید. ۲- اضافه شدن ویژگی AlwaysOn: AlwaysOn به شما امکان تهیه ۴ نسخه Read-only (فقط خواندنی) از بانک اطلاعاتی اصلی را میدهد، با استفاده از این ویژگی امکان ترکیب چندین پایگاهداده بصورت همزمان و غیر همزمان فراهم میشود. AO تکمیل کننده ویژگی Database Mirroring در نسخههای قبل میباشد. ۳- Columnstore Indexes: در ان نسخه نوع خاصی از Index (شاخص) فقط خواندنی با استفاده از Data Warehouse طراحی شدهاست. که باعث کاهش استفاده از RAM و I/O در Query (جستجو)های بزرگ شده و سرعت اجرای Query را بمراتب افزایش داده است. ۴- User-Defined Server Roles: امکان تعریف Role در نسخههای قبل وجود داشت، اما نه به گستردگی نسخه ۲۰۱۲. به عنوان مثال، چنانچه درنظر داشتید دسترسی read /write تمامی پایگاههایداده را به اعضای شرکت خود بدهید، باید برای هر پایگاهداده یک Role مجزا تعریف مینمودید، در نسخه جدید امکان تعریف یک […]
آموزش نصب و استفاده از اسکریپت MySQL Tuner

MySQL Tuner اسکریپتی است که توسط زبان Perl نوشته شده و برای پیکربندی و بهینهسازی سرویس MySQL استفاده میگردد. روش کار آن به این صورت است که بر اساس اطلاعات دریافتی از سرور، مقدار برخی از متغییرهای فایل my.cnf مانند max_allowed_packet، max_connections، max_user_connections، interactive_timeout، wait_timeout, connect_timeout، thread_cache_size و … را پیشنهاد میدهد و این امر باعث افزایش کارایی و ثبات MySQL میشود. این اسکریپت بر روی کلیهی سرورهای لینوکسی که از Perl پشتیبانی میکنند قابل استفاده میباشد. روش استفاده از MySQL Tuner: ۱- ابتدا با کاربر root به سرور SSH نمایید. ۲- برای دریافت آخرین نسخهی ارایه شدهی آن از دستور زیر استفاده نمایید: wget https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl ۳- جهت نصب بسته دریافتی از دستور زیر استفاده نمایید: perl mysqltuner.pl ۴- پس از اجرای دستور فوق، خطوط زیر را در ترمینال مشاهده خواهید کرد. >> MySQLTuner 1.2.0 – Major Hayden <major@mhtx.net> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with ‘–help’ for additional options and output filtering Please enter your MySQL administrative login: Please enter your MySQL administrative password: ۵- با توجه به نوع کنترلپنل خود یکی از مراحل زیر را انجام دهید: ۵-۱- چنانچه از کنترل پنل DirectAdmin استفاده مینمایید با استفاده از دستور زیر اطلاعات کاربری، کاربر اصلی MySQL را وارد نمایید: cat /usr/local/directadmin/conf/mysql.conf ۵-۲- چنانچه از کنترل پنل […]
افزایش سرعت پایگاهداده با حذف خصوصیت atime
در نوشتههای قبل افزایش سرعت با ممکشد را شرح دادیم. در این نوشته با یکی دیگر از راههای افزایش سرعت پایگاهداده در لینوکس آشنا میشویم. بعضی از برنامهها و سرویسها بصورت متناوب و به کرات فایلها و دایرکتوریها را میخوانند (مانند سرویس MYSQL و سایر برنامههای مدیریت پایگاه داده). با توجه به اینکه خواندن و نوشتن روی هارد زمانبرترین عمل در سرور است، خواندن، بازنویسی و ویرایش فایلها در برنامههایی مانند پایگاه داده سرعت دسترسی به سایت یا برنامه را به شکل قابل توجهی کاهش خواهد داد. فایلها و دایرکتوریها در فایل سیستم ext2 دارای خصوصیتی هستند که تاریخ خواندن فایل را نگه میدارد، و هر زمان تغییری در فایل یا دایرکتوری ایجاد شود این تاریخ به زمان جاری تغییر میکند، به این ویژگی atime میگویند. گرچه پروسه بهروزرسانی تاریخ خواندن فایل بسیار کوتاه و در کمتر از هزارم ثانیه است اما چنانچه تعداد دفعات دسترسی به فایلها بسیار بالا باشد (مانند پایگاههای داده) مجموع زمان اجرای این پروسههای کوچک باعث اتلاف منابع سختافزاری (RAM و CPU) افزایش بارِهارد و کاهش چشمگیر سرعت سایت و برنامهها در سرور میشود. راهحل: جهت رفع این مشکل باید قابلیت ثبت تاریخ خواندن فایل و دایرکتوری را غیر فعال کنیم. برای غیر فعال کردن […]
MongoDB چیست؟

mongoDB (مونگودیبی) یک Document-oriented database (پایگاه داده سند-گرا) است. و در گروه پایگاههای داده NOSQL قرار دارد. در این نوع پایگاه داده جدول و رکورد وجود ندارد و از collection (مجموعه) و سند استفاده میشود. میتوان گفت مجموعه شبیه به جدول و سند شبیه به رکورد در پایگاه داده رابطهای است. در این پایگاه داده، دادهها ساختار ثابت ندارند و هر دو سند (شبیه رکورد در پایگاه رابطهای) میتواند ساختار کاملا متفاوت داشته باشد، به این نوع ساختار BSON میگویند. به عنوان مثال ممکن است دو سند از یک موجودیت در این پایگاهداده به اشکال زیر موجود باشد: سند ۱: id_ – name – age سند ۲: id_ – family BSON چیست؟ مونگودیبی دادهها را به شکل json ذخیره میکند. به این ساختار در مونگودیبی BSON میگویند. ساختار BSON به شکل زیر است. { “_id”: ObjectId(“b7d284dad1058f5698gorjhdc”), “Name”: “mahdi”, “age”: “30”, “Date of Birth”: “21/05/79”, “address”: { “city”: “mashhad”, “PostalCode”: “9139555789” }, “phoneNumber”:[ { “type” : “Home”, “number”: “58795555” }, { “type” : “work”, “number”: “05117673600” } ] } از مزیتهای پایگاه داده مونگودیبی نسبت سایر پایگاههای داده رابطهای (مانند MySQL) امکان پردازش و جستجو در حجم بسیار بالاتری از دادهها در لحظه و همچنین امکان دخیره حجم بالاتری از دادهها […]