در PowerShell به صورت پیشفرض، خروجی، PowerShell Host یا همان کنسول است. PowerShell از چندین استریم پشتیبانی میکند: Success Error Warning Verbose Debug Information برای هر کدام از استریمهای فوق یک آیدی اختصاص داده شدهاست که به ترتیب از 1 تا ۶ میباشد. همچنین برای هرکدام یک cmdlet مجزا وجود دارد: cmdlet Name Id Write-Output Success 1 Write-Error Error 2 ...
PowerShell برای نامگذاری Commandها، از ساختار verb-noun استفاده میکند. به عنوان مثال Get-Command, New-Service, Get-Help نمونههایی از این Commandها در PowerShell هستند. لازم به ذکر است که در PowerShell، منظور از cmdlet یا Command let، همان Commandهای native در PowerShell هستند؛ نه Commandهای عمومی مانند dir, cd, ipconfig و غیره. به عنوان مثال از Get-Help برای نمایش مستندات یک cmdlet میتوان استفاده کرد و دقیقاً مشابه man page در لینوکس است ...
PowerShell یک ابزار task automation است که همزمان یک command-line shell، زبان اسکریپتی و یک فریمورک configuration management نیز میباشد. برخلاف دیگر shellها که مبتنی بر رشته هستند، ورودی و خروجی آن اشیاء داتنتی است و از آنجائیکه مبتنی بر CLR میباشد، امکان نوشتن توابع، کلاسها و ماژولها را به ما میدهد. همچنین به صورت توکار امکان کار با فرمتهایی از قبیل CSV, XML, JSON را در اختیارمان قرار میدهد. بخاطر extensible بودن، تعداد زیادی ماژول و ...
MySQL قادر به ایندکس کردن ستونهای JSON نمیباشد. برای حل این مشکل میتوانیم از generated columnها استفاده کنیم. منظور، ایجاد ستونهایی است که مقدارشان به صورت محاسبه شده و براساس ستونهای دیگر میباشد؛ به عنوان مثال جدول کاربران زیر را در نظر بگیرید: CREATE TABLE `Users` (
id int NOT NULL AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
gender EN ...
در قسمت قبل توابعی را که برای تغییر دیتای JSON مورد استفاده قرار میگیرند، بررسی کردیم. در ادامه به بررسی روشهای تبدیل یک دیتای غیر JSON به خروجی JSON و بلعکس خواهیم پرداخت. کوئریهایی که تا اینجا نوشتهایم، بر روی یک فیلد از نوع JSON بودند؛ اما این امکان را نیز داریم که از توابع JSON بر روی فیلدهای غیر JSON نیز استفاده کنیم. به عنوان مثال جدول کاربران و بلاگپست را در نظر بگیرید که به این صورت تعریف شدهاند: CREATE TABLE U ...
توابع ایجاد محتوای JSON در قسمت قبل برای ذخیرهسازی محتوای JSON از string literal استفاده کردیم؛ یعنی در واقع همانند یک مقدار رشتهای، فیلد JSON را مقداردهی کردیم: INSERT INTO tableName VALUES (
'{ "name": "User1", "age": 41 }'
);
یک روش دیگر، استفاده از توابع JSON_OBJECT یا JSON_ARRAY میباشد: INSERT INTO tableName VALUES (
JSON_ARRAY(
JSON_OBJECT(
"id", 1,
"name", "User1",
"age", 31,
"skills ...
تا قبل از اضافه شدن دیتاتایپ JSON به صورت توکار در MySQL، دادههای JSON را تنها میتوانستیم با فرمت رشتهای، درون دیتابیس ذخیره کنیم: CREATE TABLE tableName (
jsonData CHAR(250) -- or VARCHAR, TEXT, BLOB
);
INSERT INTO tableName VALUES (
'{ "name": "User1", "age": 41}'
);
SELECT * FROM tableName;
{ "name": "User1", "age": 41}
اما مشکل اینجاست که هیچ نوع اعتبارسنجی بر روی این دیتا صورت نخواهد گرفت؛ هیچ روشی ب ...
در مطلب قبلی ، مدل EAV را معرفی کردیم و گفتیم که این نوع پیادهسازی در واقع یک SQL Smell است؛ زیرا کوئری نویسی را سخت میکند و همچنین به دلیل عدم امکان تعریف constraints، کنترلی بر روی صحت دیتاهای وارده شد نخواهیم داشت. در نهایت با برنامهای روبرو خواهیم شد که درک صحیحی از ماهیت دیتا ندارد. اما اگر در شرایطی مجبور به استفادهی از این مدل هستید، بهتر است از فرمت JSON برای ذخیرهسازی دیتای داینامیک استفاده کنید. بیشتر دیتابیسهای رابطهایی ...
یکی از چالشهای دیتابیسهای رابطهایی، ذخیرهسازی دادههایی با ساختار داینامیک است. در حالت عادی، یک جدول مجموعهایی از موجودیتها است. هر موجودیت نیز شامل یکسری ویژگیهای (Attributes) مشخص میباشد. اما شرایطی را در نظر بگیرید که تعداد این ویژگیها به صورت مشخص و ثابتی نباشد؛ یعنی برای هر موجودیت، ویژگیهای متفاوتی داشته باشیم. یک روش پیادهسازی اینچنین سناریوهایی، استفاده از مدلی با نام Entity Attribute Value است. در این روش ستونهای داین ...
در مطلب قبل نحوهی ایجاد روابط Polymorphic را بررسی کردیم و همچنین چندین راهحل جایگزین را نیز ارائه دادیم. همانطور که عنوان شد این نوع روابط اساساً از لحاظ طراحی دیتابیس اصولی نیستند و تا حد امکان نباید استفاده شوند. این نوع روابط بیشتر ORM friendly هستند و اکثر فریمورکهای غیرداتنتی به عنوان یک گزینهی توکار، امکان ایجاد این روابط را فراهم میکنند. به عنوان مثال در Laravel Eloquent ORM به صورت توکار از این قابلیت پشتیبانی میشود: ...