{ "comparison": { "different_units": { "file_system": "file -> ordered blocks -> replicas", "table_system": "row key -> ordered region -> WAL/memory/store files" }, "metadata_does_not_reconstruct_data": true, "shared_base": [ "authoritative metadata maps logical names or ranges to data holders", "bulk bytes live outside the metadata authority", "failure recovery needs both liveness decisions and durable data" ] }, "environment": { "platform": "Linux-5.10.134-013.16.kangaroo.al8.x86_64-x86_64-with-glibc2.39", "python": "3.12.3" }, "file_system": { "data_path": "client streams block bytes to data nodes", "failed_node": "dn2", "metadata_authority": "name-node-like namespace and block map", "metadata_without_block_bytes": { "blocks": [ "b0", "b1" ], "path": "/logs/a" }, "namespace": { "/logs/a": [ "b0", "b1" ] }, "readable_after_failure": true, "replicas_after_failure": { "b0": [ "dn1", "dn3" ], "b1": [ "dn3", "dn4" ] }, "replicas_after_repair": { "b0": [ "dn1", "dn3", "dn4" ], "b1": [ "dn3", "dn4", "dn1" ] }, "replicas_before": { "b0": [ "dn1", "dn2", "dn3" ], "b1": [ "dn2", "dn3", "dn4" ] }, "replication_restored": true }, "gates": { "file_replication_restored": true, "file_survives_one_replica_node_loss": true, "metadata_is_not_data_backup": true, "region_reassigned": true, "wal_and_store_files_required": true }, "model": "bounded architectural path model, not a product emulator", "not_modeled": [ "real GFS, HDFS, Bigtable, HBase, ZooKeeper, or storage devices", "checksums, rack placement, leases, pipeline recovery, snapshots, or balancers", "concurrent clients, region split races, compactions, or distributed WAL splitting", "network partitions, disk corruption, metadata quorum failure, throughput, or latency" ], "schema_version": 1, "table_system": { "data_path": "region server appends WAL, updates memory, then flushes immutable store files", "failed_server": "rs1", "metadata_authority": "master assigns regions; coordination service tracks liveness/location", "recovery_requires_data_files_and_wal": true, "regions_after_reassignment": { "r0": { "range": [ "", "m" ], "server": "rs3", "store_files": [ "sf0" ] }, "r1": { "range": [ "m", "" ], "server": "rs2", "store_files": [ "sf1" ] } }, "regions_before": { "r0": { "range": [ "", "m" ], "server": "rs1", "store_files": [ "sf0" ] }, "r1": { "range": [ "m", "" ], "server": "rs2", "store_files": [ "sf1" ] } }, "row_range_preserved": true, "unassigned_regions": [ "r0" ], "wal_replay": [ { "region": "r0", "row": "alice", "value": 7, "wal": "w1" } ], "writes": [ { "region": "r0", "row": "alice", "value": 7, "wal": "w1" }, { "region": "r1", "row": "zoe", "value": 9, "wal": "w2" } ] } }