CSC 6712 - Distributed Storage Systems

4 lecture hours 0 lab hours 4 credits
Course Description
Data storage and processing needs have vastly exceeded what can be accomplished using a single computer. A number of database and file systems that use distributed computing techniques to provide enhanced scalability and reliability have become available and seen wide adoption. This course will cover software architectures, algorithms, and practical implications of approaches for scaling storage systems to large data sizes and high read/write throughputs, providing elasticity in the face of changing loads, and reliability in the face of failures. Relevant papers will be reviewed alongside case studies of industry and open-source implementations. Students will complete a term-long project to implement a functional distributed storage system.
Prereq: CSC 5201  or instructor consent
Note: None
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Compare and contrast architectures used for high-volume networking in modern databases
  • Describe the implications of at-most once, at-least once, and only-once message delivery and processing
  • Implement a file format for on-disk data storage and associated data structures for indexing
  • Apply hashing algorithms to partition and distribute data in a distributed system
  • Describe the tradeoff between availability and consistency according to the CAP theorem and the practical implications
  • Identify examples of potential failures of a storage system and describe their implications on applications
  • Describe an algorithm for distributed consensus
  • Compare and contrast replication strategies in terms of reliability and latency
  • Provide examples of distributed databases and file systems that are either consistent or highly available

Prerequisites by Topic
  • Previous exposure to networking, parallel programming, analysis of algorithms, and databases is helpful but not required.

Coordinator
Dr. RJ Nowling


Print-Friendly Page (opens a new window)