Software System Design Quiz 2

Pataasin ang iyong marka sa homework at exams ngayon gamit ang Quizwiz!

Status Codes in RESTful APIs

2xx: Success (e.g., 200 OK, 201 Created) - Indicates successful requests. 3xx: Redirection (e.g., 301 Moved Permanently, 304 Not Modified) - Requires the client to take additional action to complete the request. 4xx: Client Errors (e.g., 400 Bad Request, 404 Not Found) - Signifies errors from the client side. 5xx: Server Errors (e.g., 500 Internal Server Error) - Represents errors from the server side.

Map reduce (big data)

A paradigm tailored for distributed data processing Map: Processes chunks of data, producing key-value pairs Reduce: Aggregates these pairs to derive meaningful results Designed for handling vast datasets efficiently across distributed systems

API Gateway

API Gateway acts as a reverse proxy to accept all API calls, aggregate the various services required to fulfill them, and return the appropriate result. Single Entry Point: Provides a unified API entry point, enabling the routing of requests to the appropriate downstream services. Request Management: Can manage and handle various tasks like request routing, composition, rate limiting, security (like API key validations), analytics, and monitoring. Microservices Architecture: Especially beneficial in a microservices architecture where it can route requests to the appropriate microservices.

API Gateway vs Load Balancer

API Gateway: Acts as a reverse proxy for API calls, providing a single entry point, request management capabilities, and routing to downstream services. Load Balancer: Distributes incoming network traffic across multiple servers to ensure high availability and scalability. An API gateway can contain a load balancer

Definition of apis

API is a set of rules that defines interactions between software applications, allowing them to communicate and share functionalities.

importance of database scaling

Accommodates Growth: Ensures the database can handle increased data volume and user interactions Maintains Performance: Sustains swift and reliable data retrieval and interaction, essential for user experience. Upholds Data Integrity: Preserves the accuracy and consistency of data under high demand, preventing data anomalies.

Horizontal Scaling

Adding more units to the system architecture Example: Adding new servers to a database cluster Cons: Increased system complexity, data consistency is challenging

Horizontal Scaling (API)

Advantages: Can handle more load by simply adding more servers. Failure in one server doesn't affect the others. Disadvantages: Requires more sophisticated setup and management, like load balancing. Ensuring data consistency across multiple servers can be challenging.

Vertical Scaling (API)

Advantages: Easier to implement as it doesn't require changes to the application, Can provide immediate performance boost. Disadvantages: There's a maximum limit to how much you can scale up. Often requires downtime to upgrade the hardware.

Recognizing the need for database scaling

Assess Database Performance: Regularly monitor database response times and query execution speeds. Analyze Data Growth Trends: Scrutinize the increments in data volume and the complexity of data interactions. Scale Proactively: Implement scaling solutions ahead of reaching database capacity to avoid performance degradation.

AutoScaling and API Scalability

AutoScaling optimizes server instances based on load, increasing API adaptability and efficiency. Adaptive Management: Adjusts resources in real-time for optimal utilization. High Availability: Ensures service is available during demand spikes by allocating necessary resources. Cost-Efficient: Reduces costs by allocating resources only when needed, avoiding over-provisioning.

Backup vs replication

Backup: Provides a static, recoverable copy of the data to protect against data loss and corruption. Replication: Creates dynamic, real-time or near-real-time copies of data to enhance availability and load balancing. Distinct Purposes: While replication increases availability, it does not replace the need for a dedicated backup strategy.

Load balancer placement

Between the User and Web Server: It can distribute incoming network traffic across multiple web servers. Between Web Server and an Internal Platform Layer: It can handle traffic between different service layers within the architecture. Between Internal Platform Layer and Database: It can balance loads and manage requests coming to the database.

Caching and API scaling

Caching, by storing and serving frequent read requests, significantly reduces the load on the server and database, contributing to efficient API scaling. Reduced Load: Serving cached responses reduces the number of requests to the server, minimizing resource utilization. Enhanced Response Times: Cached responses are typically faster, improving user experience and service efficiency. Lowered Database Stress: By serving cached data, the number of read requests to the database is decreased, preventing potential bottlenecks.

data warehouses (big data)

Central repositories optimized for analytics and reporting Data is cleaned, transformed, and structured for performance

How RPC works

Client-Server Model: The client sends a request to the server, and the server returns a response. Stub Procedures: Simplify the communication process by abstracting network details. Interface Definition Language (IDL): Defines the available procedures and data types.

columnar stores vs row oriented model

Columnar databases excel at analytical queries on specific columns They offer storage optimizations through column-wise compression Row-oriented databases are more suited for transactional systems Write operations are generally more efficient in row-oriented databases

columnar stores

Columnar stores organize data by columns rather than rows Designed for efficient read operations, especially for analytics Compression techniques optimize storage and enhance query performance Not optimized for frequent write or update operations

RPC vs REST

Communication: RPC is procedure-oriented and invokes specific functions, while REST is resource-based and manipulates resources using HTTP methods. Statelessness: REST is stateless, with each request containing all necessary information, while RPC can maintain state between requests. Coupling: RPC often results in tighter coupling due to the necessity to know the available procedures, while REST offers looser coupling.

CDN and API scaling

Content Delivery Networks (CDN) enhance API scalability by distributing the load, serving static content closer to the user, and reducing latency. Distributed Load: CDNs help in distributing the load by serving content from the nearest location to the user, reducing stress on the origin server. Reduced Latency: By serving content closer to the users, CDNs significantly reduce the latency, improving user experience. Enhanced Reliability: CDNs provide redundancy, enhancing reliability and availability even during high traffic or failures.

GraphQL vs RESTful APIs

Data Retrieval: GraphQL allows clients to request exactly the data they need, while REST retrieves all data associated with the resource. Number of Requests: GraphQL can retrieve all needed data in a single request, while REST may require multiple requests to different endpoints. Schema and Type System: GraphQL uses a strong type system and defines the capabilities of the API using a schema, ensuring more reliable interactions.

RPC vs GraphQL

Data Retrieval: GraphQL allows clients to specify the data structure, while RPC invokes specific procedures. Flexibility: GraphQL offers more flexibility in fetching data, while RPC is more rigid and procedure-oriented. Coupling: RPC tends to have tighter coupling due to the need to know available procedures, while GraphQL has looser coupling.

Relational Data Model

Data is organized into tables, each record (data entry) is represented as a row in a table, table columns define the specific properties that each record can have

Database caching

Database caching involves storing copies of files or data results in strategic locations to improve access times and reduce load on the main database. Enhances Performance: Enables faster data retrieval and reduces the need to query the main database repeatedly. Reduces Database Load: Offloads the main database by serving the majority of read requests, prolonging its lifespan and efficiency.

Database partitioning

Database partitioning segments a table into smaller, more manageable pieces, yet all pieces remain part of the same logical table. Improves Performance: Enables efficient management and faster queries. Internal Management: Occurs within the same database system, optimizing internal structure.

Database Replication

Database replication is a method of copying data to maintain synchronized multiple copies across different nodes or servers. Enhances Data Availability: Provides continuous data availability, reducing downtime. Facilitates Load Balancing: Distributes read and write operations among multiple nodes to optimize performance. Serves as a Backup: Acts as a safeguard to recover data in case of node failures.

Replication Patterns

Database replication patterns synchronize and maintain consistent data copies across multiple nodes to enhance availability and read scalability. Single Primary: One node (primary) handles writes; replicas are read-only. Guarantees strong data consistency but can limit write scalability due to potential write bottlenecks. Multi Primary: All nodes can independently handle writes and reads. Improves write scalability but requires sophisticated conflict-resolution mechanisms to maintain data consistency.

Database sharding

Database sharding involves segregating a large dataset into smaller, manageable parts, called shards, and distributing them across multiple databases or nodes. Enhances Performance: Enables faster queries and parallel processing by reducing the database size. Scales Systems: Ideal for large-scale systems with extensive data requirements.

object storage vs database

Databases excel at structured data and complex queries Object storage focuses on storing vast amounts of unstructured data Data is stored as objects with unique identifiers and metadata Scales horizontally and is optimized for retrieval and storage rather than complex querying

When designing RPC APIS

Define Clear Procedures: Clearly define the available procedures and their inputs and outputs using an Interface Definition Language (IDL). Minimize Coupling: Avoid overly complex procedure definitions and try to minimize the dependency between the client and the server. Error Handling: Define clear error messages and handle errors gracefully to aid in debugging and resolution.

Partitioning APIs

Definition: Dividing the server's duties and responsibilities, often by the type of request or data being handled. Purpose: To allow each partition to operate independently, improving efficiency, and making the system more manageable and scalable. Application in APIs: Different API routes or endpoints can be handled by different servers, each optimized for a specific set of tasks or data.

Why database selection matters

Direct influence on overall system performance Vital for system scalability as data grows Ensures long-term system maintainability Crucial for maintaining data integrity and consistency

Load Balancing (API scaling)

Distributes incoming network traffic uniformly across multiple servers. Prevents any one server from getting overwhelmed and optimizes resource use. Enhances application responsiveness and availability.

Which database for variety

Diverse data types: NoSQL's flexible schema is beneficial Structured data with well-defined relationships: Relational databases are apt

document stores vs relational model

Document stores offer flexible schemas; relational databases require predefined schemas While relational databases use table joins, document stores can embed data Document stores scale horizontally, adding more machines for more data Choice often boils down to application needs and data access patterns

Document stores (type of non relational database)

Document stores save data in document-like structures, typically JSON They allow flexible schemas, adapting to varied data needs Documents can have embedded arrays or documents, providing depth They're particularly suitable for hierarchical data structures.

Vertical Scaling

Enhancing the capacity of individual resources (e.g., the database server) Example: Upgrading server RAM or CPU Cons: Limited by hardware capability, potential single point of failure

Types of database backup

Full Backup: Copies all the data in the entire database. Provides the most comprehensive coverage but requires more storage and time. Incremental Backup: Only backs up the data that has changed since the last backup. Faster and requires less storage but relies on a chain of previous backups for full recovery. Differential Backup: Backs up all the data that has changed since the last full backup. Striking a balance between full and incremental backups.

graph stores vs relational model

Graph databases excel in representing relationships; relational databases rely on joins They allow efficient traversal of multiple levels of relationships Suited for complex relationship queries, which might be cumbersome in relational models However, for tabular data with minimal relationships, relational databases might be more apt

graph stores

Graph databases store data in nodes (entities) and edges (relationships) Suited for highly connected data like social networks, recommendation engines, and complex relational data Queries can traverse multiple nodes and relationships, fetching complex patterns

GraphQL

GraphQL is a query language for APIs and a runtime for executing those queries. Developed by Facebook: To address the needs for more efficient and powerful data fetching in modern applications. Declarative Data Fetching: Clients specify what data they need, avoiding over-fetching or under-fetching of data. Single Endpoint: All requests are directed to a single endpoint, improving maintainability and organization of API interactions.

When to consider load balancing

High Availability is Critical: When uninterrupted service is paramount. Handling High Traffic: When the system needs to efficiently manage a large number of requests. Optimizing Resource Use: When aiming to use server resources efficiently and prevent overloads. Scaling Horizontally: When adding more servers to enhance system capacity and performance.

Why consider database replication

High Data Availability Required: When the priority is to have continuous access to data. Read-Heavy Workloads: When the system predominantly handles read operations. Distributed Workload: When there is a need to balance loads among several nodes. Backup Mechanism Needed: When having a robust recovery system is crucial to mitigate the risks of node failures.

Which database for velocity

High-speed data operations: NoSQL databases might offer better performance Stable, transaction-oriented systems: Relational databases are reliable

Types of partitioning

Horizontal Partitioning: Divides rows into smaller tables with identical columns. Optimizes performance via parallel processing but challenges data consistency across nodes. Vertical Partitioning: Segments columns, creating smaller tables with identical rows. Streamlines data retrieval but necessitates meticulous data consistency management.

purpose of apis

Integration: Facilitates communication between various software entities, enabling seamless interaction and data sharing. Automation: Supports task automation, allowing systems to interact programmatically without human intervention. Efficiency: Optimizes data transfer by enabling extraction of specific data between applications.

Query optimizaiton

Involves constructing efficient queries to reduce database load Detailed analysis and refinement of queries yield significant performance improvements Effective optimization leverages database features and avoids unnecessary, resource-intensive operations

Server Replication (API scaling)

Involves creating identical copies of the original server. Helps in distributing the load and provides redundancy. Ensures continuous service availability in case of server failure.

key-value stores

Key-Value stores are simple database systems that use a dictionary-like structure Data is stored as a set of unique keys, each associated with a specific value They're optimized for rapid data retrieval using the key Suited for use cases where data access patterns are predictable Modern key-value stores were developed in response to the need for speed and scalability.

key value stores vs relational model

Key-Value stores are typically schema-less; data can vary without predefined structures They focus on rapid retrieval based on the key, often at the expense of complex querying Horizontal scaling allows them to handle massive amounts of data Relational databases, while versatile, may struggle with the scale and speed demands that key-value stores excel in

Types of sharding (types)

Key-based: Uses a specific key value, like user_id, for data distribution. Straightforward but can lead to unbalanced servers. Range-based: Allocates data based on ranges of a key's value, such as dates. Ideal for sequential data but prone to hotspots. Directory-based: Employs a lookup service to direct queries to the right shard. Offers flexibility but adds complexity.

Common caching strategies

LRU (last recently used), FIFO (first in first out), LFU (least frequently used)

Which databases for volume

Large datasets: NoSQL databases can offer better scalability (ie big data applications) Moderate datasets with well-defined relationships: Relational databases excel

Load Shedding

Load Shedding is a technique to prevent system overload by intentionally dropping incoming requests when the server is under heavy load. It maintains system stability, protects critical resources, and enhances service resilience

Load balancing

Load balancing is the process of distributing network or application traffic across multiple servers to ensure no single server bears too much demand. Enhances Performance: By efficiently allocating requests, it prevents any single server from becoming a bottleneck. Increases Reliability and Availability: It ensures uninterrupted service by redistributing loads in case of server failure.

Microservices

Microservices Architecture involves developing a single application as a suite of small services, each running in its own process and communicating through APIs. Independently Deployable: Each service is independently deployable, allowing for easier updates and maintenance. Single Responsibility: Every service is designed to perform a specific business function and has a single responsibility. Decoupled Services: Services are loosely coupled, enabling them to be developed, deployed, and scaled independently.

Microservices and scalability

Microservices architecture significantly aids in building scalable and resilient systems by allowing individual components to scale independently based on their resource requirements and usage patterns. Independent Scaling: Each service can be scaled independently, allowing for more efficient resource utilization and handling of varied loads. Enhanced Fault Isolation: Failure in one service doesn't directly impact others, improving system resilience. Complexity Management: Microservices can introduce complexity in terms of service interactions, deployment, and monitoring, necessitating effective management strategies.

Impact & Importance of APIs

Modularity: Promotes development of clear, independent, and manageable software components, enhancing maintainability. Innovation: Fosters creation of new business models and extension of services, by allowing integration and building upon existing services. Scalability & Performance: Facilitates efficient scalability of individual components, ensuring high performance and availability.

Database selection CAP for consistency and availability

Prioritize Consistency: Typically served by relational databases (ACID properties) (best for finance systems, banking transactions, healthcare, e-commerce inventory) Prioritize Availability: Typically served by non-relational databases (Eventual consistency). (good for social media platforms, streaming services, e-commerce product recommendations)

When to use RPC

Procedure-Oriented Applications: When the interaction is more about invoking functions or procedures rather than manipulating resources. Strict Contract: When a strict contract between client and server is beneficial, as the client needs to know the available procedures. Efficiency & Performance: When the overhead of HTTP is undesirable and alternative transport protocols can optimize performance. Network Constraints: In environments with network constraints where a lightweight protocol is essential.

Database optimization strategies

Proper indexing, normalization/denormalization, query optimization

Schema pro vs con

Pros: If you're working with data of homogeneous structure, a fixed schema will help you ensure the data is valid. Cons: When the characteristics of the data vary too much, fitting the data to a fixed schema can be troublesome.

SOAP API

Protocol, not Architecture: It is a protocol rather than an architectural style like REST. XML-Based: It utilizes XML for message format, relying on other application layer protocols, primarily HTTP and SMTP, for message negotiation and transmission. Strict Standards and Specifications: It operates on strict standards and specifications, defining an extensive set of rules for structuring messages.

Database backup

Purpose: To create secure, static, point-in-time copies of data. Objective: To allow recovery to a known good state in case of data loss, corruption, or other disasters. Necessity: Backups are crucial as they safeguard data integrity and availability, preventing irreversible data loss.

RESTful API

REST stands for Representational State Transfer. It is an architectural style for designing networked applications. RESTful APIs use HTTP requests to perform CRUD operations on resources. RESTful APIs are by far the most common type of Web APIs.

Conclusion on REST/GraphQL/RPC APIs

RESTful APIs: Stateful, scalable interactions using standard HTTP methods, URIs, and status codes, focusing on web resources. GraphQL APIs: Flexible, efficient data interactions, allowing precise data retrieval, relying on a strongly typed schema, considering domain, performance, and security in design. RPC-based APIs: Intuitive for non-CRUD actions, leading to tighter coupling, with modern iterations like tRPC offering enhanced type safety, and the choice among them aligns with project needs and context.

When to consider database caching

Rapid Data Retrieval is Essential: To significantly improve data access times compared to querying the main database. Minimizing Database Load is Crucial: To maintain optimal performance and longevity of the main database by reducing the number of queries made to it. Operational Cost Efficiency is a Goal: When optimizing database operations to reduce resource usage and operational costs is essential.

Rate Limiting (API scaling)

Rate Limiting is a strategy to control the amount of incoming requests to a server, enabling the server to handle each request with optimal efficiency. Used to: Control traffic, maintain service availability, resource optimization

What are relational databases good for?

Relational databases make it easy to avoid duplicate information and data inconsistencies

relational vs non-relational databases

Relational databases: Structured schema, SQL-based, ACID properties Non-Relational databases: Flexible schema, variety (document, key-value, graph)

Remote Procedure Call (RPC)

Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located on another computer in a network. Procedure-Oriented: Allows calling functions on a remote server. Synchronous Communication: Waits for the server to complete the task before resuming. Tight Coupling: Requires knowledge of the available procedures on the server.

Types of load balancing

Round Robin: Cyclically assigns requests to a list of servers. Simple but may not consider server load. Least Connections: Directs traffic to the server with the fewest active connections. Considers server load but may not account for request complexity. IP Hash: Assigns a specific IP range to each server. Ensures a user IP consistently reaches the same server but might lead to server overload.

Other types of web APIs

SOAP (Simple Object Access Protocol): A protocol that uses XML for message formatting in communication over the network. OData (Open Data Protocol): A protocol that allows the creation and consumption of queryable and interoperable RESTful APIs. JSON-RPC and XML-RPC: Remote procedure call (RPC) protocols encoded in JSON or XML respectively.

Scaling SQL vs NoSQL Databases

SQL Databases: Typically employ vertical scaling: adding more power to existing hardware to handle more load. NoSQL Databases: Known for horizontal scaling: adding more machines to handle larger loads. But all the scaling strategies discussed in this lecture are generally applicable to both SQL and NoSQL Databases.

Key concepts of GraphQL

Schema: Defines types, queries, and mutations, acting as a contract between client and server. Resolvers: Functions that determine how data for a specific field is fetched and returned to the client. Querying: Allows clients to specify needed data, reducing over or under-fetched data. Mutations: Operations that create, modify, or delete data, defined specifically in the schema.

Other database selection factors

Security: Ensuring data privacy and protection against threats Cost: Initial setup, scaling, maintenance, and licensing fees Community: Availability of support, tutorials, and a robust developer community Ecosystem: Integration capabilities with other tools, platforms, and systems

Horizontal Scaling Strategies (API)

Server Replication: Creating copies of the original server to distribute the load. Load Balancing: Distributing incoming network traffic across multiple servers. Partitioning: Dividing the server's duties and responsibilities, often by the type of request or data being handled. API Gateway: Managing and handling API requests, acting as a reverse proxy to forward requests to the appropriate service. Microservices Architecture: Decomposing the API into smaller, independent services that can be scaled individually.

Types of sharding (def)

Sharding types dictate how data is distributed across nodes, affecting system balance and complexity.

When to consider database sharding

Single Server Limitations: When the dataset is too large to be handled by a single server. Horizontal Scaling is Essential: When adding more machines to distribute the load is crucial for system performance. Geographical Data Proximity is Crucial: When reducing latency by positioning data closer to users is essential. Parallel Processing is Essential: When distributing data for simultaneous processing is crucial.

When to use SOAP

Stateful Operations are Needed: For operations where the client and server need to understand previous interactions and each other's states.Reliability and Security are Critical: In enterprise solutions, financial services, and telecommunication services where data integrity and confidentiality are paramount. ACID Compliance is Required: When transactions require Atomicity, Consistency, Isolation, and Durability, especially in database interactions. Interoperability is Essential: In environments where the API needs to interact with various platforms and languages, due to its strict standards and specifications. Stateful Operations are Needed: For operations where the client and server need to understand previous interactions and each other's states.

Principles of RESTful API design

Statelessness: Each request contains all information needed by the server. Client-Server Architecture: Client manages UI/UX; server manages resources, operating independently. Uniform Interface: Ensures consistent and standardized interactions. Cacheable: Responses can be marked as cacheable to improve performance. Layered System: Enables scalability through unknown intermediary servers.

When to consider database partitioning

Table Size Affects Performance: When a single table is too large, leading to performance degradation within a single server. Frequent Queries on Recent Data: When a table contains substantial historical data that is seldom accessed, but recent data is queried regularly. Optimizing Node Efficiency: Aiming to enhance the performance and manageability of each database node. Seeking Logical Data Segmentation: When data should be internally segmented yet part of the same logical entity.

N+1 query problem

The N+1 problem occurs when you make one query to fetch the main records and N additional queries to retrieve related data for each main record. (solved by optimizing your query, eg using joins)

Load Management strategies (API)

These strategies are usually implemented within an API Gateway. Rate Limiting: Restricting the number of requests a user can make in a given time frame to prevent abuse and ensure availability for all users. Throttling: Adjusting the speed at which a user can make requests, often used to allocate resources fairly among all users during high traffic. Load Shedding: Dropping requests when the server is overwhelmed, allowing it to maintain service availability during spikes in traffic.

Throttling

Throttling is a technique used to control the amount of incoming requests to a server by delaying the handling of the requests. Regulate Request Processing: Helps in managing the server's load by delaying the processing of some incoming requests. Prevent Server Overload: By slowing down the request processing, it ensures that the server does not become overwhelmed with too many requests at once. Enhance System Stability: Helps in maintaining the stability and reliability of the system by avoiding resource exhaustion. Implementation Approach: Often implemented by setting a delay in processing requests, and typically configured in the API Gateway.

Transactional (OLTP) vs analytical (OLAP)

Transactional (OLTP): Typically served by relational databases optimized for high transaction rates and real-time data processing. E.g., Financial transaction systems. Analytical (OLAP): Often suited for non-relational databases designed for complex queries and deep data analysis. E.g., Systems analyzing user behavior patterns.

When to use GraphQL vs REST

Use GraphQL when: Diverse, nested, and complex data requirements exist. The frontend team needs flexibility in data retrieval. Use REST when: The API has simple, flat, and static data structures. A standard, cacheable, and stateless API is suitable.

Service communication in microservices

Varied Mechanisms: Services use HTTP/REST, gRPC, GraphQL, and more, to interact effectively. Asynchronous Messaging: Message brokers and event streams enable decoupled, scalable, asynchronous inter-service communication. Protocol & Format Selection: Choosing the right communication protocol and data format is vital, affecting performance and interoperability.

data lakes (big data)

Vast repositories storing data in its raw form Accepts structured, semi-structured, or unstructured data Often built atop scalable solutions like object storage

Database scaling strategies

Vertical Scaling, Horizontal Scaling (replication, sharding, partitioning), caching

Scaling APIs strategies

Vertical Scaling: Increasing the capacity of a single server (e.g., adding more CPU, RAM). Horizontal Scaling: Distributing the load across multiple servers, often involving load balancing, replication, and partitioning. Load Management (Caching, rate limiting, throttling, and load shedding): Not strictly a scaling strategy but help maintain service availability during high load.

3Vs of data

Volume: Refers to the size or amount of data to handle Velocity: Deals with the speed of data processing and generation Variety: Captures the diverse types and sources of data

Web APIs

Web APIs allow different software systems to communicate with each other over the web using HTTP/HTTPS. Open APIs: Accessible to developers and the public (e.g., Twitter API). Internal APIs: Used within a company for internal services. Composite APIs: Access multiple endpoints in one call; useful for microservices. Partner APIs: Exposed to specific partners or collaborators.

Types of APIs

Web APIs: Enable communication over the web using HTTP/HTTPS. Library-based APIs: Packaged as libraries or SDKs, providing routines and tools for software development. Operating System APIs: Allow interaction with underlying OS services, enabling tasks like file handling and memory allocation. Database APIs: Enable communication between applications and database management systems, allowing CRUD operations on database records.

Types of RPC

gRPC: Developed by Google, uses HTTP/2 for transport, Protocol Buffers as the interface description language, and it is language-agnostic. tRPC: A type-safe RPC framework, often used with TypeScript, enabling type-safe API contracts between the client and the server.

Why did non relational databases emerge?

while versatile, relational databases can have limitations in scalability and handling unstructured data


Kaugnay na mga set ng pag-aaral

States and Change of Matter Unit Review

View Set

Transforming the Global Environment Midterm

View Set

ACCT165 Chapter 3 Review Questions

View Set

FL DCF Child Care Identifying and Reporting Child Abuse and Neglect (CAAN) 2019

View Set

chapter 11 the Centre for Contemporary Cultural Studies

View Set

Human Anatomy and Physiology Chapter 1 Test

View Set