Scenario Based Questions
đ ī¸ 16. Scenario-Based Questions (System Design)â
143. Design a chat application database (WhatsApp/Messenger)â
āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽ āϰā§āϏāĻĒāύā§āϏ (Low Latency) āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻā§āύāĻžāϰā§āĻ āĻšāĻāϝāĻŧāĻž āĻŦāĻŋāϞāĻŋāϝāĻŧāύ āĻŦāĻŋāϞāĻŋāϝāĻŧāύ āĻŽā§āϝāĻžāϏā§āĻ (High Write Throughput) āϏāĻžāĻŽāϞāĻžāϤ⧠āĻšāϝāĻŧāĨ¤
Database Technology Choices:
- āĻāĻāĻāĻžāϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āĻ āϰāĻŋāϞā§āĻļāύāĻžāϞ āĻĄā§āĻāĻž: PostgreSQL āĻŦāĻž MySQLāĨ¤
- āĻŽā§āϝāĻžāϏā§āĻ āϏā§āĻā§āϰ: Apache Cassandra (āĻāĻžāϰāĻŖ āĻāϰ Write āϏā§āĻĒāĻŋāĻĄ āĻ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻŦāĻ āĻāĻžāĻāĻŽ-āϏāĻŋāϰāĻŋāĻ āĻĄā§āĻāĻž āϰāĻžāĻāϤ⧠āĻā§āĻŦ āĻĒāĻžāϰāĻĻāϰā§āĻļā§) āĻ āĻĨāĻŦāĻž NoSQL āĻĄāĻā§āĻŽā§āύā§āĻ āϏā§āĻā§āϰāĨ¤
- āϏā§āĻļāύ āĻ āĻ āύāϞāĻžāĻāύ āϏā§āĻā§āϝāĻžāĻāĻžāϏ: Redis (In-memory key-value store)āĨ¤
How would you handle message history efficiently?â
āĻā§āϝāĻžāĻ āĻšāĻŋāϏā§āĻā§āϰāĻŋ āϰāĻžāĻāĻžāϰ āĻāύā§āϝ āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§ āĻāĻŽāύāĻāĻžāĻŦā§ āϏāĻžāĻāĻžāϤ⧠āĻšāϝāĻŧ āϝā§āύ āĻā§āϝāĻŧā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻļā§āϧ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āϝāĻžāĻā§āϰ āĻĄā§āĻāĻž āĻĻā§āϰā§āϤ āĻāĻ ā§ āĻāϏā§āĨ¤
Cassandra Table Design Example:
CREATE TABLE messages (
conversation_id UUID,
message_id TIMEUUID, -- āĻ
āĻā§āĻŽā§āĻāĻŋāĻā§āϝāĻžāϞāĻŋ āϏāĻŽāϝāĻŧā§āϰ āĻā§āϰāĻŽ āϰāĻā§āώāĻž āĻāϰā§
sender_id UUID,
message_text TEXT,
created_at TIMESTAMP,
PRIMARY KEY (conversation_id, message_id)
) WITH CLUSTERING ORDER BY (message_id DESC);
āĻāĻāĻžāύ⧠conversation_id āĻšāϞ⧠Partition Key (āĻ
āϰā§āĻĨāĻžā§ āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻā§āϰ āϏāĻŦ āĻŽā§āϝāĻžāϏā§āĻ āĻšāĻžāϰā§āĻĄāĻĄāĻŋāϏā§āĻā§āϰ āĻāĻāĻ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻĨāĻžāĻāĻŦā§), āĻāϰ message_id āĻšāϞ⧠Clustering Key (āϝāĻž āĻŽā§āϏā§āĻāĻā§āϞā§āĻā§ āϏāĻŽāϝāĻŧā§āϰ āĻā§āϰāĻŽāĻžāύā§āϏāĻžāϰ⧠āϏāĻžāĻāĻžāĻŦā§)āĨ¤ āϝāĻāύ āĻāĻāĻāĻžāϰ āĻā§āϝāĻžāĻāĻŦāĻā§āϏ āĻā§āϞā§, āϤāĻāύ SELECT * FROM messages WHERE conversation_id=X LIMIT 50; āĻāĻžāϞāĻžāϞ⧠āĻŽā§āĻšā§āϰā§āϤā§āĻ āϞā§āĻā§āϏā§āĻ ā§Ģā§ĻāĻāĻŋ āĻŽā§āϝāĻžāϏā§āĻ āĻāϞ⧠āĻāϏāĻŦā§āĨ¤ āĻāĻāĻāĻžāϰ āĻāĻĒāϰ⧠āϤā§āϞāϞ⧠(Scroll), message_id < Last_Message_ID āϧāϰ⧠āĻĒā§āĻāύā§āϰ āĻŽā§āϏā§āĻ āĻāύāĻž āĻšāϝāĻŧāĨ¤
How do you implement read receipts?â
āϰāĻŋāĻĄ āϰāĻŋāϏāĻŋāĻĒā§āĻ (Send, Delivered, Seen) āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽā§ āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āϞā§āĻāĻžāϰ āĻāĻā§ āĻāĻā§āϞ⧠āĻŽā§āϏā§āĻ āĻāĻŋāĻ āĻŦāĻž āĻā§āϝāĻžāĻļā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĻā§āϰā§āϤ āĻāĻĒāĻĄā§āĻ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏā§
status(TINYINT: 0=sent, 1=delivered, 2=seen) āĻĢāĻŋāϞā§āĻĄ āĻĨāĻžāĻā§āĨ¤ - āϝā§āĻšā§āϤ⧠āĻāĻāĻ āĻŽā§āϏā§āĻā§āϰ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻŦāĻžāϰāĻŦāĻžāϰ āĻāĻĒāĻĄā§āĻ āĻšāϝāĻŧ, āϏāϰāĻžāϏāϰāĻŋ āĻŽā§āĻāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāĻĒāĻĄā§āĻ āύāĻž āĻāϰ⧠āĻĒā§āϰāĻĨāĻŽā§ Redis/Kafka āϤ⧠āĻāĻā§āύā§āĻ āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧāĨ¤ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāϝāĻŧāĻžāϰā§āĻāĻžāϰ āĻāĻŋāĻā§ āϏāĻŽāϝāĻŧ āĻĒāϰ āĻĒāϰ āĻŦā§āϝāĻžāĻ (Batch) āĻāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§ āĻāĻĒāĻĄā§āĻ āĻāϰā§, āϝāĻžāϤ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āϰā§āϝāĻžāĻļ āύāĻž āĻāϰā§āĨ¤
How to handle group chats vs direct messages?â
- Direct Messages: āĻĻā§āĻāύ āĻāĻāĻāĻžāϰā§āϰ āĻāĻāĻĄāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻ āĻŋ āĻāĻāύāĻŋāĻ
conversation_idāϤā§āϰāĻŋ āĻšāϝāĻŧ (āϝā§āĻŽāύuser1_user2)āĨ¤ - Group Chats: āĻāĻāĻāĻŋ āĻŽā§āϏā§āĻ āϝāĻāύ āĻā§āϰā§āĻĒā§ āĻāϏā§, āϤāĻāύ āϤāĻž āĻā§āϰā§āĻĒā§āϰ ā§§ā§Ļ āĻšāĻžāĻāĻžāϰ āĻŽā§āĻŽā§āĻŦāĻžāϰāĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĒāĻžāĻ āĻžāύā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻļā§āϧ⧠āĻāĻāĻŦāĻžāϰ āĻŽā§āϏā§āĻāĻāĻŋ āϏā§āĻā§āϰ āĻšāϝāĻŧ (
group_idāĻ āϧā§āύā§)āĨ¤ āĻāϰāĻĒāϰ āĻāĻāĻāĻŋ Pub/Sub (Publish/Subscribe) āĻŦā§āϰā§āĻāĻžāϰ (āϝā§āĻŽāύ Redis Pub/Sub āĻŦāĻž RabbitMQ) āĻāĻ āĻā§āϰā§āĻĒā§āϰ āϏāĻāϞ āϞāĻžāĻāĻ/āĻ āύāϞāĻžāĻāύ āĻŽā§āĻŽā§āĻŦāĻžāϰā§āϰ āĻāϝāĻŧā§āĻŦ-āϏāĻā§āĻ (WebSocket) āĻāĻžāύā§āĻāĻļāύ⧠āĻŽā§āϏā§āĻāĻāĻŋ āĻŦā§āϰāĻĄāĻāĻžāϏā§āĻ āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
144. Design a ride-sharing app database (Uber-style)â
āϰāĻžāĻāĻĄ āĻļā§āϝāĻŧāĻžāϰāĻŋāĻ āϏāĻžāϰā§āĻāĻŋāϏ⧠āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽā§ āĻāϞāύā§āϤ āĻāĻžāĻĄāĻŧāĻŋāϰ āĻā§āϰā§āϝāĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻĒā§āϝāĻžāϏā§āĻā§āĻāĻžāϰā§āϰ āϞā§āĻā§āĻļāύ āĻŽā§āϝāĻžāĻ āĻāϰāĻžāύ⧠āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻāĻŋāϞ āĻāĻžāĻ (Geospatial Data Processing)āĨ¤
Database Technology Choices:
- āĻā§āϰ āĻā§āϰāĻžāύāĻā§āĻāĻļāύ (āĻāĻāĻāĻžāϰ, āϰā§āĻāĻŋāĻ, āĻĒā§āĻŽā§āύā§āĻ): PostgreSQL.
- āϞā§āĻā§āĻļāύ āĻā§āϰā§āϝāĻžāĻāĻŋāĻ āĻ āĻŽā§āϝāĻžāĻāĻŋāĻ: Redis (Geohash) āĻŦāĻž PostgreSQL āĻāϰ PostGIS āĻāĻā§āϏāĻā§āύāĻļāύāĨ¤
- āĻāύāĻžāϞāĻžāĻāĻāĻŋāĻā§āϏ (Historical Data): Hadoop āĻŦāĻž Data WarehouseāĨ¤
How do you handle real-time driver location updates?â
āĻĄā§āϰāĻžāĻāĻāĻžāϰ āϝāĻāύ āĻāϞāĻā§, āϤāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻĒā§āϰāϤāĻŋ ā§Š-ā§Ē āϏā§āĻā§āύā§āĻĄā§ āĻāĻŋāĻĒāĻŋāĻāϏ āĻā§āĻ āϰā§āĻĄāĻŋāύā§āĻ āĻĒāĻžāĻ āĻžāϝāĻŧ āϏāĻžāϰā§āĻāĻžāϰā§āĨ¤
- āĻāĻāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻŽā§āĻāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āϞā§āĻāĻž āĻāĻāĻĻāĻŽ āĻŦā§āĻāĻžāĻŽāĻŋ, āĻĄāĻžāĻāĻžāĻŦā§āϏ āϞāĻ āĻšāϝāĻŧā§ āĻā§āϰā§āϝāĻžāĻļ āĻāϰāĻŦā§āĨ¤
- āϤāĻžāĻ āϞā§āĻā§āĻļāύ āĻāĻĒāĻĄā§āĻāĻā§āϞ⧠Redis Geo āĻĄāĻžāĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ⧠āϞā§āĻāĻž āĻšāϝāĻŧāĨ¤ Redis āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻĨāĻžāĻāĻžāϝāĻŧ āĻāĻāĻŋ āϏā§āĻā§āύā§āĻĄā§ āϞāĻžāĻ āϞāĻžāĻ āĻāĻĒāĻĄā§āĻ āύāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
# Redis āĻ āĻĄā§āϰāĻžāĻāĻāĻžāϰā§āϰ āϞā§āĻā§āĻļāύ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āĻāĻŽāĻžāύā§āĻĄ
GEOADD drivers 90.4125 23.8103 "driver_101"
- āĻĻā§āϰā§āĻāϏā§āĻĨāĻžāϝāĻŧā§ āϰāĻžāĻāĻĄ āĻšāĻŋāϏā§āĻā§āϰāĻŋāϰ āĻāύā§āϝ, āĻĒā§āϰāϤāĻŋ ā§Šā§Ļ āϏā§āĻā§āύā§āĻĄ āĻŦāĻž ā§§ āĻŽāĻŋāύāĻŋāĻ āĻĒāϰ āĻĒāϰ āĻāĻ āϞā§āĻā§āĻļāύāĻā§āϞ⧠āĻāĻāϤā§āϰ⧠āĻŦā§āϝāĻžāĻ āĻāϰ⧠Cassandra āĻŦāĻž PostgreSQL-āĻ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
How do you implement surge pricing?â
Surge Pricing āĻŽā§āϞāϤ āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽ āϏāĻžāĻĒā§āϞāĻžāĻ āĻāĻŦāĻ āĻĄāĻŋāĻŽāĻžāύā§āĻĄā§āϰ āĻŽā§āϝāĻžāĻĨāĻŽā§āĻāĻŋāĻāĻžāϞ āĻā§āϝāĻžāϞāĻā§āϞā§āĻļāύāĨ¤
- āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻāĻžāϰ (Geo-fence) āĻāύā§āϝ Apache Flink āĻŦāĻž Spark Streaming āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻžāĻāĻŽ-āĻāĻāύā§āĻĄā§āϤ⧠(āϝā§āĻŽāύ āĻļā§āώ ā§Ģ āĻŽāĻŋāύāĻŋāĻā§) āĻāϝāĻŧāĻāύ āϰāĻžāĻāĻĄ āĻā§āĻāĻāĻā§ āĻāĻŦāĻ āĻāϝāĻŧāĻāĻŋ āĻāĻžāĻĄāĻŧāĻŋ āĻĢā§āϰāĻŋ āĻāĻā§ āϤāĻžāϰ āĻšāĻŋāϏāĻžāĻŦ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āϝāĻĻāĻŋ āĻĄāĻŋāĻŽāĻžāύā§āĻĄ āϏāĻžāĻĒā§āϞāĻžāĻāϝāĻŧā§āϰ āĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āĻšāϝāĻŧ, āϤāĻŦā§ āĻŽā§āĻļāĻŋāύ āϞāĻžāϰā§āύāĻŋāĻ āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ āĻĒā§āϰāĻžāĻāϏ āĻŽāĻžāϞā§āĻāĻŋāĻĒā§āϞāĻžāϝāĻŧāĻžāϰ (āϝā§āĻŽāύ 1.5x, 2x) āϏā§āĻ āĻāϰ⧠āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϏā§āĻāĻŋ āϰā§āĻĄāĻŋāϏ⧠āĻā§āϝāĻžāĻļ āĻāϰ⧠āϰāĻžāĻā§ āϝā§āύ āĻāĻāĻāĻžāϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϰāĻž āĻŽāĻžāϤā§āϰāĻ āĻĒā§āϰāĻžāĻāϏ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
How do you match drivers with riders efficiently?â
āĻŽā§āϝāĻžāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻĒā§āĻĨāĻŋāĻŦā§āĻā§ āĻā§āĻ āĻā§āĻ āĻā§āϰāĻŋāĻĄ āĻŦāĻž āĻŦāĻžāĻā§āϏ⧠āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽā§ Geohash (āϝā§āĻŽāύ UBER āĻāϰ H3 āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ) āĻŦāĻž Quadtree āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āϝāĻāύ āĻāĻāĻāĻžāϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϰā§, āϏāĻŋāϏā§āĻā§āĻŽ āĻĻā§āĻā§ āĻāĻāĻāĻžāϰ āĻā§āύ āĻā§āϰāĻŋāĻĄā§ āĻŦāĻž āĻā§āύ-āĻ āĻāĻā§ (āϝā§āĻŽāύ "Gulshan")āĨ¤
- āĻāϰāĻĒāϰ Redis āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻā§āϝāĻŧā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻāĻžāϰ āĻā§āϰāĻŋāĻĄā§ āĻĨāĻžāĻāĻž āĻĢā§āϰāĻŋ (Idle) āĻĄā§āϰāĻžāĻāĻāĻžāϰāĻĻā§āϰ āĻāύā§āϝāĨ¤
# Redis āĻ ā§¨ āĻāĻŋāϞā§āĻŽāĻŋāĻāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āĻĨāĻžāĻāĻž āĻĄā§āϰāĻžāĻāĻāĻžāϰāĻĻā§āϰ āĻā§āĻāĻāĻž
GEORADIUS drivers 90.4125 23.8103 2 km
- āĻāϰāĻĒāϰ āĻĒāĻžāĻāϝāĻŧāĻž āĻĄā§āϰāĻžāĻāĻāĻžāϰāĻā§āϞā§āϰ āĻāĻžāϰā§āύā§āĻ āϏā§āĻĒāĻŋāĻĄ āĻāĻŦāĻ āĻŽā§āϝāĻžāĻĒ āϰāĻžāĻāĻāĻŋāĻ (Traffic condition) āĻā§āϝāĻžāϞāĻā§āϞā§āĻ āĻāϰ⧠āϏāĻŦāĻā§āϝāĻŧā§ āĻĻā§āϰā§āϤ āĻĒā§āĻāĻāĻžāϤ⧠āĻĒāĻžāϰāĻž āĻĄā§āϰāĻžāĻāĻāĻžāϰāĻā§ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧāĨ¤
145. Design an e-commerce database (Amazon-style)â
āĻ-āĻāĻŽāĻžāϰā§āϏ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻŽāύā§āϞāĻŋāĻĨ āύāϝāĻŧ; āĻāĻāĻŋ āĻ āϏāĻāĻā§āϝ āĻā§āĻ āĻā§āĻ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏā§āϰ (Microservices) āϏāĻŽāύā§āĻŦāϝāĻŧ, āϝā§āĻāĻžāύ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϰāĻŋāĻāϝāĻŧāĻžāϰāĻŽā§āύā§āĻ āĻāϞāĻžāĻĻāĻž āĻĨāĻžāĻā§āĨ¤
Database Technology Choices:
- āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āĻā§āϝāĻžāĻāĻžāϞāĻ (Inventory Search): Elasticsearch (āĻā§āĻā§āϏāĻ āϏāĻžāϰā§āĻā§āϰ āĻāύā§āϝ) āĻāĻŦāĻ MongoDB (āĻĒā§āϰā§āĻĄāĻžāĻā§āĻā§āϰ āĻŦāĻŋāĻāĻŋāϤā§āϰ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ āϰāĻžāĻāĻžāϰ āĻāύā§āϝ)āĨ¤
- āĻ āϰā§āĻĄāĻžāϰ āĻ āĻĒā§āĻŽā§āύā§āĻ (Transactions): MySQL āĻŦāĻž PostgreSQL (āϝā§āĻāĻžāύ⧠ACID āĻā§āϝāĻžāϰāĻžāύā§āĻāĻŋ āĻŽāĻžāϏā§āĻ)āĨ¤
- āĻāĻāĻāĻžāϰ āĻāĻžāϰā§āĻ āĻ āϏā§āĻļāύ: Redis.
How do you handle shopping carts and abandoned carts?â
- āĻļāĻĒāĻŋāĻ āĻāĻžāϰā§āĻ: āĻāĻžāϰā§āĻā§āϰ āĻĄā§āĻāĻž āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽā§ āĻāĻāĻāĻžāϰ āĻŽāĻŋāύāĻŋāĻā§ āĻāϝāĻŧā§āĻāĻŦāĻžāϰ āĻā§āĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϤāĻžāĻ āĻāĻāĻŋāĻā§ āĻĒāĻžāϰāĻŽāĻžāύā§āύā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āύāĻž āϞāĻŋāĻā§ Redis Key-Value āĻšāĻŋāϏā§āĻŦā§ āϰāĻžāĻāĻž āĻšāϝāĻŧāĨ¤
// Redis āĻ āϏā§āĻ āĻĨāĻžāĻāĻž āĻāĻāĻāĻžāϰā§āϰ āĻāĻžāϰā§āĻ
"cart:user_405": {
"items": [{"prod_id": 101, "qty": 2}, {"prod_id": 105, "qty": 1}],
"updated_at": 1690002100
}
- āĻāĻŦāĻžāύā§āĻĄāύāĻĄ āĻāĻžāϰā§āĻ (Abandoned Cart): Redis āĻĄā§āĻāĻžāϝāĻŧ āĻāĻāĻāĻŋ TTL (Time-To-Live) āϏā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§ (āϝā§āĻŽāύ ⧍ā§Ē āĻāĻŖā§āĻāĻž)āĨ¤ āĻāϰ āĻāĻā§ āĻāĻāĻāĻžāϰ āĻĒā§āĻŽā§āύā§āĻ āύāĻž āĻāϰāϞ⧠āĻāĻāĻāĻŋ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŦ (Cron) āĻāĻ āĻāĻžāϰā§āĻ āĻĄā§āĻāĻžāĻā§ Redis āĻĨā§āĻā§ āϏāϰāĻŋāϝāĻŧā§ āĻĒāĻžāϰāĻŽāĻžāύā§āύā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āϏā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻāĻžāϰāĻā§ āĻāĻŽā§āĻāϞ āϰāĻŋāĻŽāĻžāĻāύā§āĻĄāĻžāϰ āĻĻā§āϝāĻŧāĨ¤
How do you manage inventory across multiple warehouses?â
āĻ-āĻāĻŽāĻžāϰā§āϏ⧠āĻāĻāĻ āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āĻ āύā§āĻā§āĻ āĻāĻŋāύāϤ⧠āĻāĻžāϝāĻŧāĨ¤ āϰā§āϏ āĻāύā§āĻĄāĻŋāĻļāύ (Race Condition) āĻāĻĄāĻŧāĻžāϤ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠Row-level Lock āĻŦāĻž Pessimistic Locking āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āϝāĻāύ āĻā§āĻ āĻā§āĻāĻāĻāĻ āĻāϰā§, āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻ āĻĒā§āϰā§āĻĄāĻžāĻā§āĻā§āϰ āϰ⧠(Row) āĻā§ āĻĢāϰ-āĻāĻĒāĻĄā§āĻ āϞāĻ āĻāϰā§:
SELECT quantity FROM inventory WHERE product_id=101 FOR UPDATE;
UPDATE inventory SET quantity = quantity - 1 WHERE product_id=101;
- āĻāĻāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠āĻāύāĻā§āύā§āĻāϰāĻŋ āϝāĻĻāĻŋ ā§§āĻāĻŋ āĻĨāĻžāĻāĻž āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ ⧍ āĻāύ āĻāĻāϏāĻžāĻĨā§ āĻĒā§āĻŽā§āύā§āĻ āĻāϰā§, āϤāĻŦā§ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻāĻāύāĻā§ āĻāϰāϰ āĻĻā§āĻŦā§ āĻāĻŦāĻ āĻŽāĻžāĻāύāĻžāϏ āĻā§āϝāĻŧāĻžāύā§āĻāĻŋāĻāĻŋāϤ⧠āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āĻŦāĻŋāĻā§āϰāĻŋ āĻšāĻŦā§ āύāĻžāĨ¤
How do you handle product recommendations?â
āϰā§āĻāĻŽā§āύā§āĻĄā§āĻļāύ āĻāĻā§āĻāĻŋāύ āϏāĻžāϧāĻžāϰāĻŖāϤ Graph Databases (Neo4j) āĻŦāĻž āĻŦāĻŋāĻ āĻĄā§āĻāĻž āĻāύāĻžāϞāĻžāĻāĻāĻŋāĻā§āϏ (Apache Spark) āĻāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤
- āύā§āĻĄ āĻšāĻŋāϏā§āĻŦā§ āĻĨāĻžāĻā§ "User" āĻāĻŦāĻ "Product", āĻāϰ āĻāĻ (Edge) āĻšāϝāĻŧ "Viewed", "Purchased"āĨ¤
- āĻā§āϰāĻžāĻĢ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻā§āϝāĻŧā§āϰāĻŋ āĻšāϝāĻŧ: "āϰāĻšāĻŋāĻŽā§āϰ āĻŽāϤ⧠āĻ āύā§āϝ āĻāĻāĻāĻžāϰāϰāĻž āϝāĻžāϰāĻž āĻāĻ āĻā§āϤā§āĻāĻŋ āĻĻā§āĻā§āĻā§, āϤāĻžāϰāĻž āĻāϰ āĻā§āύ āĻĒā§āϝāĻžāύā§āĻ āĻāĻŋāύā§āĻā§?" āϏā§āĻ āĻĒā§āϝāĻžāύā§āĻāĻā§āϞā§āĻā§ āĻšā§āĻŽ āĻĒā§āĻā§ āϏāĻžāĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧāĨ¤
146. Design a social media platform database (Facebook/Twitter)â
āϏā§āĻļā§āϝāĻžāϞ āĻŽāĻŋāĻĄāĻŋāϝāĻŧāĻž āϏāĻŋāϏā§āĻā§āĻŽā§ āĻĄā§āĻāĻžāϰ āĻā§āϰāĻžāĻĢāĻŋāĻ āϰāĻŋāĻĄ (Read)-āĻšā§āĻāĻŋ āĻšāϝāĻŧā§ āĻĨāĻžāĻā§ (ā§§ āĻāύ āĻĒā§āϏā§āĻ āĻāϰā§, ā§§ āϞāĻžāĻ āĻŽāĻžāύā§āώ āĻĻā§āĻā§)āĨ¤ āϤāĻžāĻ āĻšāĻžāĻāϞāĻŋ āĻāĻā§āĻāϞā§āϝāĻžāĻŦāϞ āĻāĻŦāĻ āĻāĻā§āύāĻā§āϝāĻŧāĻžāϞ āĻāύāϏāĻŋāϏā§āĻā§āύ⧠āĻ (Eventual Consistency) āϏāĻŋāϏā§āĻā§āĻŽ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
How do you implement follow/unfollow efficiently?â
āĻāĻāĻžāύ⧠āĻā§āϰāĻžāĻĢ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŦāĻž āϏāĻŋāĻŽā§āĻĒāϞ āϰāĻŋāϞāĻžāĻļāύāĻžāϞ āĻā§āĻŦāĻŋāϞā§āϰ āĻāϝāĻŧā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
- āĻāĻāĻāĻŋ RDBMS āĻ āĻā§āĻŦāĻŋāϞ āĻĨāĻžāĻāĻŦā§
usersāĻāĻŦāĻ āĻāϰā§āĻāĻāĻŋ āĻā§āĻŦāĻŋāϞfollows (follower_id, followee_id)āĨ¤ - āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽā§ "Mutual Friends" āĻŦāĻž "People you may know" āϏāĻžāĻā§āϏā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ Neo4j āϏā§āϰāĻž āĻĒāĻāύā§āĻĻāĨ¤
// Neo4j Query: āĻāύ āĻāϰ āĻŦāύā§āϧā§āĻĻā§āϰ āĻŦāύā§āϧ⧠āĻŦā§āϰ āĻāϰāĻžāϰ āĻā§ā§ā§āϰāĻŋ
MATCH (john:User {name: 'John'})-[:FRIEND]->(friend)-[:FRIEND]->(fof)
WHERE NOT (john)-[:FRIEND]->(fof)
RETURN fof
How do you generate news feed?â
āύāĻŋāĻāĻ āĻĢāĻŋāĻĄ āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻ āĻŋāύ āĻāĻžāĻāĨ¤ āĻāĻāĻŋ āĻāϰāĻžāϰ āĻĻā§āĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϰā§āĻ āĻāĻā§:
- Pull Model (On-Demand): āϝāĻāύ āĻāĻĒāύāĻŋ āĻĢāĻŋāĻĄ āϞāĻĄ āĻāϰā§āύ, āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻĒāύāĻžāϰ āĻĢāϞ⧠āĻāϰāĻž āĻšāĻžāĻāĻžāϰ āĻŽāĻžāύā§āώā§āϰ āϞā§āĻā§āϏā§āĻ āĻĒā§āϏā§āĻāĻā§āϞ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āĻā§āϝāĻŧā§āϰāĻŋ āĻāϰ⧠āĻāύ⧠āĻ āϰā§āĻĄāĻžāϰ (Sort) āĻāϰā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻāĻāĻžāϰāĻĻā§āϰ āĻāύā§āϝ āĻāĻāĻŋ āĻāĻžāĻ āĻāϰāϞā§āĻ āϏā§āϞāĻŋāĻŦā§āϰāĻŋāĻāĻŋāĻĻā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻāĻ āĻā§āϝāĻŧā§āϰāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§ āĻĢā§āϰāĻŋāĻ āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
- Push Model (Fan-out on Write): āĻā§āĻ āϝāĻāύ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻĻā§āϝāĻŧ, āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāϝāĻŧāĻžāϰā§āĻāĻžāϰ (Celery/Sidekiq) āϏā§āĻ āϏā§āĻā§āϝāĻžāĻāĻžāϏāĻāĻŋāĻā§ āϤāĻžāϰ āϏāĻāϞ āĻĢāϞ ā§āϝāĻŧāĻžāϰā§āϰ āĻĒā§āϰāĻŋ-āĻāĻŽā§āĻĒāĻŋāĻāĻā§āĻĄ āύāĻŋāĻāĻāĻĢāĻŋāĻĄ (āϝāĻž Redis āϞāĻŋāϏā§āĻā§ āϏāĻāϰāĻā§āώāĻŋāϤ) āĻā§āĻŦāĻŋāϞ⧠āĻĒā§āĻļ āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
- āĻšāĻžāĻāĻŦā§āϰāĻŋāĻĄ āϏāϞāĻŋāĻāĻļāύ: āϏāĻžāϧāĻžāϰāĻŖ āĻŽāĻžāύā§āώā§āϰ āĻāύā§āϝ Push Model āĻāĻŦāĻ āϏā§āϞāĻŋāĻŦā§āϰāĻŋāĻāĻŋāĻĻā§āϰ (āϝāĻžāĻĻā§āϰ āĻĢāϞā§āϝāĻŧāĻžāϰ ā§§ āϞāĻžāĻā§āϰ āĻŦā§āĻļāĻŋ) āĻāύā§āϝ Pull Model āĻāĻāϏāĻžāĻĨā§ āĻŽāĻŋāĻā§āϏ āĻāϰ⧠āĻšāĻžāĻ-āϏā§āĻā§āϞ⧠āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
How do you handle trending topics?â
āĻā§āϰā§āύā§āĻĄāĻŋāĻ āĻāĻĒāĻŋāĻāϏ āĻŦā§āϰ āĻāϰāĻžāϰ āĻāĻžāĻ āĻŽā§āϞāϤ Stream Processing āĻāϰ āĻšāĻžāϤ⧠āĻĨāĻžāĻā§āĨ¤
- āĻšā§āϝāĻžāϏāĻā§āϝāĻžāĻāĻā§āϞ⧠āĻŽā§āϏā§āĻ āĻŦā§āϰā§āĻāĻžāϰ Apache Kafka āϤ⧠āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧāĨ¤
- Apache Flink āĻāĻāĻāĻŋ āĻĢāĻŋāĻā§āϏāĻĄ āĻāĻžāĻāĻŽāĻĢā§āϰā§āĻŽā§āϰ āĻŽāϧā§āϝ⧠(āĻāϤ ā§Šā§Ļ āĻŽāĻŋāύāĻŋāĻ) āĻā§āύ āĻšā§āϝāĻžāϏāĻā§āϝāĻžāĻ āĻāϤāĻŦāĻžāϰ āĻāϏā§āĻā§ āϤāĻž āĻā§āύ⧠(Count-Min Sketch āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ) āĻĢāϞāĻžāĻĢāϞāĻāĻŋāĻā§ āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽā§ Redis ZSET (Sorted List) āĻ āĻāĻĒāĻĄā§āĻ āĻāϰā§āĨ¤ āĻāĻĒ ā§§ā§Ļ āϞāĻŋāϏā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āύāĻž āĻā§āĻāϝāĻŧā§ āϏāϰāĻžāϏāϰāĻŋ Redis āĻĨā§āĻā§āĻ āĻĢā§āϰāύā§āĻāĻāύā§āĻĄā§ āĻļā§ āĻāϰāĻžāύ⧠āĻšāϝāĻŧāĨ¤
147. Design a banking system databaseâ
āĻŦā§āϝāĻžāĻāĻāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻāϰ āϏā§āĻļā§āϝāĻžāϞ āĻŽāĻŋāĻĄāĻŋāϝāĻŧāĻž āĻāĻ āĻāĻŋāύāĻŋāϏ āύāϝāĻŧāĨ¤ āĻāĻāĻžāύ⧠⧧ āϏā§āĻā§āύā§āĻĄ āĻĄāĻžāĻāĻž āϏā§āϞ⧠āĻāϏāϞā§āĻ āϏāĻŽāϏā§āϝāĻž āύā§āĻ, āĻāĻŋāύā§āϤ⧠⧧ āĻāĻžāĻāĻžāϰ āĻŦā§āϝāĻžāϞā§āύā§āϏ āĻā§āϞ āĻšāϞ⧠āĻĒā§āϰ⧠āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āϧā§āĻŦāĻāϏ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
Database Choices: PostgreSQL, Oracle, āĻ āĻĨāĻŦāĻž Spanner āĻāϰ āĻŽāϤ⧠āĻĢā§āϞā§āϞāĻŋ ACID āĻāĻŽāĻĒā§āϞāĻžāϝāĻŧā§āύā§āĻ SQL āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŽāĻžāϏā§āĻ!
How do you ensure ACID properties for money transfers?â
āĻŽāĻžāύāĻŋ āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ⧠Atomicity āĻāĻ ā§āϰāĻāĻžāĻŦā§ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧ, āĻ āϰā§āĻĨāĻžā§ āĻšāϝāĻŧ āϏāĻŦ āĻāĻžāĻ āĻšāĻŦā§, āύāĻž āĻšāϝāĻŧ āĻāĻŋāĻā§āĻ āĻšāĻŦā§ āύāĻžāĨ¤
- āĻāϰ āĻāύā§āϝ āϏāĻŋāϏā§āĻā§āĻŽ Double Entry Accounting āĻĢāϞ⧠āĻāϰā§āĨ¤ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ
accountsāĻāĻŦāĻ āĻāϰā§āĻāĻāĻŋ āĻā§āĻŦāĻŋāϞledger_entriesāϰāĻžāĻāĻž āĻšāϝāĻŧāĨ¤ - āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āϝāĻāύāĻ āĻāĻžāĻāĻž āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻšāĻŦā§, āĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦā§āϞāĻā§āϰ āĻā§āϤāϰ āĻšāĻŦā§:
BEGIN TRANSACTION;
-- āϏā§āύā§āĻĄāĻžāϰā§āϰ āĻŦā§āϝāĻžāϞā§āύā§āϏ āϞāĻ āĻāĻŦāĻ āĻāĻŽāĻžāύā§
UPDATE accounts SET balance = balance - 1000 WHERE id = 1 FOR UPDATE;
-- āϰāĻŋāϏāĻŋāĻāĻžāϰā§āϰ āĻŦā§āϝāĻžāϞā§āύā§āϏ āϞāĻ āĻāĻŦāĻ āĻŦāĻžā§āĻžāύā§
UPDATE accounts SET balance = balance + 1000 WHERE id = 2 FOR UPDATE;
-- āĻ
āĻĄāĻŋāĻ āĻā§āĻŦāĻŋāϞ⧠āϞāĻ āϰāĻžāĻāĻž
INSERT INTO ledger (from_ac, to_ac, amount) VALUES (1, 2, 1000);
COMMIT;
-- āĻĢā§āĻāϞ āĻāϰāϞ⧠ROLLBACK āĻāϰāĻž āĻšāĻŦā§
How do you handle transaction history and auditing?â
āĻŦā§āϝāĻžāĻāĻāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻĄā§āĻāĻž āĻāĻāύā§āĻ āĻŽā§āĻā§ āĻĢā§āϞāĻž (DELETE) āĻŦāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ (UPDATE) āĻāϰāĻž āϝāĻžāϝāĻŧ āύāĻžāĨ¤
- āĻāϰ āĻāύā§āϝ Event Sourcing Pattern āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻĒāύāĻžāϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϝāĻžāϞā§āύā§āϏ āĻŽā§āϞāϤ āĻ āĻāĻŖāĻŋāϤ āĻāĻŽāĻž āĻāĻŦāĻ āĻāĻāϰ āĻšāĻŋāϏā§āĻŦā§āϰ (Ledgers) āϝā§āĻāĻĢāϞāĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āϰāĻžāύāĻā§āĻāĻļāύ⧠Immutable, Append-only (āĻļā§āϧ⧠āĻŽāĻžāϤā§āϰ āύāĻŋāĻā§ āϞā§āĻāĻž āĻšāĻŦā§) āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻžāϤ⧠āĻā§āĻ āĻĄā§āĻāĻž āĻā§āĻŽā§āĻĒāĻžāϰ āĻāϰāϞ⧠āϤāĻž āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āϧāϰāĻž āĻĒāĻĄāĻŧā§āĨ¤
How do you prevent double spending?â
āϝāĻžāϤ⧠āĻāĻāĻ āĻĒā§āĻŽā§āύā§āĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĻā§āĻŦāĻžāϰ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āύāĻž āĻšāϝāĻŧ, āϤāĻžāϰ āĻāύā§āϝ āϤāĻŋāύāĻāĻŋ āϞā§āϝāĻŧāĻžāϰ āϰāĻžāĻāĻž āĻšāϝāĻŧ:
- Idempotency Key: āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻ
ā§āϝāĻžāĻĒ āĻĨā§āĻā§ āϝāĻāύ āĻāĻžāĻāĻž āĻĒāĻžāĻ āĻžāύā§āϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϏā§, āϤāĻāύ āĻāĻāĻāĻŋ āĻāĻāύāĻŋāĻ āĻā§āĻā§āύ āĻŦāĻž āĻā§ (Key) āĻāϏā§āĨ¤ āĻāĻ āĻā§ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ
transactionsāĻā§āĻŦāĻŋāϞ⧠UNIQUE āĻāϞāĻžāĻŽ āĻšāĻŋāϏā§āĻŦā§ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻāĻ āĻā§ āĻĒā§āϞā§āĻ āϰāĻŋāĻā§āĻā§āĻ āĻāϰ⧠āĻĻā§āϝāĻŧ (Duplicate Key Error)āĨ¤ - Pessimistic Locking: āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϞāĻžāĻāĻžāϞā§āύ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āϰā§-āĻā§
FOR UPDATEāĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϞāĻ āĻāϰ⧠āϰāĻžāĻāĻž āĻšāϝāĻŧāĨ¤
148. Design a video streaming platform database (Netflix/YouTube)â
āĻāĻŋāĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻŽāĻŋāĻāϝāĻŧā§ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āĻŦ āĻā§āĻ āĻĨāĻžāĻā§, āĻāĻžāϰāĻŖ āĻ āϰāĻŋāĻāĻŋāύāĻžāϞ āĻāĻŋāĻĄāĻŋāĻ āĻĢāĻžāĻāϞāĻā§āϞ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĨāĻžāĻā§ āύāĻžāĨ¤
How do you store video metadata vs actual video files?â
- āĻŽā§āĻāĻžāĻĄā§āĻāĻž (Metadata): āĻāĻŋāĻĄāĻŋāĻāϰ āĻāĻžāĻāĻā§āϞ, āĻĄā§āϏāĻā§āϰāĻŋāĻĒāĻļāύ, āĻā§āϝāĻžāĻ, āϞāĻžāĻāĻ-āĻĄāĻŋāϏāϞāĻžāĻāĻ, āĻāĻŽā§āύā§āĻâāĻāĻā§āϞ⧠PostgreSQL āĻŦāĻž MongoDB āϤ⧠āϰāĻžāĻāĻž āĻšāϝāĻŧ, āĻāĻžāϰāĻŖ āĻāĻā§āϞ⧠āĻā§āĻā§āϏāĻ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻĒā§āϰāĻā§āϰ āĻā§āϝāĻŧā§āϰāĻŋ āĻšāϝāĻŧāĨ¤
- āĻāĻŋāĻĄāĻŋāĻ āĻĢāĻžāĻāϞ (Blob Storage): āĻāĻŋāĻĄāĻŋāĻ āĻĢāĻžāĻāϞāĻā§ āĻŦāĻŋāĻāĻŋāύā§āύ āϰā§āĻā§āϞā§āĻļāύ⧠(ā§§ā§Ļā§Žā§ĻāĻĒāĻŋ, ā§ā§¨ā§ĻāĻĒāĻŋ) āĻāύāĻāĻžāϰā§āĻ āĻāϰ⧠Object Storage (Amazon S3 āĻŦāĻž GCS) āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻ āĻĢāĻžāĻāϞā§āϰ āĻāĻāĻāĻŋ CDN āϞāĻŋāĻāĻ (āϝā§āĻŽāύ
https://cdn.example.com/video123_720p.mp4) āϰāĻžāĻāĻž āĻšāϝāĻŧāĨ¤
How do you handle user viewing history and recommendations?â
āĻāĻŋāĻĄāĻŋāĻ āĻšāĻŋāϏā§āĻā§āϰāĻŋ āĻāĻāĻāĻŋ āĻāύā§āĻāĻŋāύāĻŋāĻāϝāĻŧāĻžāϏ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻŋāĻŽ āĻŦāĻž āϞāĻ (Log)āĨ¤
- āĻāĻāĻāĻžāϰ āϝāĻāύ āĻāĻŋāĻĄāĻŋāĻ āĻĻā§āĻā§, āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĨā§āĻā§ āĻĒā§āϰāϤāĻŋ ā§§ā§Ļ āϏā§āĻā§āύā§āĻĄ āĻĒāϰ āĻĒāϰ āĻāĻāĻāĻŋ "Heartbeat" āϏāĻŋāĻāύā§āϝāĻžāϞ āĻāϏ⧠("āĻāĻāĻāĻžāϰ ⧧⧍ āĻŽāĻŋāύāĻŋāĻ ā§§ā§Ļ āϏā§āĻā§āύā§āĻĄā§ āĻāĻā§")āĨ¤
- āĻāĻ āĻŦāĻŋāĻĒā§āϞ āϏāĻāĻā§āϝāĻ āĻšāĻžāϰā§āĻāĻŦāĻŋāĻ Cassandra-āϰ āĻŽāϤ⧠āĻšāĻžāĻ-āϏā§āĻā§āϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻ āĻĨāĻŦāĻž HDFS (Hadoop) āĻ āĻĄāĻžāĻŽā§āĻĒ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻ āĻĄā§āĻāĻžāϏā§āĻā§āϰ āĻāĻĒāϰ Machine Learning (Collaborative Filtering) āĻāĻžāϞāĻŋāϝāĻŧā§ āĻŽā§āĻļāĻŋāύ āĻ āĻŋāĻ āĻāϰ⧠āĻāĻ āĻāĻāĻāĻžāϰā§āϰ āĻāύā§āϝ āύā§āĻā§āϏāĻ āϰā§āĻāĻŽā§āύā§āĻĄā§āĻļāύ āĻā§ āĻšāĻŦā§āĨ¤
How do you implement content delivery and caching?â
āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋāϰ āĻāύā§āϝ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĻāĻžāϝāĻŧā§ āύāϝāĻŧ, āĻāĻāĻŋ āĻŽā§āϞāϤ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰāĨ¤
- CDN (Content Delivery Network): Netflix āĻāϰ āĻŽāϤ⧠āϏāĻŋāϏā§āĻā§āĻŽ āϤāĻžāĻĻā§āϰ āĻāĻŋāĻĄāĻŋāĻāϰ āĻā§āϝāĻžāĻļ āĻāĻĒāĻŋāĻā§āϞ⧠āĻŦāĻŋāĻļā§āĻŦā§āϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĻā§āĻļā§āϰ āĻāύā§āĻāĻžāϰāύā§āĻ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰā§āϰ (ISP) āϞā§āĻāĻžāϞ āϏāĻžāϰā§āĻāĻžāϰ⧠(Netflix Open Connect) āĻŦāϏāĻŋāϝāĻŧā§ āϰāĻžāĻā§āĨ¤
- āϝāĻāύ āĻā§āύ⧠āĻŦāĻžāĻāϞāĻžāĻĻā§āĻļāĻŋ āĻāĻāĻāĻžāϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϰā§, āϏāĻŋāϏā§āĻā§āĻŽ āϤāĻžāϰ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ (āĻāĻŽā§āϰāĻŋāĻāĻžāϝāĻŧ āĻĨāĻžāĻāĻž) āĻĨā§āĻā§ āĻā§āϰāĻŋāĻĢāĻžāĻ āĻāϰā§, āĻāĻŋāύā§āϤ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŦāϞ⧠āĻĻā§āϝāĻŧâ"āĻāĻŽāĻŋ āĻĒāĻžāĻ āĻžāĻā§āĻāĻŋ āύāĻž, āϤā§āĻŽāĻŋ āĻĸāĻžāĻāĻžāϰ āĻāĻ āĻā§āϝāĻž āĻļ āϏāĻžāϰā§āĻāĻžāϰ āĻĨā§āĻā§ āĻāĻŋāĻĄāĻŋāĻāĻāĻŋ āĻāĻžāύā§āĨ¤"
149. Design a stock trading system databaseâ
āϏā§āĻāĻ āĻŽāĻžāϰā§āĻā§āĻ āĻšāĻā§āĻā§ āĻāĻāĻāĻŋ āĻāϞā§āĻā§āϰāĻž-āϞā§-āϞā§āĻā§āύā§āϏāĻŋ, āϏā§āĻĒāĻžāϰ āĻĢāĻžāϏā§āĻ āĻā§āϰāĻžāύāĻā§āĻāĻļāύāĻžāϞ āϏāĻŋāϏā§āĻā§āĻŽāĨ¤ āĻāĻāĻžāύ⧠āĻā§āϰā§āĻĄ āĻŽāĻŋāϞāϤ⧠āĻšāϝāĻŧ āĻŽāĻžāĻāĻā§āϰā§-āϏā§āĻā§āύā§āĻĄā§āĨ¤
How do you handle high-frequency trading requirements?â
āϰā§āĻā§āϞāĻžāϰ āĻĄāĻŋāϏā§āĻ āĻāĻŋāϤā§āϤāĻŋāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ (SQL) āĻāϰ āϞā§āĻā§āύā§āϏāĻŋ āĻŽāĻŋāϞāĻŋ-āϏā§āĻā§āύā§āĻĄā§ āĻšāϝāĻŧ, āϝāĻž āĻā§āϰā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻ āύā§āĻ āϏā§āϞā§āĨ¤
- āϤāĻžāĻ āĻĒā§āϰ⧠āĻā§āϰ āĻŽā§āϝāĻžāĻāĻŋāĻ āĻāĻā§āĻāĻŋāύ In-Memory Database (āϏāĻŽā§āĻĒā§āϰā§āĻŖ RAM āĻ āĻāϞā§), āϝā§āĻŽāύ Redis Enterprise āĻŦāĻž kdb+ āĻ āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧāĨ¤
- āĻŽā§āĻŽāϰāĻŋ āĻ āϤā§āϝāύā§āϤ āĻĢāĻžāϏā§āĻ āĻšāĻāϝāĻŧāĻžāϝāĻŧ āϞā§āĻā§āύā§āϏāĻŋ āύā§āϝāĻžāύā§-āϏā§āĻā§āύā§āĻĄā§ āύā§āĻŽā§ āĻāϏā§āĨ¤ āϤāĻŦā§ āĻĻāĻŋāύ āĻļā§āώ⧠(Market close āĻšāϞā§) āĻāĻ āĻŽā§āĻŽāϰāĻŋ āĻĄā§āĻāĻžāĻā§āϞ⧠āĻšāĻžāϰā§āĻĄāĻĄāĻŋāϏā§āĻ āĻāĻŋ āϤā§āϤāĻŋāĻ āĻā§āϰā§āϝāĻžāĻĄāĻŋāĻļāύāĻžāϞ āĻāύā§āĻāĻžāϰāĻĒā§āϰāĻžāĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠(Oracle/DB2) āϏā§āĻĨāĻžāϝāĻŧā§āĻāĻžāĻŦā§ āϏā§āĻā§āϰ (Archive) āĻāϰāĻž āĻšāϝāĻŧāĨ¤
How do you ensure data consistency for real-time prices?â
āϏā§āĻāĻā§āϰ āĻāĻŋāĻ (Tick) āĻĒā§āϰāĻžāĻāϏ āĻĒā§āϰāϤāĻŋ āĻĢā§āϰā§āϝāĻžāĻāĻļāύ āĻ āĻĢ āϏā§āĻā§āύā§āĻĄā§ āĻā§āĻā§āĻ āĻšāϝāĻŧāĨ¤
- āĻāϰ āĻāύāϏāĻŋāϏā§āĻā§āύā§āϏāĻŋ āϰāĻžāĻāϤ⧠āĻĒā§āϰāĻžāĻāϏ āĻāĻŋāĻāĻā§āϞ⧠Stream Processing (Kafka / Flink) āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āϏā§āĻā§āϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ Time-series Database (āϝā§āĻŽāύ InfluxDB) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻžāϤ⧠āϏāĻŽāϝāĻŧā§āϰ āύāĻŋāĻā§āĻāϤ āĻā§āϰā§āϝāĻžāĻāĻŋāĻ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻĢā§āϰāύā§āĻāĻāύā§āĻĄā§ āĻāϝāĻŧā§āĻŦāϏāĻā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āĻļ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
How do you handle order matching?â
āĻāĻāĻŋ āĻŽā§āϞāϤ āĻĄāĻžāĻāĻžāĻŦā§āϏ āύāϝāĻŧ, āĻŦāϰāĻ āĻāĻāĻāĻŋ āϏā§āĻĒā§āĻļāĻžāϞ āϏāĻĢāĻāĻāϝāĻŧā§āϝāĻžāϰ āĻāύāϏā§āĻĒā§āĻ, āϝāĻžāĻā§ Limit Order Book āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻŋ āĻĻā§āĻāĻŋ Priority Queues (Max-heap for Bids, Min-heap for Asks) āύāĻŋāϝāĻŧā§ āĻāĻ āĻŋāϤāĨ¤
- āϝāĻāύ āύāϤā§āύ āĻŦāĻžāĻ (Buy) āĻŦāĻž āϏā§āϞ (Sell) āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϏā§, RAM āĻ āĻĨāĻžāĻāĻž āĻāĻ āĻ āϰā§āĻĄāĻžāϰ āĻŦā§āĻ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻā§āĻ āĻāϰ⧠(Pro-Rata āĻŦāĻž First-In-First-Out āĻŦā§āϏāĻŋāϏā§)āĨ¤
- āĻŽā§āϝāĻžāĻ āĻšāϞ⧠āĻāĻāĻāĻŋ Trade āĻāĻā§āύā§āĻ āĻā§āĻĒāύā§āύ āĻšāϝāĻŧ āĻāĻŦāĻ āϤāĻž Kafka āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϏāĻŋāĻā§āĻā§āϰā§āύāĻžāϏāϞāĻŋ āĻĒāĻžāϰā§āĻŽāĻžāύā§āύā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŦāĻž āϞā§āĻāĻžāϰ⧠āϏā§āĻ āĻšāϤ⧠āĻāϞ⧠āϝāĻžāϝāĻŧāĨ¤
150. Design a hospital management system databaseâ
āĻšāϏāĻĒāĻŋāĻāĻžāϞ āϏāĻŋāϏā§āĻā§āĻŽā§ āϏā§āĻĒāĻŋāĻĄ āĻŦāĻž āϰāĻŋāϝāĻŧā§āϞ-āĻāĻžāĻāĻŽā§āϰ āĻā§āϝāĻŧā§ āĻĄāĻžāĻāĻž āĻĒā§āϰāĻžāĻāĻā§āϏāĻŋ, āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻāĻŦāĻ āĻĄā§āĻāĻžāϰ āĻ āĻĨā§āύā§āĻāĻŋāϏāĻŋāĻāĻŋ āϏāĻŦāĻžāϰ āĻāĻĒāϰ⧠āĻĨāĻžāĻā§āĨ¤
How do you handle patient privacy (HIPAA compliance)?â
HIPAA(Health Insurance Portability and Accountability Act) āĻāĻāύ āĻŽā§āύ⧠āĻāϞāĻžāϰ āĻāύā§āϝ āĻĄā§āĻāĻžāϰ āϏā§āϰāĻā§āώāĻžāϝāĻŧ āĻāĻŋāϰ⧠āĻāϞāĻžāϰā§āύā§āϏ āύā§āϤāĻŋ āĻŽāĻžāύāϤ⧠āĻšāϝāĻŧāĨ¤
- Encryption Always: āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĄā§āĻāĻž (At-rest) āĻāĻŦāĻ āĻāύā§āĻāĻžāϰāύā§āĻā§ āĻĄā§āĻāĻž (In-transit) āϏāĻŦ āϏāĻŽāϝāĻŧ āĻšāĻžāϝāĻŧā§āϏā§āĻ āϞā§āĻā§āϞā§āϰ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ (āϝā§āĻŽāύ AES-256) āĻĨāĻžāĻāϤ⧠āĻšāϝāĻŧāĨ¤
- Data Masking āĻ Column Level Encryption: āϰā§āĻā§āϰ āύāĻžāĻŽ, āĻŦā§āϞāĻžāĻĄ āϰāĻŋāĻĒā§āϰā§āĻ, āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āϏā§āύāϏāĻŋāĻāĻŋāĻ āĻāϞāĻžāĻŽāĻā§āϞ⧠āĻāĻŽāύāĻāĻžāĻŦā§ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāύāĻā§āϰāĻŋāĻĒā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§ āϝā§, āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύā§āϏā§āĻā§āϰā§āĻāϰ āύāĻŋāĻā§āĻ āϏāϰāĻžāϏāϰāĻŋ āĻā§āϝāĻŧā§āϰāĻŋ āĻāϰ⧠āϤāĻž āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻ āĻĨāϰāĻžāĻāĻāĻĄ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻāĻžāĻā§ āĻĄāĻŋāĻā§āϰāĻŋāĻĒāĻļāύ-āĻāĻŋ (Key) āĻĨāĻžāĻā§āĨ¤
- Audit Logs: āĻĒā§āϰāϤā§āϝā§āĻāĻāĻŋ Read/Write āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϝāĻŧ āϞāĻ āĻā§āĻŦāĻŋāϞ āϰāĻžāĻāĻž āĻšāϝāĻŧ (āĻā§, āĻāĻāύ, āĻā§āύ āĻāĻāĻĒāĻŋ āĻĨā§āĻā§ āϰā§āĻā§āϰ āϰāĻŋāĻĒā§āϰā§āĻ āĻĻā§āĻā§āĻā§ āĻŦāĻž āĻā§āĻā§āĻ āĻāϰā§āĻā§)āĨ¤
How do you manage appointment scheduling?â
- āĻĄāĻžāĻāĻžāĻŦā§āϏā§
doctors,patients,appointments, āĻāĻŦāĻtime_slotsāĻā§āĻŦāĻŋāϞ āĻĨāĻžāĻā§āĨ¤ - āĻāĻāĻāύ āĻĄāĻžāĻā§āϤāĻžāϰ āĻāĻāĻ āϏāĻŽāϝāĻŧā§ āĻĻā§āĻāύāĻā§ āϏāĻŽāϝāĻŧ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, āϤāĻžāĻ āĻĄāĻžāĻŦāϞ āĻŦā§āĻāĻŋāĻ āĻ ā§āĻāĻžāϤ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āϞā§āĻā§āϞā§
UNIQUE(doctor_id, appointment_date, time_slot_id)āĻāύāϏā§āĻā§āϰā§āĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āϰāĻŋāϞāĻžāĻļāύāĻžāϞ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϞāĻ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰ⧠āĻā§āϰāĻžāύāĻā§āĻāĻļāύāĻžāϞ āĻāύā§āĻā§āĻā§āϰāĻŋāĻāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
How do you handle medical records and history?â
āϰā§āĻā§āϰ āĻŽā§āĻĄāĻŋāĻā§āϞ āϰā§āĻāϰā§āĻĄ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĻā§āĻāĻŋ āĻ āĻāĻļā§ āĻŦāĻŋāĻāĻā§āϤ:
- EHR (Electronic Health Record): āĻĒā§āϰā§āϏāĻā§āϰāĻŋāĻĒāĻļāύ, āĻ āĻŦāĻāĻžāϰāĻā§āĻļāύ, āĻĄāĻžāϝāĻŧāĻžāĻāύā§āϏāĻŋāϏ āĻāϏāĻŦ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰā§āĻĄ āĻĄā§āĻāĻž RDBMS āĻ āϰā§āĻā§āϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻŽāĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĢāĻžāĻāϞ (X-Ray, MRI Scans): āĻāĻā§āϞ⧠āĻŦāĻŋāĻļāĻžāϞ āϏāĻžāĻāĻā§āϰ āĻĢāĻžāĻāϞāĨ¤ āĻāĻā§āϞ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āύāĻž āϰā§āĻā§ Secure Object Storage āĻŦāĻž PACS (Picture Archiving and Communication System) āĻ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻŽā§āϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāĻ āĻĢāĻžāĻāϞā§āϰ āĻāύāĻā§āϰāĻŋāĻĒā§āĻā§āĻĄ āϞā§āĻā§āĻļāύ āĻ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻā§āĻā§āύ āϰāĻžāĻāĻž āĻšāϝāĻŧāĨ¤
196. Design a database system that can handle 1 million writes per secondâ
āϏāĻžāϧāĻžāϰāĻŖ āĻāĻāĻāĻŋ RDBMS (āϝā§āĻŽāύ MySQL āĻŦāĻž PostgreSQL) āϏāϰā§āĻŦā§āĻā§āĻ ā§Ģ āĻšāĻžāĻāĻžāϰ āĻĨā§āĻā§ ā§§ā§Ļ āĻšāĻžāĻāĻžāϰ āϰāĻžāĻāĻ/āϏā§āĻā§āύā§āĻĄ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻā§ ā§§ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ (ā§§ā§Ļ āϞāĻžāĻ) āĻ āύāĻŋāϤ⧠āĻšāϞ⧠āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻā§āĻā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
Architecture choices and trade-offs?â
ā§§ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ āϰāĻžāĻāĻ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāϤ⧠āĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ Distributed NoSQL Database āĻāϰ āĻĻāĻŋāĻā§ āĻā§āĻāĻāϤ⧠āĻšāĻŦā§āĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻŋāϞā§āĻā§āĻ: Apache Cassandra āĻŦāĻž ScyllaDB (LSM-Tree āĻĄāĻžāĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ)āĨ¤ āĻāϰāĻž āĻŽā§āĻŽāϰāĻŋāϤ⧠(MemTable) āϰāĻžāĻāĻ āĻāϰ⧠āĻāĻŦāĻ āĻĒāϰ⧠āĻšāĻžāϰā§āĻĄāĻĄāĻŋāϏā§āĻā§ āϏāĻŋāĻā§āϝāĻŧā§āύā§āϏāĻŋāϝāĻŧāĻžāϞāĻŋ āϞā§āĻā§ (SSTable), āϝāĻž āĻŦāĻŋāĻļāĻžāϞ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āϰāĻžāĻāĻ āύā§āϝāĻŧāĻžāϰ āĻāύā§āϝ āĻŦā§āϏā§āĻāĨ¤
- āĻŽā§āϏā§āĻ āĻāĻŋāĻ āĻŦāĻžāĻĢāĻžāϰ: āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāϰāĻž āϏāϰāĻžāϏāϰāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĄā§āĻāĻž āύāĻž āĻĒāĻžāĻ āĻŋāϝāĻŧā§ Apache Kafka āĻāϰ āĻŽāϤ⧠āĻšāĻžāĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻž āύā§āϏ āĻŽā§āϏā§āĻ āĻŦā§āϰā§āĻāĻžāϰ⧠āĻĄā§āĻāĻž āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āĻāĻžāĻĢāĻāĻž āĻāϰāĻžāĻŽāϏ⧠āĻŽāĻŋāϞāĻŋāϝāĻŧāύ āĻāĻā§āύā§āĻ āĻāύāĻā§āϏā§āĻ (Ingest) āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻāϰāĻĒāϰ āĻāύāĻāĻŋāĻāĻŽāĻžāϰāĻā§āϞ⧠āĻāĻžāĻĢāĻāĻž āĻĨā§āĻā§ āĻĄā§āĻāĻž āύāĻŋāϝāĻŧā§ āĻŦā§āϝāĻžāĻ (Batch) āϤā§āϰāĻŋ āĻāϰ⧠āĻā§āϝāĻžāϏāĻžāύā§āĻĄā§āϰāĻžāϤ⧠āĻāϏāĻŋāĻā§āĻā§āϰā§āύāĻžāϏāϞāĻŋ āϰāĻžāĻāĻ āĻāϰā§āĨ¤
- Trade-offs: āĻāϤ āĻšāĻžāĻ āϰāĻžāĻāĻā§ Strong Consistency āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻž āĻ āϏāĻŽā§āĻāĻŦāĨ¤ āϤāĻžāĻ Eventual Consistency (āĻĻā§āϰāĻŋāϤ⧠āĻĄā§āĻāĻž āĻāĻĒāĻĄā§āĻ āĻļā§ āĻāϰāĻž) āĻŽā§āύ⧠āύāĻŋāϤ⧠āĻšāĻŦā§āĨ¤ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāϝāĻŧā§āύ (Join) āĻŦāĻž āĻĢā§āϞā§āĻā§āϏāĻŋāĻŦāϞ āĻā§āϝāĻŧā§āϰāĻŋ āĻāϰ āĻāĻļāĻž āĻā§āĻĄāĻŧā§ āĻĻāĻŋāϝāĻŧā§ āĻĄāĻŋāύāϰā§āĻŽāĻžāϞāĻžāĻāĻāĻĄ (Denormalized) āĻŽāĻĄā§āϞ āĻĢāϞ⧠āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
Consistency vs availability decisions?â
CAP Theorem āĻ āύā§āϝāĻžāϝāĻŧā§ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻšāϝāĻŧ CP āĻ āĻĨāĻŦāĻž AP āĻšāĻŦā§āĨ¤ ā§§ā§Ļ āϞāĻžāĻ āϰāĻžāĻāĻā§āϰ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϝā§āύ āĻāĻāύ⧠āĻĄāĻžāĻāύ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻ āĻāĻāĻŋāĻā§ AP (Availability & Partition Tolerance) āĻŦāĻžāύāĻžāύ⧠āĻšāϝāĻŧāĨ¤ āĻ āϰā§āĻĨāĻžā§, āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻā§ āϏāĻŽāϏā§āϝāĻž āĻšāϞā§āĻ āĻĄāĻžāĻāĻž āϰāĻŋāϏāĻŋāĻ āĻāϰāĻž āĻŦāύā§āϧ āĻšāĻŦā§ āύāĻžāĨ¤
How do you measure and verify performance?â
āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āϝāĻžāĻāϝāĻŧāĻžāϰ āĻāĻā§ āĻŦā§āϝāĻžāĻĒāĻ āϏā§āĻā§āϰā§āϏ āĻā§āϏā§āĻāĻŋāĻ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤
- Tools:
YCSB (Yahoo! Cloud Serving Benchmark)āĻŦāĻžApache JMeterāĻĻāĻŋāϝāĻŧā§ āϞāĻžāĻ āϞāĻžāĻ āĻĢā§āĻāĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻā§āύāĻžāϰā§āĻ āĻāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻā§āώāĻŽāϤāĻž āĻŽāĻžāĻĒāĻž āĻšāϝāĻŧāĨ¤ - Metrics:
- Throughput (Writes per second).
- P99 Latency (⧝⧝% āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϤ āĻŽāĻŋāϞāĻŋ-āϏā§āĻā§āύā§āĻĄā§ āϏāϞāĻ āĻšāϞā§)āĨ¤
- CPU, RAM, Disk I/O (āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻā§āĻĨāĻžāϝāĻŧ āĻŦāĻāϞāύā§āĻ āĻšāĻā§āĻā§ āϤāĻž āĻĻā§āĻāĻž)āĨ¤
197. Database design for a global app (Users across continents)â
āϝāĻāύ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻāĻŽā§āϰāĻŋāĻāĻžāϝāĻŧ āĻšā§āϏā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻŦāĻžāĻāϞāĻžāĻĻā§āĻļā§āϰ āĻāĻāĻāĻžāϰ āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϤāĻāύ āĻĄā§āĻāĻž āĻā§āϰāĻžāĻā§āϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻžāϝāĻŧ ⧍ā§Ģā§Ļ āĻŽāĻŋāϞāĻŋ-āϏā§āĻā§āύā§āĻĄ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϞā§āĻā§āύā§āϏāĻŋ āĻšāϝāĻŧ, āϝāĻž āĻāĻāĻāĻžāϰ āĻāĻā§āϏāĻĒā§āϰāĻŋāϝāĻŧā§āύā§āϏ āĻāϰ āĻŽāĻāĻžāĻŦā§ āύāώā§āĻ āĻāϰā§āĨ¤
Multi-region deployment strategies?â
āĻāϰ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧠āĻā§āϞā§āĻŦāĻžāϞāĻŋ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϤā§āϰāĻŋ āĻāϰāĻžāĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻāĻĒāĻŋ (Replicas) āĻĒā§āĻĨāĻŋāĻŦā§āϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĒā§āϰāĻžāύā§āϤ⧠(āϝā§āĻŽāύ: āĻāĻŽā§āϰāĻŋāĻāĻž, āĻāĻāϰā§āĻĒ, āĻāĻļāĻŋāϝāĻŧāĻž) āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāĨ¤
- Google Cloud Spanner, CockroachDB āĻŦāĻž Amazon DynamoDB (Global Tables) āĻāϰ āĻŽāϤ⧠āĻā§āϞā§āĻŦāĻžāϞ āĻā§āϞāĻžāĻāĻĄ-āύā§āĻāĻŋāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻžāϰāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻĄā§āĻāĻžāĻā§ āϰāĻŋāϝāĻŧā§āϞ āĻāĻžāĻāĻŽā§ āĻāĻāĻžāϧāĻŋāĻ āϰāĻŋāĻāĻŋāĻāύ⧠āϏāĻŋāĻā§āĻ (Replicate) āĻāϰ⧠āϰāĻžāĻā§āĨ¤ āĻāĻļāĻŋāϝāĻŧāĻžāϰ āĻāĻāĻāĻžāϰ āϝāĻāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϰā§, āϤāĻāύ āϤāĻž āĻāĻŽā§āϰāĻŋāĻāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ⧠āϝāĻžāϝāĻŧ āύāĻž, āĻŦāϰāĻ āϏāĻŋāĻā§āĻāĻžāĻĒā§āϰ āĻŦāĻž āĻŽā§āĻŽā§āĻŦāĻžāĻāϝāĻŧā§āϰ āϞā§āĻāĻžāϞ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻŋāϝāĻŧā§ āĻĒāĻĄāĻŧā§, āĻĢāϞ⧠āĻŽāĻŋāϞāĻŋ-āϏā§āĻā§āύā§āĻĄā§ āϰā§āϏāĻĒāύā§āϏ āĻāϏā§āĨ¤
Data residency and compliance requirements?â
āĻāĻŋāĻā§ āĻāĻŋāĻā§ āĻĻā§āĻļā§āϰ (āϝ ā§āĻŽāύ āĻāĻāϰā§āĻĒāĻŋāϝāĻŧāĻžāύ āĻāĻāύāĻŋāϝāĻŧāύā§āϰ) āĻāĻāύ āĻāĻā§ āϝā§, āϤāĻžāĻĻā§āϰ āύāĻžāĻāϰāĻŋāĻāĻĻā§āϰ āĻĄā§āĻāĻž āϤāĻžāĻĻā§āϰ āĻā§āĻā§āϞāĻŋāĻ āϏā§āĻŽāĻžāύāĻžāϰ āĻŦāĻžāĻāϰ⧠āϏā§āĻ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤
- āĻāϰ āĻāύā§āϝ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠Geo-partitioning (āĻŦāĻž Row-level pinning) āϏā§āĻā§āϰā§āϝāĻžāĻā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āϰ āϞā§āĻā§āϞā§āĻ āĻāĻŽāύāĻāĻžāĻŦā§ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āϝā§, āϝāĻĻāĻŋ āĻāĻāĻāĻžāϰā§āϰ
country_code= "āĻāĻžāϰā§āĻŽāĻžāύāĻŋ" āĻšāϝāĻŧ, āϤāĻŦā§ āϤāĻžāϰ āĻĄā§āĻāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāϰā§āĻĒā§āϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āĻ āϏā§āĻ āĻšāĻŦā§, āĻ āύā§āϝ āĻā§āύ⧠āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āϤāĻžāϰ āϰā§āĻĒā§āϞāĻŋāĻāĻž āĻŦāĻž āĻāĻĒāĻŋ āϝāĻžāĻŦā§ āύāĻžāĨ¤
Conflict resolution in distributed writes?â
āĻāĻŽā§āϰāĻŋāĻāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻ āĻāĻāĻāĻžāϰ āĻāĻāĻāĻŋ āĻĄāĻā§āĻŽā§āύā§āĻā§ āϞāĻŋāĻāϞ⧠"A", āĻ āĻŋāĻ āĻāĻāĻ āĻŽāĻŋāϞāĻŋ-āϏā§āĻā§āύā§āĻĄā§ āĻāĻļāĻŋāϝāĻŧāĻžāϰ āĻāĻāĻāĻžāϰ āĻāĻāĻ āĻĄāĻā§āĻŽā§āύā§āĻā§ āϞāĻŋāĻāϞ⧠"B"āĨ¤ āĻāĻāύ āĻā§āϞā§āĻŦāĻžāϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāĻžāϰ āϰāĻžāĻāĻāĻāĻž āĻā§āϰāĻšāĻŖ āĻāϰāĻž āĻšāĻŦā§?
- āϏāĻŽāĻžāϧāĻžāύ ā§§ (TrueTime): Google Spanner āĻāϰ āĻŽāϤ⧠āϏāĻŋāϏā§āĻā§āĻŽ āĻĢāĻŋāĻāĻŋāĻā§āϝāĻžāϞ āĻ ā§āϝāĻžāĻāĻŽāĻŋāĻ āĻāĻĄāĻŧāĻŋ āĻ āĻāĻŋāĻĒāĻŋāĻāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āϞā§āĻŦāĻžāϞ āĻāĻžāĻāĻŽ āύāĻŋāĻā§āĻāϤ āϰāĻžāĻā§ (TrueTime API), āϝāĻžāϰ āĻĢāϞ⧠āĻāĻāĻĻāĻŽ āĻŽāĻŋāϞāĻŋ-āϏā§āĻā§āύā§āĻĄā§āϰ āĻšāĻŋāϏāĻžāĻŦ āĻ āύā§āϝāĻžāϝāĻŧā§ āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻ āĻāϰāĻž āϝāĻžāϝāĻŧ (Strict Consistency)āĨ¤
- āϏāĻŽāĻžāϧāĻžāύ ⧍ (LWW / Vector Clocks): Cassandra āĻŦāĻž āĻ āύā§āϝāĻžāύā§āϝ āϏāĻŋāϏā§āĻā§āĻŽā§ Last-Writer-Wins āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ āĻŦāĻž Vector Clocks āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϏāϞāĻ āĻāϰā§, āĻ āĻĨāĻŦāĻž āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϞā§āĻā§āϞ⧠āĻĻā§āĻā§ āĻĄā§āĻāĻžāĻ āĻĒāĻžāĻ āĻŋāϝāĻŧā§ āĻĻāĻŋāϝāĻŧā§ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻā§ āĻĄāĻŋāϏāĻŋāĻļāύ āύāĻŋāϤ⧠āĻŦāϞā§āĨ¤
198. How do you implement GDPR compliance in database design?â
GDPR (General Data Protection Regulation) āĻāĻāϰā§āĻĒā§āϰ āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻ ā§āϰ āύāĻŋāϝāĻŧāĻŽāĨ¤ āĻāĻāĻŋ āĻā§āĻā§ āĻĢā§āϞāϞ⧠āĻā§āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻāϝāĻŧā§āϰ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻ āĻāĻļ āĻāϰāĻŋāĻŽāĻžāύāĻž āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϞā§āĻā§āϞ āĻĨā§āĻā§āĻ "Privacy by Design" āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤
Right to be forgotten (Right to erasure) implementation?â
āĻāĻŋāĻĄāĻŋāĻĒāĻŋāĻāϰ āĻāϰ āϧāĻžāϰāĻž āĻ āύā§āϝāĻžāϝāĻŧā§, āĻāĻāĻāĻžāϰ āĻāĻžāĻāϞ⧠āĻā§āĻŽā§āĻĒāĻžāύāĻŋāĻā§ āϤāĻžāϰ āϝāĻžāĻŦāϤā§āϝāĻŧ āĻĄā§āĻāĻž āĻāĻŋāϰāϤāϰ⧠āĻŽā§āĻā§ āĻĢā§āϞāĻžāϰ āύāĻŋāϰā§āĻĻā§āĻļ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
- Soft Delete āĻāϞāĻŦā§ āύāĻž: āĻāĻŽāϰāĻž āĻ
āύā§āĻ āϏāĻŽāϝāĻŧ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĄāĻŋāĻāĻžāĻāύā§
deleted_atāĻĢāĻŋāϞā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āĻĄā§āĻāĻž āĻšāĻžāĻāĻĄ āĻāϰ⧠āϰāĻžāĻāĻŋ (Soft Delete), āĻāĻŋāύā§āϤ⧠āĻĄā§āĻāĻž āĻšāĻžāϰā§āĻĄāĻĄāĻŋāϏā§āĻā§āĻ āĻĨā§āĻā§ āϝāĻžāϝāĻŧāĨ¤ āĻāĻŋāĻĄāĻŋāĻĒāĻŋāĻāϰ-āĻ āĻāĻāĻŋ āĻ āĻŦā§āϧāĨ¤ - Hard Delete Mechanism: āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϏāϞ⧠āĻāĻāĻāĻžāϰā§āϰ PII (Personally Identifiable Information āϝā§āĻŽāύ āύāĻžāĻŽ, āĻāĻŽā§āĻāϞ, āĻ āĻŋāĻāĻžāύāĻž) āĻĒā§āϰāĻžāĻāĻŽāĻžāϰāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ, āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽ, āĻāĻŦāĻ āĻā§āϝāĻžāĻļ āĻĨā§āĻā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻĄāĻŋāϞāĻŋāĻ āĻŦāĻž āϏā§āĻā§āϰāĻžāĻŦ (Scrubbed) āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤
- āĻŦāĻŋāĻĻā§āĻļāĻŋ āϞāĻŋāĻā§āϝāĻžāϞ āĻāϏā§āϝā§: āϝāĻĻāĻŋ āĻāĻāĻāĻžāϰā§āϰ āĻāĻāĻĄāĻŋāϰ āϏāĻžāĻĨā§ āĻĢāĻžāĻāύāĻžāύā§āϏāĻŋāϝāĻŧāĻžāϞ āĻšāĻŋāϏā§āĻā§āϰāĻŋ (āϝāĻž āĻāĻŦāĻžāϰ āĻŦā§āϝāĻžāĻāĻāĻŋāĻ āĻāĻāύ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻ) āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻĨāĻžāĻā§, āϤāĻŦā§ āĻāĻāĻāĻžāϰā§āϰ āύāĻžāĻŽ/āĻāĻŽā§āĻāϞ āĻŽā§āĻā§ āĻĢā§āϞ⧠āϤāĻžāĻā§ Anonymize (āĻ āĻā§āĻāĻžāϤāύāĻžāĻŽāĻž āĻāĻāĻĄāĻŋāϤ⧠āĻāύāĻāĻžāϰā§āĻ) āĻŦāĻž Hash āĻāϰ⧠āĻĻā§āϝāĻŧāĻž āĻšāϝāĻŧ, āϝāĻžāϤ⧠āĻŦā§āĻāĻž āύāĻž āϝāĻžāϝāĻŧ āĻĄā§āĻāĻžāĻāĻŋ āĻāĻžāϰāĨ¤
Data portability requirements?â
āĻāĻāĻāĻžāϰ āϤāĻžāϰ āϏāĻŦ āĻĄā§āĻāĻž āĻĻā§āĻāϤ⧠āĻŦāĻž āĻ āύā§āϝ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§ āύā§āϝāĻŧāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§āĻā§āĻŦāϞ (JSON/XML) āĻĢāϰāĻŽā§āϝāĻžāĻā§ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āϰāĻžāĻā§āĨ¤
- āϏāĻŽāĻžāϧāĻžāύ: āĻŦā§āϝāĻžāĻāĻāύā§āĻĄā§ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϞāĻŋāĻāϤ⧠āĻšāϝāĻŧ, āϝāĻž āĻāĻāĻāĻžāϰā§āϰ āĻāĻāĻĄāĻŋ āϧāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ, āĻ āĻŦāĻā§āĻā§āĻ āϏā§āĻā§āϰā§āĻ āϏāĻŦāĻāĻžāύ⧠āĻā§āϝāĻŧā§āϰāĻŋ āĻāϰ⧠āϤāĻžāϰ āĻĄā§āĻāĻžāϰ āĻāĻāĻāĻŋ āĻāĻŽāĻĒā§āϞāĻŋāĻ āĻāĻŋāĻĒ (Zip) āĻŦāĻž JSON āĻĢāĻžāĻāϞ āĻā§āύāĻžāϰā§āĻ āĻāϰ⧠āϤāĻžāĻā§ āĻĄāĻžāĻāύāϞā§āĻĄā§āϰ āĻŦā§āϝāĻŦāϏā§āĻĨāĻž āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
Consent management in databases?â
āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĒā§āϰāĻŽāĻžāĻŖ āϰāĻžāĻāϤ⧠āĻšāĻŦā§ āϝ⧠āĻāĻāĻāĻžāϰ āĻāĻŦā§, āĻā§āύ āĻĄā§āĻāĻž āĻĒā§āϰāϏā§āϏ āĻāϰāĻžāϰ āϏāĻŽā§āĻŽāϤāĻŋ āĻĻāĻŋāϝāĻŧā§āĻā§āĨ¤
- āĻāĻāĻāĻŋ
user_consentsāĻā§āĻŦāĻŋāϞ āĻĨāĻžāĻāĻŦā§āĨ¤ āĻā§āĻŦāĻŋāϞāĻāĻŋāϤ⧠āĻļā§āϧ⧠āĻšā§āϝāĻžāĻ/āύāĻž āύāϝāĻŧ, āĻŦāϰāĻ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ āĻāĻŦāĻ āϏāĻŽā§āĻŽāϤāĻŋāϰ āĻāĻžāϰā§āĻļāύ āĻĨāĻžāĻāĻŦā§āĨ¤ ė āĻāĻžāϰ āϝāĻĻāĻŋ āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āϤāĻžāϰ āϏāĻŽā§āĻŽāϤāĻŋ āϰāĻŋāĻŽā§āĻ āĻŦāĻž āĻāĻāĻĨāĻĄā§āϰ (Withdraw consent) āĻāϰā§, āϏā§āĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻ āĻĄāĻŋāĻ āϞāĻā§ āϏā§āĻ āϰāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤ āĻĄāĻžāĻāĻž āĻĒā§āϰāϏā§āϏ āĻāϰāĻžāϰ āĻā§āϝāĻŧā§āϰāĻŋ āĻāĻžāϞāĻžāύā§āϰ āĻāĻā§ āϏāĻŦāϏāĻŽāϝāĻŧ āĻāĻ āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻŋāĻ āĻĨā§āĻā§ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻā§āĻ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤
199. Design a database disaster recovery solution with 99.99% availabilityâ
99.99% Availability (āϝāĻžāĻā§ āĻŦāϞāĻž āĻšāϝāĻŧ "Four Nines") āĻŽāĻžāύ⧠āĻšāϞ⧠āĻāĻĒāύāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻŦāĻāϰ⧠āĻŽā§āϝāĻžāĻā§āϏāĻŋāĻŽāĻžāĻŽ ā§Ģ⧍ āĻŽāĻŋāύāĻŋāĻ āĻĄāĻžāĻāύ āĻĨāĻžāĻāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĒāĻžāĻŦā§āĨ¤ āĻāϰ āĻŦā§āĻļāĻŋ āĻĄāĻžāĻāύ āĻšāϞ⧠āĻā§āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻŦāĻŋāĻļāĻžāϞ āϞāϏ āĻšāĻŦā§āĨ¤
RPO and RTO requirements?â
āĻĄāĻŋāĻāĻžāϏā§āĻāĻžāϰ āϰāĻŋāĻāĻāĻžāϰāĻŋāϰ āĻā§āώā§āϤā§āϰ⧠āϏāĻŋāϏā§āĻā§āĻŽ āĻĢā§āĻāϞ āĻāϰāϞ⧠āĻĻā§āĻāĻāĻž āĻāĻŋāύāĻŋāϏ āύāĻŋāϝāĻŧā§ āĻāĻžāĻŦāϤ⧠āĻšāϝāĻŧ:
- RTO (Recovery Time Objective): āϏāĻŋāϏā§āĻā§āĻŽ āĻā§āϰā§āϝāĻžāĻļ āĻāϰāĻžāϰ āĻĒāϰ āĻāϤ āĻĻā§āϰā§āϤ āĻāĻŦāĻžāϰ āϰāĻŋāĻāĻāĻžāϰ āĻšāϝāĻŧā§ āϞāĻžāĻāĻ āĻšāĻŦā§? (āĻĢā§āϰ āύāĻžāĻāύāϏ āĻāĻāĻŋāĻ āĻāϰāϤ⧠āĻāĻ āĻāĻžāĻāĻŽ āĻāϝāĻŧā§āĻ āϏā§āĻā§āύā§āĻĄ āĻĨā§āĻā§ āĻŽā§āϝāĻžāĻā§āϏāĻŋāĻŽāĻžāĻŽ ā§Ģ āĻŽāĻŋāύāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰāĻŦā§)āĨ¤
- RPO (Recovery Point Objective): āĻā§āϰā§āϝāĻžāĻļ āĻāϰāĻžāϰ āĻāĻžāϰāĻŖā§ āĻāϤāĻā§āώāĻŖā§āϰ āĻĄā§āĻāĻž āϞāϏ āĻšāϝāĻŧā§āĻā§? (āĻāĻĻāϰā§āĻļ āĻĄāĻŋāĻāĻžāĻāύ⧠āĻāĻāĻŋ "Zero Data Loss" āĻšāĻŦā§)āĨ¤
Multi-cloud/Multi-region disaster recovery?â
āĻāĻāĻāĻŋ āĻĒā§āϰ⧠āĻĄā§āĻāĻž āϏā§āύā§āĻāĻžāϰ āĻŦāĻž āĻā§āϞāĻžāĻāĻĄ āϰāĻŋāĻāĻŋāĻāύ (āϝā§āĻŽāύ: AWS us-east-1 āĻ āĻā§āύāĻžāϰā§āĻāϰ āĻĢā§āĻāϞ āĻāϰ⧠āĻāĻā§āύ āϞāĻžāĻāϞā§) āĻĄāĻžāĻāύ āĻšāϝāĻŧā§ āĻā§āϞ⧠āĻŦāĻžāĻāĻāĻžāϰ āĻāĻĒāĻžāϝāĻŧ āĻā§?
- Active-Active Multi-Region Setup: āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻĒā§āϰāĻžāĻāĻŽāĻžāϰāĻŋ āĻāĻŦāĻ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻāϞāĻžāĻĻāĻž āĻāϞāĻžāĻĻāĻž āϰāĻŋāĻāĻŋāĻāύ⧠(āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻāĻŽā§āϰāĻŋāĻāĻžāϝāĻŧ, āĻāϰā§āĻāĻāĻŋ āĻāĻļāĻŋāϝāĻŧāĻžāϝāĻŧ) āĻŦāĻž āĻāϞāĻžāĻĻāĻž āĻā§āϞāĻžāĻāĻĄ āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ⧠(āĻāĻāĻāĻŋ AWS āĻ, āĻāϰā§āĻāĻāĻŋ Azure āĻ) āϰāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤
- āĻŽā§āĻāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āϰāĻŋāϝāĻŧā§āϞ āĻāĻžāĻāĻŽā§ (Synchronous āĻŦāĻž āĻĢāĻžāϏā§āĻ Asynchronous) āϰā§āĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāϞāϤ⧠āĻĨāĻžāĻāĻŦā§ āĻ āύā§āϝ āĻā§āϞāĻžāĻāĻĄā§āϰ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āĨ¤
- āĻŽā§āĻāύ āϏāĻžāϰā§āĻāĻžāϰ āĻĄāĻžāĻāύ āĻšāϞ⧠DNS Failover Route (āϝā§āĻŽāύ Route53) āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻāĻāĻžāϰā§āϰ āϏāĻŦ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻāĻā§ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋ āĻā§āϞāĻžāĻāĻĄ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĄāĻžāĻāϰā§āĻā§āĻ āĻāϰ⧠āĻĻā§āĻŦā§āĨ¤ āĻĢāϞ⧠āĻāĻāĻāĻžāϰ āĻĢā§āĻāϞ āĻšāĻāϝāĻŧāĻžāϰ āĻā§āϰāĻ āĻĒāĻžāĻŦā§ āύāĻžāĨ¤
Cost vs availability trade-offs?â
- 99.99% āĻāĻā§āĻāϞā§āϝāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋ āĻ āϰā§āĻāύ āĻāϰāϤ⧠āĻā§āϞ⧠āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ (Infrastructure) āĻŦā§āϝāϝāĻŧ āϤāĻŋāύ āĻĨā§āĻā§ āĻāĻžāϰ āĻā§āĻŖ āĻŦā§āĻĄāĻŧā§ āϝāĻžāϝāĻŧ (āĻāĻā§āĻ āĻāϤāĻŋāϰ āĻĒā§āϰāĻžāĻāĻā§āĻ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻāĻŋāĻ, āĻāĻāĻžāϧāĻŋāĻ āĻā§āϞāĻžāĻāĻĄ āĻĄā§āĻāĻž āϏā§āύā§āĻāĻžāϰ, āĻāĻā§āϏāĻā§āϰāĻž āĻĄāĻŋāϏā§āĻ āϏā§āĻĒā§āϏ)āĨ¤
- āϤāĻžāĻ āĻĄāĻŋāĻāĻžāĻāύāĻžāϰāĻā§ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϤ⧠āĻšāϝāĻŧâāĻŦāĻŋāĻāύā§āϏ⧠āϏāĻŋāϏā§āĻā§āĻŽ ā§§ā§Ļ āĻŽāĻŋāύāĻŋāĻ āĻĄāĻžāĻāύ āĻĨāĻžāĻāϞ⧠āϝ⧠āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻā§āώāϤāĻŋ āĻšāĻŦā§, āϤāĻžāϰ āĻā§āϝāĻŧā§ āĻāĻŋ āĻāĻ āĻāĻā§āϏāĻā§āϰāĻž āϏāĻžāϰā§āĻāĻžāϰ āĻŽā§āĻāύāĻā§āύā§āύā§āϏ āĻāϰāĻ āĻŦā§āĻļāĻŋ āύāĻžāĻāĻŋ āĻāĻŽ? āϝāĻĻāĻŋ āĻĄāĻžāĻāύāĻāĻžāĻāĻŽā§āϰ āĻā§āώāϤāĻŋāĻ āĻŦā§āĻļāĻŋ āĻšāϝāĻŧ, āϤāĻŦā§āĻ āĻāĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āϏāĻžāϰā§āĻĨāĻāĨ¤
200. How do you future-proof your database architecture?â
"Future-proofing" āĻŽāĻžāύ⧠āĻšāϞ⧠āĻāĻŽāύāĻāĻžāĻŦā§ āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāύā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āϏāĻžāĻāĻžāύā§, āϝā§āύ ā§Ģ-ā§§ā§Ļ āĻŦāĻāϰ āĻĒāϰ āĻā§āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻĄā§āĻāĻž ā§§ā§Ļā§Ļ āĻā§āĻŖ āĻŦā§āĻĄāĻŧā§ āĻā§āϞā§āĻ āĻŦāĻž āύāϤā§āύ āĻĒā§āϰāϝā§āĻā§āϤāĻŋ āĻāϏāϞā§āĻ āĻĒā§āϰ⧠āϏāĻŋāϏā§āĻā§āĻŽ āϰāĻŋāĻŦāĻŋāϞā§āĻĄ āĻāϰāϤ⧠āύāĻž āĻšāϝāĻŧāĨ¤
Technology evolution planning?â
āĻā§āĻāύā§āϞāĻāĻŋāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻ āĻŦāĻļā§āϝāĻŽā§āĻāĻžāĻŦā§āĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§ āĻāϰ āĻĨā§āĻā§ āĻŦāĻžāĻāĻāĻžāϤ⧠Microservices architecture āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻāĻŋ āĻŽāύā§āϞāĻŋāĻĨāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻā§āĻ āĻā§āĻ āϏāĻžāϰā§āĻāĻŋāϏ⧠āĻāĻžāĻ āĻāϰāĻžāĨ¤ āϝā§āĻŽāύ āĻŦāĻŋāϞāĻŋāĻ āϏāĻžāϰā§āĻāĻŋāϏ, āĻāĻāĻāĻžāϰ āϏāĻžāϰā§āĻāĻŋāϏ, āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āϏāĻžāϰā§āĻāĻŋāϏāĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻāϞāĻžāĻĻāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ (Database per service) āϰāĻžāĻāĻžāĨ¤ āĻāϤ⧠āĻāĻŦāĻŋāώā§āϝāϤ⧠āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āϏāĻžāϰā§āĻ āĻāύā§āύāϤ āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠Elasticsearch āĻŦāϏāĻžāϞā§āĻ āĻāϞāĻŦā§, āĻĒā§āϰ⧠āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻā§āϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤
Vendor lock-in mitigation strategies?â
āϝāĻĻāĻŋ āϏāĻŦ āĻāĻžāĻ āĻā§āϞāĻžāĻāĻĄ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āϏāĻžāϰā§āĻāĻŋāϏā§āϰ (āϝā§āĻŽāύ DynamoDB āĻŦāĻž AWS Aurora āĻāϰ āύāĻŋāĻāϏā§āĻŦ āĻĢāĻŋāĻāĻžāϰ) āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻāϰā§āύ, āϤāĻŦā§ āĻāĻžāϞ āϝāĻĻāĻŋ āϤāĻžāϰāĻž āĻĻāĻžāĻŽ ā§Š āĻā§āĻŖ āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ, āĻāĻĒāύāĻžāϰ āĻ āύā§āϝ āĻā§āĻĨāĻžāĻ āĻāϞ⧠āϝāĻžāĻāϝāĻŧāĻžāϰ āϏā§āĻŦāĻžāϧā§āύāϤāĻž āĻĨāĻžāĻāĻŦā§ āύāĻžāĨ¤ āĻāĻ āĻĢāĻžāĻāĻĻāĻā§ Vendor lock-in āĻŦāϞā§āĨ¤
- Data Access Layer / Repository Pattern: āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻā§āϰ āϞāĻāĻŋāĻā§āϰ āĻā§āϤāϰ⧠āϏāϰāĻžāϏāϰāĻŋ SQL āĻā§āϝāĻŧāĻžāϰāĻŋ āύāĻž āϞāĻŋāĻā§, āĻāĻāĻāĻŋ āϞā§āϝāĻŧāĻžāϰ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ (Interface / Abstract Layer)āĨ¤ āĻā§āĻĄ āĻļā§āϧ⧠āϏā§āĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āϏāĻžāĻĨā§ āĻāĻĨāĻž āĻŦāϞā§āĨ¤
- āĻāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏāĻāĻŋ āĻšāϝāĻŧāϤ⧠MySQL āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāύā§āĻā§āĻā§āĻĄ, āĻāĻŦāĻŋāώā§āϝāϤ⧠āϝāĻĻāĻŋ PostgreSQL āĻŦāĻž NoSQL āĻ āĻļāĻŋāĻĢāĻ āĻāϰāϤ⧠āĻšāϝāĻŧ, āϤāĻŦā§ āĻ ā§āϝāĻžāĻĒā§āϰ āĻŽā§āĻāύ āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻĻāϰāĻāĻžāϰ āύā§āĻ, āĻļā§āϧ⧠āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āĻāĻžāύā§āĻāĻļāύ āϞāĻāĻŋāĻāĻā§āĻā§ āĻĒāĻžāϞā§āĻāϞā§āĻ āĻāĻžāĻ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
How do you balance innovation with stability?â
- Core vs Edge Strategy: āĻāĻĒāύāĻžāϰ āĻā§āϰ āĻŦāĻŋāĻāύā§āϏā§āϰ āĻĄā§āĻāĻž (āĻĒā§āĻŽā§āύā§āĻ, āĻāĻāĻāĻžāϰ āĻŦā§āϝāĻžāϞā§āύā§āϏ, āĻā§āϰāĻŋāĻāĻŋāĻā§āϝāĻžāϞ āϞāĻāĻŋāĻ) āϏāĻŦāϏāĻŽāϝāĻŧ āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ, āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ, āĻŦā§āϰāĻŋāĻ āĻāĻŋāύā§āϤ⧠⧧ā§Ļā§Ļ% āϰāĻŋāϞāĻžāϝāĻŧā§āĻŦāϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠(āϝā§āĻŽāύ PostgreSQL) āϰāĻžāĻāĻŦā§āύāĨ¤
- āĻ āύā§āϝāĻĻāĻŋāĻā§ āĻāύā§āĻā§āĻļāύ, āϰā§āĻāĻŽā§āύā§āĻĄā§āĻļāύ āĻŦāĻž āϏāĻžāϰā§āĻ āĻĢāĻŋāĻāĻžāϰā§āϰ (Edge services) āĻāύā§āϝ āύāϤā§āύ āĻĒā§āϰāĻāύā§āĻŽā§āϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ (Vector Databases, AI Search) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āĻāĻžāϰāĻŖ āĻāĻā§āϞ⧠āĻā§āϰā§āϝāĻžāĻļ āĻāϰāϞā§āĻ āĻāĻāĻāĻžāϰā§āϰ āĻā§āĻŦ āĻŦā§āĻļāĻŋ āĻā§āώāϤāĻŋ āĻšāĻŦā§ āύāĻžāĨ¤ āĻāϤ⧠āϏā§āĻā§āϝāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻŽāĻĄāĻžāϰā§āύ āĻā§āĻāύā§āϞāĻāĻŋāĻ āĻāĻĒāĻā§āĻ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤