خانه / بایگانی برچسب: کوئری

بایگانی برچسب: کوئری

پایگاه های داده SQL و NoSQL و تفاوت آنها — به زبان ساده

از زمان‌های بسیار دور یکی از مهم‌ترین کارکردهای رایانه‌ها حافظه بوده است. با این که مباحث فنی و روش‌های پیاده‌سازی زیرساختی حافظه تفاوت زیادی با هم دارند؛ اما اغلب رایانه‌ها به سخت‌افزار ضروری برای پردازش اطلاعات و حفظ آن‌ها برای استفاده در موارد بعدی مجهز هستند. در دنیای امروز، چه سرور باشد و چه رایانه شخصی یا دستگاه‌های همراه، دیگر نمی‌توان هیچ اپلیکیشنی را بدون بهره‌گیری از این توانایی رایانه‌ها تصور کرد. از بازی‌های ساده تا ابزارهای مرتبط با کسب و کار که شامل وب‌سایت‌ها نیز می‌شود، انواع خاصی از داده‌ها در هر عملیاتی پردازش، ثبت و بازیابی می‌شوند. «سیستم‌های مدیریت پایگاه داده» (DBMS) نرم‌افزارهایی در سطوح بالاتر هستند که با «رابط‌های برنامه‌نویسی اپلیکیشن» (API) کار می‌کنند و مسئولیت این دسته از عملیات را بر عهده دارند. اکنون دهه‌ها است که برای کمک به حل کردن انواع مختلفی از مسائل، DBMS های مختلفی توسعه یافته‌اند (برای نمونه پایگاه‌های داده رابطه‌ای، NoSQL و غیره) و اپلیکیشن‌هایی برای پیاده‌سازی آن‌ها نیز طراحی شده‌اند که شامل MySQL، PostgreSQL، MongoDB، Redis و غیره هستند. در ..

توضیحات بیشتر »

روال ها و کرسرها (Procedures and Cursors) در SQL — راهنمای مقدماتی

در این راهنما با روش نوشتن روال‌ها و کرسر ها برای یک RDBMS آشنا می‌شویم. SQL یک مهارت ضروری برای مهندسان نرم‌افزار امروزی محسوب می‌شود. چون اغلب نرم‌افزارها به نوعی با داده‌ها سر و کار دارند و به طور کامل با یک RDBMS «سیستم مدیریت پایگاه داده رابطه‌ای» (Relational Database Management System) ادغام شده‌اند. چه یک اپلیکیشن وب باشد، چه API یا اپلیکیشن درون‌سازمانی، در هر صورت RDBMS همه جا حضور دارد و SQL زبانی برای کوئری زدن به یک RDBMS محسوب می‌شود. شما به عنوان یک دانشمند داده می‌بایست با SQL و تکنیک‌های مربوط به آن آشنا باشید. برای این که بتوانید به یک RDBMS کوئری بزنید و پاسخ‌هایی را برای سؤال‌های خاصی در مورد داده‌های مورد نظر دریافت کنید، SQL کمترین ابزار مورد نیاز است. در این راهنما با روش نوشتن روال‌ها و کرسرها آشنا خواهید شد که یکی از جنبه‌های مهم SQL محسوب می‌شود. آیا تا کنون خواسته‌اید RDBMS شما به طور خودکار اقدام‌های خاصی را در هنگام رویداد اتفاق معین اجرا کند؟ برای نمونه فرض کنید یک رکورد جدید برای کارمندی در یک جدول به نام Employees ایجاد کرده‌اید و می‌خواهید این رکورد در..

توضیحات بیشتر »

اکسپورت پایگاه داده در MySQL — به زبان ساده

ساده‌ترین روش برای اکسپورت کردن داده‌های جدول به صورت فایل متنی استفاده از گزاره SELECT…INTO OUTFILE است که نتایج یک کوئری را در یک فایل روی میزبان سرور اکسپورت می‌کند. اکسپورت کردن داده‌ها با گزاره SELECT…INTO OUTFILE ساختار این گزاره ترکیبی از یک دستور SELECT معمولی با INTO OUTFILE filename در انتهایش است. قالب خروجی پیش‌فرض همان است که برای دستور LOAD DATA استفاده می‌شود. بنابراین گزاره زیر جدول tutorials_tbl را در فایل /tmp/tutorials.txt به صورت یک فایل جدا شده با tab و خاتمه یافته با کاراکتر newline اکسپورت می‌کند. mysql> SELECT * FROM tutorials_tbl -> INTO OUTFILE '/tmp/tutorials.txt'; می‌توان قالب خروجی را با استفاده از گزینه‌های مختلف برای نمایش چگونگی نشانه‌گذاری و جداسازی ستون‌ها و رکوردها تغییر داد. برای اکسپورت کردن جدول tutorial_tbl در قالب CSV با خط‌های خاتمه یافته با CRLF، می‌توان از دستور زیر استفاده کرد: mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt' -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED ..

توضیحات بیشتر »

MySQL و تزریق SQL — راهنمای جامع

اگر شما ورودی کاربر را از طریق یک صفحه وب دریافت کرده و آن را در پایگاه داده MySQL درج کنید، این احتمال وجود دارد که در معرض مشکلات امنیتی گسترده‌ای به صورت تزریق SQL یا (SQL Injection) قرار بگیرید. در این مطلب از سلسله مقالات راهنمای MySQL به شما کمک می‌کنیم تا از وقوع چنین حالتی جلوگیری کرده و اسکریپت‌ها و گزاره‌های MySQL را امن‌تر بکنید. تزریق MySQL تزریق MySQL به طور معمول زمانی رخ می‌دهد که از کاربر چیزی مانند نام پرسیده می‌شود و او به جای نام خود یک عبارت MySQL ارائه کند که به صورت ناشناس روی پایگاه داده وب‌سایت اجرا می‌شود. هرگز نباید به داده‌های ارائه شده از سوی کاربر اعتماد کرد و تنها پس از اعتبارسنجی باید مورد پردازش قرار گیرند. این کار از طریق تطبیق الگو صورت می‌گیرد. در مثال زیر نام کاربری محدود به کاراکترهای حرفی و ارقام به علاوه زیرخط است و طولی بین 8 و 20 کاراکتر دارد. در صورت نیاز می‌توان این قواعد را اصلاح کرد: if (preg_match("/^w{8,20}$/", $_GET['username'], $matches)) { $result = mysql_query("SELECT * FROM users WHERE username = $matches[0]"); } else { e..

توضیحات بیشتر »

افزودن فیلترهای Logstash برای بهبود گزارش گیری متمرکز — به زبان ساده

Logstash ابزاری قدرتمند برای متمرکز سازی و تحلیل log-ها به حساب می‌آید که کمک می‌کند دیدی کلی از محیط خود داشته باشیم و مشکلات سرورها را به سرعت تشخیص دهیم. یک روش برای افزایش کارآیی مجموعه ELK (اختصار Elasticsearch، Logstas و Kibana)، گردآوری log-های مهم اپلیکیشن و سازماندهی داده‌های log با به‌کارگیری فیلترها است. بدین ترتیب می‌توان داده‌ها را به سهولت مورد تحلیل قرار داده و روی آن‌ها کوئری اجرا کرد. ما فیلترهای خود را بر مبنای الگوهای Grok می‌سازیم که داده‌های موجود در log-ها را به صورت تکه‌های مفیدی از اطلاعات درمی‌آورد. اگر می‌خواهید با مراحل نصب مجموعه ELK بیشتر آشنا شوید، می‌توانید از راهنمای «نصب مجموعه ELK روی سرور اوبونتو» استفاده کنید. در این مقاله به طور عمده روی شیوه استفاده از فیلترها روی log-های اپلیکیشن‌های رایج مختلف تمرکز کرده‌ایم. پیش‌نیازها برای مطالعه این راهنما باید یک سرور Logstash عملیاتی داشته باشید که داده‌های log را از یک ارسال‌کننده مانند Filebeat دریافت کند. اگر Logstash را برای دریافت log-ها راه‌اندازی نکرده‌اید، می‌توانید از راهنمایی که در بخش فوق معرفی ..

توضیحات بیشتر »

ایجاد و یکپارچه سازی چت بات اندرویدی با Dialogflow – راهنمای مقدماتی

Dialogflow از سرویس‌های گوگل است که قبلاً به نام API.ai شناخته می‌شد و پلتفرمی عالی برای توسعه چت‌بات‌ها برای پلتفرم‌های مختلف است. راهنماها و مستندات زیادی برای افرادی که به تازگی شروع به یادگیری و استفاده از این پلتفرم برای ساخت چت‌بات نموده‌اند وجود دارند. با این وجود، پشتیبانی از اندروید و iOS به خوبی مستندسازی نشده است. تا پیش از این که Dialogflow به نام API.ai نامیده می‌شد، کتابخانه کلاینت اندروید و iOS برای ادغام چت‌بات در اپلیکیشن‌های موبایل ارائه شده بود؛ اما پس از ادغام آن در گوگل، کتابخانه موجود دیگر به‌روزرسانی نشد و شاهد اضافه شدن Dialogflow به پلتفرم کلاود گوگل بودیم که API کلاینت جدیدی مبتنی بر جاوا در حال توسعه است. در این مقاله، شیوه یکپارچه‌سازی چت‌بات توسعه‌یافته در Dialogflow با استفاده از کتابخانه API.ai قدیمی و API کلاینت جاوای جدید را توضیح می‌دهیم. بنابراین برای نمایش این موضوع یک چت‌بات ساده ایجاد می‌کنیم که اطلاعاتی در مورد دوره‌های مختلف فستیوال توسعه‌دهندگان دهلی‌نو که از سوی GDG برگزار می‌شود ارائه می‌کند. ابتدا باید اسکریپتی بنویسیم که کاربر بتواند با چ..

توضیحات بیشتر »

استفاده از دنباله ها در MySQL — راهنمای جامع

در MySQL دنباله به مجموعه‌ای از اعداد صحیح 1، 2، 3، … گفته می‌شود که به ترتیب برای درخواست مشخصی ایجاد شده‌اند. دنباله‌ها به طور مکرر در پایگاه داده مورد استفاده قرار می‌گیرند، زیرا اپلیکیشن‌های زیادی نیازمند این هستند که هر ردیف در یک جدول شامل یک مقدار یکتا باشد و دنباله‌ها روشی آسان برای تولید چنین مقادیری ارائه می‌کنند. در این بخش از سلسله مطالب راهنمای MySQL به معرفی شیوه استفاده از دنباله‌ها در MySQL می‌پردازیم. استفاده از ستون AUTO_INCREMENT در MySQL ساده‌ترین روش برای استفاده از دنباله‌ها، تعریف یک ستون به صورت AUTO_INCREMENT است. بدین ترتیب MySQL، خود وظیفه افزایش شماره ردیف‌ها با درج رکوردهای جدید را بر عهده می‌گیرد. مثال در مثال زیر یک جدول ایجاد می‌شود و پس از آن چند ردیف در جدول درج می‌شود که برای آن‌ها لازم نیست ID رکورد معین شود، چون ID آن‌ها از سوی MySQL به صورت خودکار افزایش می‌یابند. mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -..

توضیحات بیشتر »

اطلاعات پایگاه داده در MySQL — راهنمای جامع

سه نوع اطلاعات پایگاه داده MySQL وجود دارند که می‌توان به دست آورد: اطلاعاتی در مورد نتیجه کوئری‌ها – این اطلاعات شامل چند رکورد هستند که تحت تأثیر عبارت‌های SELECT، UPDATE یا DELETE قرار گرفته‌اند. اطلاعاتی در مورد جدول‌ها و پایگاه‌های داده – این اطلاعات شامل مواردی در مورد ساختار پایگاه داده و جدول‌ها می‌شود. اطلاعاتی در مورد سرور MySQL – این مورد نیز شامل وضعیت سرورهای پایگاه داده، شماره نسخه و مواردی از این دست است. دریافت همه این اطلاعات در خط اعلان MySQL کار آسانی است؛ اما هنگام استفاده از PERL یا PHP باید API های مختلفی را به طور صریح فراخوانی کنیم تا همه این اطلاعات را به دست آوریم. به دست آوردن تعداد ردیف‌هایی که از یک کوئری تأثیر پذیرفته‌اند در این بخش روش کسب این اطلاعات را معرفی می‌کنیم. مثال PERL در اسکریپت‌های DBI، تعداد ردیف‌های تأثیر پذیرفته به وسیله ()do یا از طریق دستور ()execute بازگشت می‌یابد و این مسئله به چگونگی اجرای کوئری وابسته است. # Method 1 # execute $query using do( ) my $count = $dbh->do ($query); # report 0 rows if an error occurred printf "%d rows wer..

توضیحات بیشتر »

اندیس ها در MySQL — راهنمای جامع

منظور از اندیس در پایگاه داده ساختاری است که باعث بهبود سرعت عملیات‌ها در یک جدول می‌شود. اندیس‌ها را می‌توان با استفاده از یک یا چند ستون ایجاد کرد و مبنایی برای جستجوی تصادفی سریع و مرتب‌سازی بهینه دسترسی به رکوردها تشکیل داد. هنگام ایجاد اندیس باید این نکته را در نظر داشت که کدام ستون‌ها برای ایجاد کوئری‌های SQL بیشتر مورد استفاده قرار می‌گیرند و یک یا چند اندیس روی این ستون‌ها تشکیل داد. از لحاظ عملی اندیس‌ها نیز نوعی جدول محسوب می‌شوند که کلید ابتدایی (primary key) یا فیلد اندیس را در خود جای داده‌اند و به هر یک از رکوردهای داخل جدول واقعی اشاره می‌کنند. کاربران نمی‌توانند اندیس‌ها را ببینند. اندیس‌ها از سوی موتور جستجوی پایگاه داده صرفاً برای افزایش سرعت اجرای کوئری‌ها و یافتن بسیار سریع‌تر رکوردها استفاده می‌شوند. عبارت‌های INSERT و UPDATE روی جدول‌هایی که حاوی اندیس هستند، زمان بیشتری طول می‌کشند؛ در حالی که عبارت SELECT روی این جدول‌ها سریع‌تر اجرا می‌شود. دلیل این مسئله آن است که هنگام درج یا به‌روزرسانی فیلدها، پایگاه داده باید مقادیر اندیس را نیز درج یا به‌روزرسانی کند...

توضیحات بیشتر »

ساخت ویجت برای وردپرس — به زبان ساده

بسیاری وبلاگ‌نویس ها کمابیش به دنبال ویجت‌های وردپرسی هستند که موارد مورد نظرشان را دقیقاً داشته باشد؛ اما با کمی تجربه درخواهید یافت که شاید نوشتن یک ویجت سفارشی، راحت‌تر از جستجو کردن آن باشد. در این نوشته، روش دقیق نوشتن یک ویجت را با هم مرور می‌کنیم. ویجتی که می‌خواهیم بنویسیم برای انتخاب یک نوشته تصادفی از میان نوشته‌های بلاگ وردپرس شما استفاده می‌شود. این ویجت تصویر شاخص مطلب را دریافت می‌کند و آن را در ستون جانبی نمایش می‌دهد. در واقع وظیفه این ویجت نمایش مطالب تصادفی در ستون جانبی وب‌سایت و تشویق کاربران به مطالعه مطالب بیشتر مطالب سایت است. مفاهیم پایه: کوئری‌ها و حلقه‌های وردپرس هر صفحه روی بلاگ شامل یک سری کوئری‌ها به پایگاه داده نوشته‌ها (posts) است. بسته به این که از کدام صفحه بازدید می‌کنید، این کوئری متفاوت خواهد بود. زمانی که از آرشیو دسته مطالب بازدید می‌کنید این کوئری چیزی به صورت زیر خواهد بود: «۲۰ مطلب آخر از دسته عکس‌های خانوادگی را به ترتیب تاریخ انتشار انتخاب کن». هر کوئری یک مجموعه نتایج بازمی‌گرداند و بسته به این که از چه قالب صفحه‌ای استفاده می‌کنید، هر نتیج..

توضیحات بیشتر »