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

پایگاه داده های برگزیده در پایتون

python databases

منبع مقاله : https://www.fullstackpython.com/databases.html

پایگاه داده مفهوم پیچیده تری از یک سیستم فایل در سیستم عامل است که باعث می شود برنامه نویسان برای ساخت برنامه های کاربردی برای ایجاد، خواندن، به روز رسانی و حذف داده های خود امکانات بسیار بیشتر و ساده تری در اختیار داشته باشند.

در حقیقت این یکی از ابتدایی ترین تعاریف ممکن در Database است.

چرا بانک های اطلاعاتی مهم و ضروری هستند؟

همانطور که می دانید، برنامه های کاربردی سطح بالا داده ها را ذخیره کرده و به روشی که برای کاربران قابل فهم و مفید باشه، این اطلاعات را به کاربران ارائه می دهند. به عنوان مثال، Google اطلاعات مربوط به جاده ها و راه ها را ذخیره می کند و در نتیجه می توانیم با استفاده از برنامه Maps برای رانندگی از یک مکان به مکان دیگر از این اطلاعات بهره بگیریم. انتخاب مسیر های رانندگی نیز امکان پذیر است زیرا داده ها به صورت ساختار یافته ذخیره می شوند.

پایگاه داده ها امکان ذخیره سازی ساختاری قابل اعتماد و سریع داده ها را ایجاد می کنند. همچنین یک چارچوب یا Framework در اختیار ما می گذارند تا از طریق آن ها بتوانیم داده های خود را به سادگی ذخیره و بازیابی کنیم.

انواع بانک های اطلاعاتی تولید شده اند که تعدادی از آنها عبارتند از، PostgreSQL، MySQL و SQLite.

تنوع دیگری از بانک های اطلاعاتی وجود دارند که به NoSql معروف هستند که در آینده به معرفی آنها خواهیم پرداخت.

پایگاه داده های رابطه ای — Relational Databases

پایگاه داده ای که اغلب در توسعه وب سایت ها در Python مورد استفاده قرار می گیرد، مجموعه ای از جداول رابطه ای است که به نام Relational Database می شناسیم. در رابطه با مفهوم NoSql Databases شاید در مقاله دیگری صحبت کنیم.
پایگاه داده های رابطه ای در حقیقت داده های ما را در قالب جداولی ذخیره می کنند. ارتباطات بین جداول به عنوان کلید خارجی تعریف می شوند. یک کلید خارجی یک مرجع منحصر به فرد از یک ردیف در یک جدول که با ردیف دیگری در یک جدول یا جداول دیکر در ارتباط است، می باشد.

پیاده سازی روش های ذخیره سازی اطلاعات در بانک های اطلاعاتی بسیار پیچیده است. به طور مثال، SQLite که پایگاه داده ای است که در پایتون قرارداد، برای کلیه داده ها در که در قالب یک Database هستند، از یک فایل استفاده می کند. ولی پایگاه های داده دیگری مانند PostgreSQL، MySQL، Oracle و Microsoft SQL Server، طرح های بسیار پیچیده ای را ارائه می دهند در حالی که ویژگی های پیشرفته ای را نیز ارائه می دهند که برای ذخیره سازی داده های برنامه های وب مفید هستند. تعدادی از این ویژگی ها عبارتند از:

  1. Data Replication میان بانک اطلاعاتی اصلی یا Master و یک یا چند بانک اطلاعاتی ثانویه یا Slave که فقط خواندنی هستند.
  2. نوع داده های پیشرفته که انکان ذخیره سازی داده های پیچیده مانند JSON را فراهم می کنند.
  3. sharding، که اجازه رشد افقی از پایگاه های داده چندگانه را می دهد که هر کدام به عنوان یک Database با قابلیت read-write بوده و هزینه زمان تاخیر در انطباق داده ها را کاهش می دهد.
  4. نظارت یا monitoring، شامل آمار و دیگر اطلاعات زمان اجرا مفید برای جداول و schema ها.

به طور معمول، در برنامه های کاربردی تحت وب با نمونه ای از پایگاه داده مانند PostgreSQL، با یک طرح ساده شروع می شود. با گذشت زمان طرح پایگاه داده به یک ساختار پیچیده تر با استفاده از مهاجرت های اساسی تبدیل می شود و ویژگی های پیشرفته مانند Replication، Sharding و Monitoring مفید تر و کاربردی تر می شود زیرا استفاده از پایگاه داده با توجه به نیازهای کاربران برنامه افزایش می یابد.

پایگاه داده های رایج برای برنامه های تحت وب در زبان پایتون

دو بانک اطلاعاتی متن باز PostgreSQL و MySQL متن باز هستند برای ذخیره سازی اطلاعات نرم افزارهای تحت وب با زبان پایتون بسیار پر کاربرد هستند.

SQLite یک پایگاه داده است که کل اطلاعات را در یک فایل در دیسک ذخیره می کند. SQLite درون پایتون ایجاد شده است، اما تنها یک اتصال در آن واحد امکان دسترسی به اطلاعات را دارد. بنابراین اکیدا توصیه می شود که برای تولید برنامه تحت وب از SQLite استفاده نکنید.

PostgreSQL

PostgreSQL یک پایگاه داده های رابطه ای است که توصیه شده برای کار با برنامه های تحت وب پایتون از آن استفاده شود. ویژگی های PostgreSQL، توسعه فعال و پایداری این پایگاه داده به استفاده هرچه بیشتر از آن در میلیون ها برنامه کاربردی تحت وب کمک می کند.

در مورد استفاده از PostgreSQL با پایتون اینجــــــــــــــا را کلیک کنید.

MySQL

MySQL نیز یکی از بانک های اطلاعاتی ارزشمندی است که قابل استفاده برای توسعه برنامه های پایتون است. یادگیری MySQL نسبت به PostgreSQL کمی ساده تر است که البته مزیت چندان بزرگی محسوب نمی شود.

در مورد استفاده از MySQLبا پایتون اینجــــــــــــــا را کلیک کنید.

SQLite

این بانک اطلاعاتی، یک پایگاه ساده است که کلیه داده ها را بر روی یک فایل ذخیره می کند. این بانک اطلاعاتی در درون پایتون به صورت پیش فرض وجود دارد و ارتباط با آن بسیار ساده و در حد ۲ تا ۳ خط کد نویسی است.

نکته قابل توجه در رابطه با این پایگاه داده آن است که هر کسی که به فایل دسترسی داشته باشد می تواند از اطلاعات شما استفاده کند و نتیجتا برای حفظ اطلاعات خود باید از روش ها کد گذاری و … استفاده کنید. همچنین به دلیل ساختار فایلی بودن این بانک اطلاعاتی برای سیستم هایی که در هر زمان چند کاربر بتوانند به صورت همزمان از آن استفاده کنند مناسب نیست.

برای مطالعه بیشتر و استفاده از این پایگاه داده می توانید به آدرس وب سایت آن مراجعه نمائید.

اتصال به بانک های اطلاعاتی با استفاده از پایتون

برای استفاده از بانک های اطلاعاتی رابطه ای در پایتون می بایست از کتابخانه ها و library ها استفاده کنید. محبوب ترین و پر استفاده ترین کتابخانه ها در این زمینه عبارتند از:

سرویس های third-party پایگاه داده ها

شرکت های متعددی سرورهای پایگاه داده به عنوان یک سرویس میزبانی استفاده می کنند. پایگاه داده های میزبانی شده اغلب می توانند امکاناتی مانند پشتیبان گیری و بازیابی خودکار، تنظیمات امنیتی محکم و … را البته بسته به provider آن فراهم کنند. به تعدادی از این سرویس های میزبانی در زیر اشاره خواهیم کرد:

  • Amazon Relational Database Service (RDS): ارائه دهنده سرویس های از پیش تنظیم شده MySQL و  PostgreSQL است. با توجه به نیازمندی های مورد نیاز این تنظیمات قابل توسعه و یا کوچک سازی خواهد بود.
  • Google Cloud SQL: سرویسی که با استفاده از MySQL پیاده سازی شده و امکاناتی چون backed up, replicated, and auto-patched را به کاربر می دهد. Cloud SQL با موتور Google App ادغام شده است، اما می تواند بصورت مستقل نیز استفاده شود.
  • BitCan: هر دو سرویس MySQL و PostgreSQL را ارائه می دهد به همراه سرویس بکاپ.
  • ElephantSQL: یک شرکت ارائه کننده نرم افزاری به عنوان یک سرویس است که میزبان پایگاه داده PostgreSQL است و تنظیمات سرور، پشتیبان گیری و اتصالات داده را ارائه می دهد.

منابع SQL

شما ممکن است قصد داشته باشید از object-relational mapper(ORM) به عنوان روش اصلی در تعامل با یک پایگاه داده استفاده کنید، اما هنوز هم می بایست اصول SQL را برای ایجاد طرح و درک کد SQL ایجاد شده توسط ORM یاد بگیرید. منابع زیر می توانند به شما در افزایش سرعت در استفاده از SQL کمک کنند البته در صورتی که قبلا از آن استفاده نکرده باشید.

  • Select Star SQL: که در حقیقت یک کتاب تعاملی (interactive book) برای یادگیری SQL است. به شدت توصیه می شود حتی اگر در پروژه خود از ORM ها استفاده می کنید، به دلیل بالا بردن performance و کارایی این زبان را آموزش ببینید. این سایت راهنمای خوبی برای مبتدیان برای توضیح کلمات کلیدی مورد استفاده در SQL مانند SELECT، WHERE، FROM، UPDATE و DELETE می باشد.
  • SQL Tutorial: پایه های SQL را آموزش می دهد که می تواند در تمام پیاده سازی های پایگاه های مهم ارتباطی مورد استفاده قرار دهید.
  • Life of a SQL query: توضیح می دهد که در زمان اجرای یک دستور SQL، چه زمانی به چه صورت و چه مفهوم فنی در پایگاه داده اتفاق می افتد. نویسنده از PostgreSQL به عنوان مثال پایگاه داده و نحو استفاده از SQL در سراسر پست استفاده می کند.
  • A Probably Incomplete: راهنمای جامع برای بسیاری از روش های مختلف برای جدا کردن جداول در SQL، به کوچکترین بخش هایی از نوشتن کدهای SQL است که یک یا چند جدول را با استفاده از دستور JOIN به هم متصل می کند.
  • Writing better SQL: یک راهنمای کوچک کد نویسی است که Query های  شما را برای خواندن آسان تر کند.
  • SQL Intermediate: که یک آموزش بالاتر از سطح ابتدایی و مبانی است که
    از داده های باز اداره حفاظت از مصرف کننده ایالات متحده و همچنین از PostgreSQL  به عنوان مثال استفاده می کند.

منابع Database عمومی

برای مطالعه منابع عمومی می توانید از فهرست زیر استفاده کنید:

  • How does a relational database work? is a detailed longform post on the sorting, searching, merging and other operations we often take for granted when using an established relational database such as PostgreSQL.
  • Databases 101 gives a great overview of the main relational database concepts that is relevant to even non-developers as an introduction.
  • Five Mistakes Beginners Make When Working With Databases explains why you should not store images in databases as well as why to be cautious with how you normalize your schema.
  • DB-Engines ranks the most popular database management systems.
  • DB Weekly is a weekly roundup of general database articles and resources.
  • Online migrations at scale is a great read on breaking down the complexity of a database schema migration for an operational database. The approach the author’s team used was a 4-step dual writing pattern to carefully evolved the way data for subscriptions were stored so they could move to a new, more efficient storage model.
  • A one size fits all database doesn’t fit anyone explains Amazon Web Services’ specific rationale for having so many types of relational and non-relational databases on its platform but the article is also a good overview of various database models and their use cases.
  • SQL is 43 years old – here’s 8 reasons we still use it today lists why SQL is commonly used by almost all developers even as the language approaches its fiftieth anniversary.
  • SQL keys in depth provides a great explanation for what primary keys are and how you should use them.
  • Exploring a data set in SQL is a good example of how SQL alone can be used for data analysis. This tutorial uses Spotify data to show how to extract what you are looking to learn from a data set.
  • Databases integration testing strategies covers a difficult topic that comes up on every real world project.
  • GitLab provided their postmortem of a database outage on January 31 as a way to be transparent to customers and help other development teams learn how they screwed up their database systems then found a way to recover.
  • Asynchronous Python and Databases is an in-depth article covering why many Python database drivers cannot be used without modification due to the differences in blocking versus asychronous event models. Definitely worth a read if you are using WebSockets via Tornado or gevent.
  • PostgreSQL vs. MS SQL Server is one perspective on the differences between the two database servers from a data analyst.

چک لیست یادگیری پایگاه داده ها

  1. نصب PostgreSQL بر روی سرور و یا سیستم خود. به طور مثال می توانید از کد pip install postgresql استفاده کنید.
  2. مطمئن باشید که در برنامه خود از کتابخانه psycopg2 استفاده کرده اید.
  3. تنظیمات برنامه خود برای اتصال به بانک اطلاعاتی PostgreSQL انجام دهید.
  4. ایجاد مدل در ORM خود، می توانید یا با ORM ساخته شده در Django یا SQLAlchemy و یا … کار کنید.
  5. پایگاه داده و یا جداول خود را به صورت دستی و یا از طریق مدل  ORM ایجاد کنید.
  6. در نهایت را خواندن و نوشتن شروع به استفاده از Database کنید.

در صورتی که می خواهید در رابطه با No-SQL ها اطلاعاتی کسب کنید اینجـــــــــــــــــا را کلیک کنید.

امیدوارم این مقاله شمارا در انتخاب یک پایگاه داده مناسب و همچنین معرفی منابعی برای مطالعه آن راهنمایی کند.

منتظر نظرهای شما هستیم.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *