Sobes.tech
Junior

What do you understand by database skills?

sobes.tech AI

Answer from AI

Understanding relational and non-relational databases (e.g., PostgreSQL, MySQL, MongoDB, Redis).

Ability to design data schemas, create and modify tables, indexes, views.

Writing efficient SQL queries for data retrieval, insertion, updating, and deletion.

Using object-relational mappers (ORM), such as SQLAlchemy or Django ORM, for interacting with databases from Python code.

Experience with database migrations to manage schema changes over time (e.g., Alembic, Django Migrations).

Understanding the principles of ACID (Atomicity, Consistency, Isolation, Durability) for relational databases.

Knowledge of query and database performance optimization basics.

Ability to work with transactions to ensure data integrity.

Understanding caching principles at the database or application level (e.g., Redis).

Experience deploying and maintaining databases.

Example of using SQLAlchemy:

# sqlalchemy
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# Creating a database engine
# engine = create_engine('sqlite:///mydatabase.db')

# Defining the base class for declarative tables
# Base = declarative_base()

# Defining a model
# class User(Base):
#     __tablename__ = 'users'

#     id = Column(Integer, primary_key=True)
#     name = Column(String)
#     age = Column(Integer)

# Creating tables in the database (if they do not exist)
# Base.metadata.create_all(engine)

# Creating a session
# Session = sessionmaker(bind=engine)
# session = Session()

# Adding a new user
# new_user = User(name='Alice', age=30)
# session.add(new_user)
# session.commit()

# Querying users
# users = session.query(User).all()
# for user in users:
#     print(f"ID: {user.id}, Name: {user.name}, Age: {user.age}")

# Closing the session
# session.close()

Example of using an SQL query:

-- SQL
SELECT name, age FROM users WHERE age > 25;

Key differences between relational and non-relational databases:

Attribute Relational DBs (e.g., PostgreSQL) Non-relational DBs (e.g., MongoDB)
Data Structure Tables with strict schema Flexible schema, documents
Relations Defined via foreign keys Defined at the application level
Scaling Vertical primarily Easier horizontal scaling
Query Language SQL Various (depends on DB)
Use Cases Transactions, complex analytics Large data volumes, fast access