Introduction to Data structure and System Design - Definition and Its types
Published: 2022-09-23 08:54:53

Data structure is the method of arranging the information so it may be retrieved with the least effort and expense. A data structure is used for more than just organizing data. It is also used for data processing, retrieval, and storage. Data structures of various basic and advanced types are used in almost every program or software system that has been developed. As a result, we must be well-versed in data structures.
System Design
The process of defining the components, API, database tables, and so on for a system to meet the specified functional and non-functional requirements is known as system design. Still, in either case, the process is systematic in that it considers all related variables of the system that need to be created—from the architecture to the necessary hardware and software, all the way down to the data and how it travels and transforms throughout its journey through the system. Then there's systems analysis, systems engineering, and systems architecture to consider.

The preceding definition may be difficult to grasp. Let's break it down and make sense of it.
System:  The assembly of various components to meet the specified requirements.

Design: The efficiency with which various components are assembled.
Three primary uses should be considered when designing systems: 
Reliability, 
Scalability, and 
Maintainability.

Essentially, this is the term that bridges the gap between the subject's issues and the existing system practically and logically. 

The components of System Designs are as follows:

Business process design and redesign
Creating Data Models
Specifying the events and their sequence
Application development
Design how the various services, processes, events, and data interact
Specifying how the system will be protected
Specifying the technologies to be used, such as applications, components, toolsets, APIs, and libraries
Benefits of System Design:
It lowers the cost of design.
It removes inconsistencies.
It expedites the process.
It has a lot of resources.

High-level design

High-Level Design (HLD) is a general system design that includes the architecture and design of the system. HLD also briefly explains components such as platforms, systems, services, and processes. HLD documents include data flows, flowcharts, and data structures to help developers/implementers understand how the system is expected to work in terms of features and design. It describes the relationship between the system's various components and functions. It defines the actual logic for each module of the system and the design architecture to understand the system's flow with function and database design. Customer business requirements are converted into High-Level Solutions as part of consultancy work or architecture design. 

For detailed information, refer to the comprehensive  [data structure and algorithm online course](https://www.learnbay.co/dsa-system-design), taught by tech leaders. 
Purpose of high-level design (HLD)
This High-Level Design (HLD) Document aims to add the detailed descriptions required to represent a suitable model. This document is intended to assist with operational requirements and to serve as a reference manual for how the modules interact. HLD is essentially a technical representation of functional requirements and information flow across assets or components.

During the preliminary stages of development, the project needs to identify those parts of the project that may be at risk or time-consuming. HLD briefly describes how the system's various subsystems and components interact.
Components of high-level Design
Component functionalities and properties/attributes
Interactions and relationships between different components

Low-level Design:
The low-level design document is frequently a large, bulky document containing the pseudocode for the developers. By clearly laying out details, the main goal of preparing low-level design is to reduce any additional burden developers face during the development phase. The LLD is a reference document for developers; it contains all of the technicalities involved, as well as a well-organized map, with the goal of making development a very smooth journey.

The LLD has extensive application detailing that focuses on how the various unit parts will interact. It delves into the specifics of how the components and classes work, the various properties of the classes, database definitions, and interfaces. Developers frequently rush through the low-level design phase to save time, only to spend that time resolving errors caused by the shallow design process.

The BRD (business requirement document) serves as the high-level design document at WalkingTree, and it includes architectural diagrams, data flow diagrams, and sequence diagrams.

Purpose of Low-level design:
The purpose of a low-level design document (LLDD)is to provide the internal logical design of the actual program code.

Database indexing 
Indexing is a technique for sorting many records using multiple fields. When you create an index on a field in a table, you create another data structure that contains the field value as well as a pointer to the record to which it is related. 

There are two types of file organization mechanisms which are followed by the indexing
Ordered index file 
Hash file organization

Ordered index file: 
The indices are determined by sorting the values. These are typically faster and more traditional storage mechanisms.

Hash file organization:
Indices are calculated by assuming that values are distributed uniformly across a set of buckets. A function known as a hash function determines which buckets a value is assigned to.
Conclusion
It is important to note that a design system is not a finished product but rather an ongoing process that is always open to changes and iteration. A well-designed design system will save software teams a lot of time in the long run, and the gains in consistency will make the time and effort invested in the design system process worthwhile. If you want to learn more about the system design process, do check out the top [data structure and algorithm course](https://www.learnbay.co/dsa-system-design), designed for professionals. The course offers additional support for non-programmers along with 12+ industry projects.