glossary
dz / system_design_interview / glossaryNode Tree
- A_star_algorithm
- access_pattern
- consumer_group
- data_model
- dijkstras_algorithm
- distributed_cache
-
event_monitoring
- system_design_interview/toc/05_metrics_monitoring_and_alert_system
- system_design_interview/tools/datadog
- system_design_interview/tools/grafana
- system_design_interview/tools/graphite
- system_design_interview/tools/influxdb
- system_design_interview/tools/munin
- system_design_interview/tools/nagios
- system_design_interview/tools/new_relic
- system_design_interview/tools/prometheus
- event_streaming_platform
- geocoding
- geohash
-
high_level_design
- system_design_interview/toc/02_nearby_friends/step2/high_level_design
- system_design_interview/toc/03_google_maps/step2/high_level_design
- system_design_interview/toc/04_distributed_message_queue/step2/high_level_design
- system_design_interview/toc/05_metrics_monitoring_and_alert_system/step2/high_level_design
- system_development_lifecycle
- load_balancing
- message_broker
- message_queue
- partition
- publish_subscribe
- QPS
- quadtree
- RDBMS
- REST
- software_architecture
-
systems_engineering
-
functional_requirement
-
non_functional_requirement
- system_design_interview/references/NFR_examples
- system_design_interview/toc/01_proximity_service/step1/nonfunc_reqs
- system_design_interview/toc/04_distributed_message_queue/step1/non_functional_requirements
- system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/non_functional_requirements
- system_design_interview/toc/01_proximity_service/step1/func_reqs
- system_design_interview/toc/02_nearby_friends/step1/func_reqs
- system_design_interview/toc/04_distributed_message_queue/step1/functional_requirements
- system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/functional_requirements
-
non_functional_requirement
-
requirements_engineering
- engineering_design_process
-
functional_requirement
-
non_functional_requirement
- system_design_interview/references/NFR_examples
- system_design_interview/toc/01_proximity_service/step1/nonfunc_reqs
- system_design_interview/toc/04_distributed_message_queue/step1/non_functional_requirements
- system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/non_functional_requirements
- system_design_interview/toc/01_proximity_service/step1/func_reqs
- system_design_interview/toc/02_nearby_friends/step1/func_reqs
- system_design_interview/toc/04_distributed_message_queue/step1/functional_requirements
- system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/functional_requirements
-
non_functional_requirement
-
non_functional_requirement
- system_design_interview/references/NFR_examples
- system_design_interview/toc/01_proximity_service/step1/nonfunc_reqs
- system_design_interview/toc/04_distributed_message_queue/step1/non_functional_requirements
- system_design_interview/toc/05_metrics_monitoring_and_alert_system/step1/non_functional_requirements
-
functional_requirement
- time_series_database
- websocket
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 |