A SURVEY OF SOLUTIONS AND FUTURE DIRECTIONS FOR THE CHALLENGES OF IMPLEMENTING ERASURE CODES IN CLOUD AND FOG COMPUTING

More recently, computing storage systems have started implementing an erasure code approach in storing big data due to its many advantages such as reducing storage cost, providing fault tolerance, and reliability. However, many challenges and open issues associated with the use of a code erasure approach in cloud and fog computing environments have arisen. Different methods and techniques for solving these challenges have been presented by many recent studies, however, there are still shortcomings in comprehensive surveys. Therefore, this paper attempts to present a survey of the most important studies in the last five years and discuss the solutions and future trends in this field, in addition to providing a classification of these solutions according to the main research challenges and comparative analysis of the proposed solutions with respect to objectives, environments, tools, and codes used. The ultimate goal of this paper is to provide a summary for researchers for the development of more future work.


INTRODUCTION
Despite the advancements in the field of information technology, the storage of huge data generated by Internet of things applications remains one of the greatest challenges facing modern storage systems [1]. The cloud computing model is one of the most important solutions that have been proposed for storing data, as a result of its many advantages such as high storage capacities, expandability, flexibility, and high capacity for data processing and analysis [2] [3]. The cloud's handling of Internet devices' data has been associated with many challenges, such as centralization and delay. Fog computing has emerged as a networked environment extending from the edge of Internet devices to the cloud solving some of the challenges [4]. Cloud and fog computing storage systems use the Data Replication method to ensure data availability and provide fault tolerance. In the method of Data Replication, the cost of storage increases with the increase in the rapid growth of data [5]. Therefore, many cloud service providers have moved to using erasure code to reduce storage costs [6]. Erasure code is based on splitting data into blocks (parent data blocks and parity blocks) that are stored over a number of storage units. Many research focused on improving the performance and efficiency of erasure code and resolving some of the issues and challenges that have coincided with the implementation of erasure code in cloud computing and fog computing environments. However, to the best of our knowledge, there are no recent surveys that focus on these solutions. Hence, this paper reviews the most important research solutions published in the last five years and compares the proposed solutions on the basis of various parameters such as (Objectiveenvironments, tools, and programming languages usedtypes of coding). Moreover, this paper also discusses open issues and future work to help researchers offer more solutions and future development. In this paper, there are six sections, Section I is an introduction; Section II presents background; Section III reviews the related surveys; Section IV presents the solutions and methods; Section V presents the results and finally, conclusion and future directions are presented in section VI. .

A. Erasure Code:
Erasure code (EC) is an approach for encoding data and recovering lost data by decoding. Erasure code splits the data into parent K data blocks and parity data blocks that it generates by coding from the original data blocks [7]. The "stripe" is used to refer to storage units (n) consists on a group of equally sized blocks of data and blocks of parity for that data n= (k / m). Figure 1 illustrates the basic operations of an erasure code. The classical erasure codes are divided into two classes: Maximum Distance Separable codes (MDS) e.g (RS codes, X-code, H-Code, Cauchy-RS, code,Tip-code, ,etc…) and e.g (WEAVER ,Code-M ,V2-Code, etc… ). MDS code is a linear code that takes into account storage efficiency.
Conversely, the non-MDS needs additional storage space [8].Erasure code was used on local disk storage systems such as Redundant Array of Independent Disks RAID-5, RAID-6, triple Disk Failure Tolerant arrays) to improve reliability and to provide fault tolerance to recover data lost during disk failure [9] [10]. Researchers studied the application of erasure code in distributed storage systems to improve the performance and efficiency of systems [11]. Many of the leading companies such as Facebook's HDFS Amazon AWS, Microsoft Azure, and Google Cloud use erasure code approach for storing big data [12]. Erasure codes are proposed for various purposes, including decrease time for data recovery, encoding and decoding, reducing the bandwidth, enhancing data update and consistency of the data. Several open source libraries on erasure codes are available. Table I summarizes some of the most important libraries.

B. Cloud and Fog Computing
Cloud computing is an advanced paradigm to provide computing services over the Internet to users anytime and anywhere [13]. The services provided by cloud computing service providers such as (Amazon, IBM, Google, Microsoft, Yahoo, VMware, and Rackspace etc.) are divided into three main service categories: Infrastructure(IaaS) , Platform (PaaS) and (SaaS) Software [14]. The cloud enables users to obtain services such as storage, application deployment, and data processing without having to own the infrastructure or data centers, cost savings, reliability, elasticity, security, scalability, on-demand access, self-service and availability [15] [16].Despite the advantages offered by cloud computing, there are many challenges related to managing, processing and analyzing IoT data and security issues [18] [19]. Cisco proposed a fog computing model in 2014, which then was developed by an OpenFog Consortium [20]. Fog computing consists of a group of networked devices that extend from the edges of IoT devices to the cloud. Figure 2 illustrates the OpenFog architecture [21]. Fog computing succeeded in solving some cloud computing issues such as centralization and delay due to the spread of fog computing devices in several areas and their presence near the peripheral devices. Fog computing provides data storage services to reduce service latency, improve network bandwidth, and enhance security [22] [23]. The data replication approach was used to increase data availability and fault tolerance however with the increasing amount of data associated with the increase in the number of IoT devices [24].Storage systems moved to use erasure code to reduce storage cost and reliability. Erasure code was used in local storage systems however, there are still many issues that need further study related to implementing erasure code in modern computing environments [25][26] [ 27].

III. RELATED SURVEYS
There are only two papers related to our work and both surveys didn't include recent research over the past five years. In the first paper, the authors focused on the challenges of implementing erasure codes in the cloud environment and mentioned many open problems and future work [28], while in the second paper the authors provided an overview of developments in coding mechanisms that were categorized into hierarchical codes, self-repairing codes, and renewable codes. They also discussed the metrics that should be taken into account when developing evaluation techniques [29].

IV. SOLUTION AND METHODS
The methods and solutions for the challenges of implementing erasing codes in cloud and fog environments are classified according into three different categories as shown in Figure 3.

C. Data Consistency Solutions
With the updating process of data blocks, codecs need to update the blocks of encoder and write new versions of the data for all blocks. Ensuring data consistency and reducing data update time is one of the most important challenges related to the data updating process, especially in large or distributed data. Therefore, some researchers turn to improve the data update process. In [30] authors suggested a hybrid protocol (RAPID) of locking and buffering mechanisms to speed up data updating. They used prediction-based heuristics to define and decrease the number of blocks updated .The results showed that the protocol improved data retrieval by 30% and predictive accuracy by 80%. In the same context author proposed a scheme (TUpdate) based on the a rack_aware tree construction technique consists of the data node as root and parity nodes as children to organize the data connections and top-down data transmission to reduce update time. The proposed scheme reduces by 27% and 32% the total update time compared to both S-Update-D/P [31].  (13,9), (12 ,8), (11,7), (14,10) Cloud

D. Network Performance Solutions 1) Latency Solutions:
In [32] authors Presented a proactive scheme (ProCode) based on predicting drive failure by monitoring the drive to determine the redundancy factor for the data or blocks expected to be lost and Implement the erasure code on the rest of the data .Compared with 3-way replication storage, the presented scheme reduced storage costs and the number of data loss events reduced read latency by 63% and recovery time by 78%.In [33] Authors introduced a system (EC-Store) and proposed a dynamic strategy for developing data based on access patterns and data traffic improved latency by 40% compared to baseline erasure code. Reduced latency by 20% compared to replication. In [34] authors formulated a problem to reduce the average response and iterative algorithm to solve the problem, they also proposed a framework to reduce the average latency of erasure-coded. Furthermore the proposed framework reduced the mean time. In [35] authors presented the ProactiveCach technology, which is based on a proactive approach to copy device objects that are expected to fail to cache memory. The proposed method increases 37 per cent throughput and reduced reading latency by up to 38 per cent. In [36] authors proposed a framework for developing mean and tail latency in erasure-coded storage systems with content (cache) storage at the edge and they also proposed a temporary storage policy called time-to-live (TTL) using probability server selection techniques to define bounds for mean-tail latency as well as an optimization problem formula and an optimization algorithm to solve it.

2) Recovery Bandwidth and Network Traffic Solutions :
In [37] authors presented a hybrid code (AZ-Code) that combines MSR code to generate local parity mapping and LRC to generate the equivalence profile for multiple availability regions. When one node fails, the proposed code reduces the recovery time by78% compared with RS code and 34.81% compared with LRC when Double Node Failure, the recovery time is reduced 58.77% compared with RS code and 45.34% compared with LRC codes. In [38] authors proposed a distributed storage scheme using the Information-Centric Fog Network mechanism to retrieve blocks of data encoded by Binary Reed-Solomon to reduce cost storage. The mechanism is used in the data searching and indexing processes to make the process more efficient both in time and in network bandwidth resources. In [39]authors suggested multi-level framework Zebra that encodes data into multiple layers on demand to reduce hot data retrieval cost and reduce the cost of cold data storage and low network transfer in the migration. The framework saves the average reconstruction overhead by 53.7% and 54.9% for the top 15% and reduces the network transfer such that only 2.2%.In [40] authors suggested improving the performance of parallel recovery by applying three different methods: chunk allocation, asynchronous recovery method and Contention Avoidance. The proposed method improved the recovery performance by 194%. In [41]authors used a framework similar to the work of MapReduce (EC-Shuffle) and focused on transferring parity chunks only while performing shuffle operations via two erasure cipher (forward encryption and back cipher. The results showed 50% drop in network traffic and achieved up to 38% performance improvement than FTI. Authors [42] worked to improve retrieval time by the Parallel Enumeration Method and the Parallel Instruction Method to compute the approximate optimal generator matrix and online data positioning scheme in a Parallel Heuristic method to reduce the network cost of repair. Compared with ACL, DFC, Pyramid and Xorbas, NEC can reduce the repair cost and repair time by 26.8%-40% and 13.9%-37.1% and HRepair further reduces the cost of repair time. In [43] authors proposed a hybrid method of redundancy and erasure code based on a proactive prediction approach to retrieve data from expected failure devices. The proposed approach applies slow recovery of cold data and copying of hot data to memory .Their results showed improvement in average recovery bandwidth.

3) Encoding/Decoding time solutions:
In [44] authors proposed the Carousel coding method to allow data to be read in parallel from multiple servers without the need for decryption. Compared to RS code, their results showed the file retrieval time was improved by 29.0% of the RMS and reduced decoding time by 75.4%. In [45] authors improved a code based on XOR code using two methodologies (parity block repetition and rack awareness. They proposed a heuristic method for optimizing block placement with optimized code to speed up the repair process and recover lost data contributed to improved recovery performance for RS codes, XORBAS and Multi-XOR.

E. Storage Efficiency Solutions
One of the storage efficiency challenges affecting the lost data recovery process is determining the size and number of data blocks. In [46] authors proposed a framework for erasure coding videos in cloud systems based on Approximate Code to distinguish the importance of data, applying triple parities to the important data and applying single / double parities to unimportant data .compared to erasure codes such as RS, LRC, STAR and TIP-Code, Their results showed the approximate storage cost was improved by 20.8%, Code reduces the number of parities by up to 55% and increased data recovery by 5%. In [20] authors proposed a hybrid fog and cloud storage system scheme using erasure code to encrypt the file's condensed data and distributed it across multiple cloud servers .

V. RESULTS
In this paper, the main impetus was to review the most recent research that have been published in prominent journals in the last five years from 2015 to 2020 and discussed solutions to the most important challenges related to the implementation of erasure codes in cloud and fog computing. Figure 4 illustrates the maximum amount of research was in solutions to the challenges and problems of implementing erasure code in cloud and fog environments related to network performance such as Latency, Network traffic, Recovery Bandwidth and, Encoding/Decoding time, whereas very little research focuses on solving challenges related to storage efficiency, updating data and ensuring consistency. Figure 5 shows the percentage of platforms used in the papers. Table II summarizes the objectives of the improvement and properties of the proposed research solutions to solve some of the challenges related to updating data and ensuring consistency. Table III summarizes the objectives of the improvement and properties of the proposed research solutions to solve some of the challenges related to network performance. Table IV summarizes the objectives of the improvement and properties of the proposed research solutions to solve some of the challenges related to storage efficiency. Table V shows comparison of scientific papers solutions according to the main research challenges and problems.

VI. CONCLUSION AND FUTURE DIRECTIONS
Recently, many researchers have focused on improving the performance and efficiency of the erasure method and solving several challenges that coincided with the emergence of the method in the cloud and fog environment, however, there is still a lack of comprehensive surveys. This paper sheds light on the papers published in the past five years (2015 -2020) and classifies the proposed solutions according to the challenges that they discussed in three categories: (data consistency solutions, network performance solutions, storage efficiency solutions). In addition, this paper discusses the main idea of the solutions and compares the proposed solutions on the basis of various parameters such as (Objective -environments, tools, and programming languages used -types of coding).
According to this survey, the implementation of the erasure code approach in most of the presented papers is still limited to data archiving and cold data storage due to the delays associated with the encryption and decryption process. Very few studies have provided solutions to use the erase code to store hot data with the help of many modern technologies and models that improve data latency. Therefore, improving the performance and efficiency of erasing the code for storing hot data is one of the most important future trends in this field. Moreover, improving data placement based on task scheduling and customer requirements can contribute to reducing delays. Data-block placement, especially in distributed storage systems, greatly affects the process of data access, which requires more research in optimizing data-block placement and resource allocation. There are many future approaches that some researchers have touched upon, including the use of accurate proactive methods of predicting failure that can improve data refresh or retrieval, by identifying specific data blocks to update or implement data migration to specific nodes to improve traffic. Encoding data at multiple levels can improve the recovery of lost data and the fog environment hierarchy can be exploited in this regard. Research has focused on implementing encryption erasure in computing environments to reduce storage cost, fault tolerance, and recovery process. Energy efficiency and security enhancement using erasure code one of the most open issues. [2] R. Nachiappan,J. Bahman, R. N. Calheiros, and K. M. Matawie.,"Cloud storage reliability for big data applications: