system_design_interview/glossary

glossary

dz / system_design_interview / glossary

Node Tree

Nodes

functional_requirement
content Functional Requirement: defines a function of a system or component, where a function is described as a summary/specification/statement of behavior between inputs and outputs
children system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/functional_requirements, system_design_interview/toc/01_proximity_service/step1/func_reqs, system_design_interview/toc/04_distributed_message_queue/step1/functional_requirements, system_design_interview/toc/02_nearby_friends/step1/func_reqs, non_functional_requirement
parents requirements_engineering, system_design_interview/glossary, systems_engineering, DDIA/glossary/functional_requirements
remarks Every system here begins with listing the functional and non-functional requirements
hyperlink https://en.wikipedia.org/wiki/Functional_requirement
flashcard (front) What is a functional requirement?
flashcard (back) A functional requirement is a requirement of a system that defines a function of a component, a behavior between inputs and outputs
location knowledge/system_design_interview.dz:699

systems_engineering
content Systems engineering: an interdisciplinary field of engineering and engineering management that focuses on how to design, integrate, and manage complex systems
children requirements_engineering, functional_requirement (context of)
hyperlink https://en.wikipedia.org/wiki/Systems_engineering
location knowledge/system_design_interview.dz:718

non_functional_requirement
content Non-functional requirement (NFR): a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors.
children system_design_interview/toc/01_proximity_service/step1/nonfunc_reqs, system_design_interview/references/NFR_examples, system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/non_functional_requirements, system_design_interview/toc/04_distributed_message_queue/step1/non_functional_requirements
parents requirements_engineering, functional_requirement, system_design_interview/glossary, DDIA/glossary/nonfunctional_requirements
hyperlink https://en.wikipedia.org/wiki/Non-functional_requirement
flashcard (front) what is non-functional requirement?
flashcard (back) A non-functional requirement is a requirement is used to judge the operation of a system, such as safety, security, performance, testability, etc.
location knowledge/system_design_interview.dz:725

requirements_engineering
content Requirements Engineering: the process of defining, documenting, and maintaining requirements in the engineering design process.
children engineering_design_process, non_functional_requirement, functional_requirement
parents systems_engineering, system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Requirements_engineering
flashcard (front) What is requirements engineering?
flashcard (back) The process of definining, documenting, and maintaining requirements in the engineering design process
location knowledge/system_design_interview.dz:750

engineering_design_process
content Engineering Design Process, or Engineering Method: is a common series of steps that engineers use in creating functional products and processes.
parents requirements_engineering
hyperlink https://en.wikipedia.org/wiki/Engineering_design_process
location knowledge/system_design_interview.dz:763

http_request_methods
content HTTP Request Methods: "verbs" in the HTTP protocol to indicate the desired action to be performed on the desired resource. Examples include GET, POST, PUT, and DELETE.
children system_design_interview/references/RFC2616_http_methods (Relevant section in RFC)
parents REST
hyperlink https://en.wikipedia.org/wiki/HTTP#Request_methods
location knowledge/system_design_interview.dz:770

REST
content REST: Representational State Transfer, is a software architectural style that was created to guide the design and development
children system_design_interview/toc/02_nearby_friends/step2/high_level_design/RESTful_API_servers, system_design_interview/toc/01_proximity_service/step2/api_design, http_request_methods (REST is commonly associated with HTTP-based APIs,utilizing HTTP methods or "verbs")
parents DDIA/glossary/REST
hyperlink https://en.wikipedia.org/wiki/REST
location knowledge/system_design_interview.dz:783

data_model
content Data Model: an abstract model that organizes data and standardizes how it relates to real world entities.
children system_design_interview/toc/01_proximity_service/step2/data_model, system_design_interview/toc/05_metrics_monitoring_and_alert_system/step2/data_model
parents DDIA/glossary/data_model
hyperlink https://en.wikipedia.org/wiki/Data_model
location knowledge/system_design_interview.dz:792

software_architecture
content Software Architecture: set of structures needed to reason about a software system and the discipline of creating such structures and systems.
hyperlink https://en.wikipedia.org/wiki/Software_architecture
location knowledge/system_design_interview.dz:798

RDBMS
content RDBMS: relational database management system.
children system_design_interview/tools/mysql
parents DDIA/glossary/relational_database, system_design_interview/glossary
location knowledge/system_design_interview.dz:812

load_balancing
content Load balancing: the process of distributing a set of tasks over a set of resources, with the aim of optimizing response time and avoiding unevenly overloading some compute nodes while others are left idle.
children system_design_interview/toc/02_nearby_friends/step2/high_level_design/load_balancer, system_design_interview/toc/01_proximity_service/step2/high_level_design/load_balancer
parents system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Load_balancing_(computing)
flashcard (front) What does a load balancer do?
flashcard (back) A load balancer is a component in a system that distributes a set of tasks over a set of resources.
location knowledge/system_design_interview.dz:817

QPS
content QPS: queries per second
parents system_design_interview/glossary
location knowledge/system_design_interview.dz:829

geohash
content Geohash: a string of letters and numbers used to represent a geographic location. It is a simple way to encode location data and is particularly useful for pinpointing specific locations.
children system_design_interview/toc/03_google_maps/step2/map_101, system_design_interview/toc/01_proximity_service/step2/algorithms/3_geohash
parents system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Geohash
location knowledge/system_design_interview.dz:833

quadtree
content quadtree: a tree data structure that partitions two-dimensional space by recursively subdividing it into four quadrants or regions. Each node in the tree has at most four children, and leaf nodes store data.
children system_design_interview/toc/01_proximity_service/step2/algorithms/4_quadtree
parents system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Quadtree
location knowledge/system_design_interview.dz:841

websocket
content WebSocket: a computer communications protocol, that allows for two-way, realtime interaction between a web browser and a server.
children system_design_interview/toc/02_nearby_friends/step2/high_level_design/websocket_servers
hyperlink https://en.wikipedia.org/wiki/WebSocket
flashcard (front) What is a websocket?
flashcard (back) A websocket is a computer communications protocol, that allows for two-way, realtime interaction between a web browser and a server.
location knowledge/system_design_interview.dz:861

distributed_cache
content Distributed Cache: extension of a the traditional concept of a cache used in a single locale. A distributed cache may span multiple servers so that it can grow in size and in transactional capacity.
parents system_design_interview/tools/redis, system_design_interview/glossary
flashcard (front) What is a distributed cache?
flashcard (back) Extending on the concept of a traditional cache in a single locale, a distributed cache is a cache that may span multiple servers so that it can grow in size and capacity. A distributed cache
location knowledge/system_design_interview.dz:883

message_broker
content Message Broker: an intermediary computer program that translates messages from one formal messaging protocol to another, enabling communication between software applications that use different communications protocols
parents system_design_interview/tools/redis, system_design_interview/glossary
flashcard (front) what is a message broker?
flashcard (back) A message broker is an intermediate program that granslates messages from one protocol to another.
location knowledge/system_design_interview.dz:897

publish_subscribe
content publish-subscribe: a messaging pattern where publishers categorize messages into classes that are received by subscribers.
children system_design_interview/toc/04_distributed_message_queue/step2/message_models/publish_subscribe, topic (in the publish/subscribe model, a message is,sent to a topic and received by the consumers,subscribing to this topic.)
hyperlink https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
location knowledge/system_design_interview.dz:917

geocoding
content Geocoding: the process of converting addresses to geographic coordinates
children system_design_interview/toc/03_google_maps/step2/map_101
hyperlink https://en.wikipedia.org/wiki/Address_geocoding
location knowledge/system_design_interview.dz:923

A_star_algorithm
content A* algorithm: A* (pronounced "A-star") is a graph traversal and pathfinding algorithm that is used in many fields of computer science due to its completeness, optimality, and optimal efficiency
children system_design_interview/toc/03_google_maps/step2/map_101/road_data_processing_navigation
hyperlink https://en.wikipedia.org/wiki/A*_search_algorithm
location knowledge/system_design_interview.dz:928

dijkstras_algorithm
content Dijkstra's algorithm is an algorithm for finding the shortest paths between nodes in a weighted graph, which may represent, for example, a road network.
hyperlink https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
location knowledge/system_design_interview.dz:935

message_queue
content Message Queue: In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process.
children system_design_interview/tools/apache_kafka, system_design_interview/tools/rabbitmq, system_design_interview/tools/apache_activemq, system_design_interview/tools/apache_rocket_mq, system_design_interview/tools/apache_pulsar, system_design_interview/tools/apache_zeromq
parents system_design_interview/toc/04_distributed_message_queue, system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Message_queue
location knowledge/system_design_interview.dz:950

event_streaming_platform
content Event Streaming Platform
children system_design_interview/tools/apache_kafka (strictly speaking, apache kafka is an event streaming,platform, but the lines blur in features between,event streaming and message queues), system_design_interview/tools/apache_pulsar (strictly speaking, apache pulsar is an event streaming,platform, but the lines blur in features between,event streaming and message queues), event_streaming
parents system_design_interview/glossary
location knowledge/system_design_interview.dz:1029

topic
content Topic: the categories used to organize messages. Each topic has a name that is unique across the entire message queue service. Messages are sent to and read from a specific topic.
children system_design_interview/toc/04_distributed_message_queue/step2/message_models/publish_subscribe
parents publish_subscribe, system_design_interview/glossary
location knowledge/system_design_interview.dz:1042

partition
content Partition
children system_design_interview/toc/04_distributed_message_queue/step2/topics_partitions_brokers (Used to distribute load for topics.), broker
parents DDIA/glossary/partitioning, system_design_interview/glossary
location knowledge/system_design_interview.dz:1053

broker
content Broker: the servers that hold partitions.
children system_design_interview/toc/04_distributed_message_queue/step2/topics_partitions_brokers (The distribution of partitions among brokers,is key to scalability)
parents partition, system_design_interview/glossary
flashcard (front) What is a broker?
flashcard (back) A broker refers to the servers that hold partitions
location knowledge/system_design_interview.dz:1057

consumer_group
content Consumer Group: a set of consumers, working together to consume messages from topics.
children system_design_interview/toc/04_distributed_message_queue/step2/message_models/point_to_point (point-to-point model can be simulated by the,concept of a consumer group), system_design_interview/toc/04_distributed_message_queue/step2/consumer_group
parents system_design_interview/glossary
location knowledge/system_design_interview.dz:1064

event_streaming
content Event streaming involves capturing and storing real-time data from various sources, such as databases, sensors, and mobile devices, in the form of streams of events. This data is stored durably for later retrieval and manipulated, processed, and reacted to in real-time. The event streams can also be routed to different destinations as needed. The goal of event streaming is to ensure continuous flow and interpretation of data, providing the right information at the right time.
parents system_design_interview/glossary, event_streaming_platform
hyperlink https://kafka.apache.org/documentation/#intro_streaming
location knowledge/system_design_interview.dz:1069

high_level_design
content High-level Design: (HLD) explains the architecture that would be used to develop a system
children system_design_interview/toc/03_google_maps/step2/high_level_design, system_design_interview/toc/02_nearby_friends/step2/high_level_design, system_design_interview/toc/05_metrics_monitoring_and_alert_system/step2/high_level_design, system_development_lifecycle, system_design_interview/toc/04_distributed_message_queue/step2/high_level_design
parents system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/High-level_design
location knowledge/system_design_interview.dz:1084

system_development_lifecycle
content The systems development life cycle (SDLC) is a structured process for planning, creating, testing, and deploying an information system. It involves stages such as requirement analysis, design, development and testing, implementation, documentation, and evaluation. The SDLC concept applies to various hardware and software configurations, including systems that consist only of hardware or software, or a combination of both. In a mature software development organization, the process is well-defined and managed, and the focus is on developing the software in a systematic and disciplined manner.
parents high_level_design, system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Systems_development_life_cycle
flashcard (front) What is the systems development life cycle?
flashcard (back) The systems development life cycle (SDLC) is a structured process for creating information systems, involving stages such as requirement analysis, design, development and testing, implementation, and evaluation.
location knowledge/system_design_interview.dz:1090

access_pattern
content access_pattern: defines how the users and the system access the data to satisfy business needs
children system_design_interview/toc/05_metrics_monitoring_and_alert_system/step2/data_model/data_access_pattern
parents system_design_interview/glossary
hyperlink https://docs.aws.amazon.com/prescriptive-guidance/latest/dynamodb-data-modeling/step3.html
flashcard (front) What is an access pattern?
flashcard (back) An access pattern defines how the users and the system access the data to satisfy business needs
location knowledge/system_design_interview.dz:1114

event_monitoring
content Event monitoring: The process of collecting, analyzing, and signaling event occurrences to subscribers, including operating system processes, active database rules, and human operators, from arbitrary sources like operating systems, database management systems, and application software, using a time series database.
children system_design_interview/tools/munin, system_design_interview/tools/graphite, system_design_interview/tools/datadog, system_design_interview/toc/05_metrics_monitoring_and_alert_system, system_design_interview/tools/prometheus, system_design_interview/tools/grafana, system_design_interview/tools/nagios, system_design_interview/tools/new_relic, system_design_interview/tools/influxdb
parents system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Event_monitoring
flashcard (front) What is event monitoring?
flashcard (back) Event monitoring involves collecting, analyzing, and signaling event occurrences to subscribers from sources like operating systems, database management systems, and application software.
location knowledge/system_design_interview.dz:1123

time_series_database
content Time series database: A software system optimized for storing and serving time series data through associated pairs of time(s) and value(s). Time-series data is often referred to as profiles, curves, traces, or trends. Early time series databases were used in industrial applications to store measured values from sensory equipment, but now are used in support of a wide range of applications. Time-series data can be efficiently stored and served using compression algorithms in various database types, but the design of time-series databases with time as a key index differs significantly from relational databases.
children system_design_interview/tools/prometheus, system_design_interview/toc/05_metrics_monitoring_and_alert_system/step2/data_model/data_storage_system/time_series_database, system_design_interview/tools/influxdb
parents system_design_interview/glossary
hyperlink https://en.wikipedia.org/wiki/Time_series_database
flashcard (front) What is a time series database?
flashcard (back) A time series database is a software system optimized for storing and serving time series data through associated pairs of time(s) and value(s). Time-series data is often referred to as profiles, curves, traces, or trends.
location knowledge/system_design_interview.dz:1157