برنامه نویسی | Teachify
12.8K subscribers
956 photos
420 videos
231 files
637 links
برای موفق شدن 🌱 با این عبارت خداحافظی کن: "باشه فردا"🍃


Admin: @Yousef_Vafaei
Download Telegram
✔️ اصطلاح Database Sharding در پایتون: راهکاری برای مقیاس‌پذیری

دیتابیس Sharding یکی از تکنیک‌های مقیاس‌پذیری دیتابیس است که در آن داده‌ها به چند بخش کوچک‌تر (shard) تقسیم می‌شوند و هر بخش در یک دیتابیس یا سرور جداگانه ذخیره می‌شود. این کار باعث افزایش سرعت و کاهش فشار روی یک سرور واحد می‌شود.

در پایتون برای مدیریت Sharding می‌توان از فریمورک‌های مختلف مثل SQLAlchemy برای پایگاه‌های داده‌ی رابطه‌ای یا MongoDB برای پایگاه‌های داده‌ی NoSQL استفاده کرد.

مثال ساده Sharding در SQLAlchemy
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
import random

# تعریف دو دیتابیس شارد شده
shard_1 = create_engine("sqlite:///shard_1.db")
shard_2 = create_engine("sqlite:///shard_2.db")

metadata = MetaData()

users = Table(
"users", metadata,
Column("id", Integer, primary_key=True),
Column("name", String)
)

# ایجاد جدول در هر shard
metadata.create_all(shard_1)
metadata.create_all(shard_2)

# تابعی برای انتخاب shard بر اساس id
def get_shard(user_id):
return shard_1 if user_id % 2 == 0 else shard_2

# درج داده‌ها در shard مناسب
def insert_user(user_id, name):
shard = get_shard(user_id)
with shard.connect() as conn:
conn.execute(users.insert().values(id=user_id, name=name))

# جستجوی داده از shard مناسب
def get_user(user_id):
shard = get_shard(user_id)
with shard.connect() as conn:
result = conn.execute(users.select().where(users.c.id == user_id)).fetchone()
return result

# افزودن داده‌های نمونه
insert_user(1, "Ali")
insert_user(2, "Sara")

# دریافت داده
print(get_user(1)) # در shard_2 ذخیره شده
print(get_user(2)) # در shard_1 ذخیره شده


در این مثال، اگر id عدد زوج باشد، در shard_1 و اگر فرد باشد، در shard_2 ذخیره می‌شود. این یک راه ساده برای Sharding است، ولی روش‌های پیشرفته‌تری مثل Range-based و Consistent Hashing هم وجود دارند.

#Python #Database #Sharding #مقیاس_پذیری

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7