Day 6: 総合プロジェクト - Mini Database

課題概要

6日間で学んだ全てを使って、シンプルなインメモリデータベースを実装します。

要件

基本機能

  • データ格納: キーバリューストア
  • スレッドセーフ: 複数スレッドからアクセス可能
  • CRUD操作: Create, Read, Update, Delete
  • 実装する構造体

    pub struct MiniDB<K, V> {
        // TODO: 適切なデータ構造を選択
        // ヒント: Arc<Mutex<HashMap<K, V>>>
    }
    
    impl<K, V> MiniDB<K, V>
    where
        K: Eq + Hash + Clone,
        V: Clone,
    {
        pub fn new() -> Self { /* TODO */ }
        pub fn insert(&self, key: K, value: V) { /* TODO */ }
        pub fn get(&self, key: &K) -> Option<V> { /* TODO */ }
        pub fn remove(&self, key: &K) -> Option<V> { /* TODO */ }
        pub fn update(&self, key: &K, value: V) -> bool { /* TODO */ }
    }
    

    テスト要件

  • シングルスレッドでのCRUD操作
  • マルチスレッドでの同時アクセス
  • 1000回以上の操作でデータ競合なし
  • 提出物

  • MiniDBの実装
  • 単体テスト
  • マルチスレッドテスト
  • ドキュメントコメント