> Как хранить маппинг между длинным и коротким URL (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Международный аэропорт Шереметьево
Стек: Python
> Пример ответа
Для хранения маппинга между длинным и коротким URL в Python-бэкенде оптимально использовать реляционную базу данных (например, PostgreSQL) с таблицей вида:
SQLCREATE TABLE url_mapping (id SERIAL PRIMARY KEY,short_key VARCHAR(10) UNIQUE NOT NULL,long_url TEXT NOT NULL,created_at TIMESTAMP DEFAULT NOW());
Короткий URL генерируется как уникальный ключ (например, base62-кодирование от ID записи или случайная строка). В Python-коде:
PYTHONimport stringimport randomfrom sqlalchemy import create_engine, Column, String, Textfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerBase = declarative_base()class URLMapping(Base):__tablename__ = 'url_mapping'short_key = Column(String(10), primary_key=True)long_url = Column(Text, nullable=False)def generate_short_key(length=7):chars = string.ascii_letters + string.digitsreturn ''.join(random.choices(chars, k=length))# Пример использованияdef create_short_url(long_url):short_key = generate_short_key()# Проверка на коллизию (в реальности - цикл с повторной генерацией)mapping = URLMapping(short_key=short_key, long_url=long_url)session.add(mapping)session.commit()return f"https://short.domain/{short_key}"
Для повышения производительности добавьте индекс на short_key и кэш (например, Redis) для часто запрашиваемых URL. При редиректе - простой SELECT по ключу.
> Похожие задачи по Python
Как проверять корректность работы сервиса и обработку сообщений по разным приоритетам вовремя
Как реализовать функцию сокращения URL
Как справляться с коллизиями при генерации коротких ссылок
Как оценить необходимое дисковое пространство для хранения сокращенных ссылок с учетом нагрузки и времени жизни
> Похожие задачи по backend
Как проверять корректность работы сервиса и обработку сообщений по разным приоритетам вовремя
Как реализовать функцию сокращения URL
Как справляться с коллизиями при генерации коротких ссылок
Как оценить необходимое дисковое пространство для хранения сокращенных ссылок с учетом нагрузки и времени жизни
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью