A system, comprising: one or more processors; and memory that stores instructions which, when executed by the one or more processors, cause the system to: receive a message comprising data generated by one or more subsystems of an autonomous vehicle, a timestamp, and a topic; store, in a first directory of one or more data stores, a plurality of files, a first file of the plurality of files comprising at least a portion of the data and stored in a first subdirectory of the first directory according to a hierarchy, the hierarchy partitioning the data into the plurality of files corresponding to different time windows based on the timestamp, where the plurality of files of the first directory within the hierarchy are further partitioned into one or a plurality of topics within the different time windows, the plurality of topics including at least one of a first topic comprising raw sensor data generated by the one or more subsystems of the autonomous vehicle, and a second topic comprising data derived from the raw sensor data; store, in a second directory of the one or more data stores, a plurality of second files, a second file of the plurality of second files based at least in part on the portion of the data and stored in a second subdirectory of the second directory according to the hierarchy; receive a request, the request comprising a requested topic, a start time, or an end time; and provide one or more of the first file or the second file based at least in part on the requested topic, the start time, or the end time. one or more processors; and memory that stores instructions which, when executed by the one or more processors, cause the system to: receive a message comprising data generated by one or more subsystems of an autonomous vehicle, a timestamp, and a topic; store, in a first directory of one or more data stores, a plurality of files, a first file of the plurality of files comprising at least a portion of the data and stored in a first subdirectory of the first directory according to a hierarchy, the hierarchy partitioning the data into the plurality of files corresponding to different time windows based on the timestamp, where the plurality of files of the first directory within the hierarchy are further partitioned into one or a plurality of topics within the different time windows, the plurality of topics including at least one of a first topic comprising raw sensor data generated by the one or more subsystems of the autonomous vehicle, and a second topic comprising data derived from the raw sensor data; store, in a second directory of the one or more data stores, a plurality of second files, a second file of the plurality of second files based at least in part on the portion of the data and stored in a second subdirectory of the second directory according to the hierarchy; receive a request, the request comprising a requested topic, a start time, or an end time; and provide one or more of the first file or the second file based at least in part on the requested topic, the start time, or the end time. receive a message comprising data generated by one or more subsystems of an autonomous vehicle, a timestamp, and a topic; store, in a first directory of one or more data stores, a plurality of files, a first file of the plurality of files comprising at least a portion of the data and stored in a first subdirectory of the first directory according to a hierarchy, the hierarchy partitioning the data into the plurality of files corresponding to different time windows based on the timestamp, where the plurality of files of the first directory within the hierarchy are further partitioned into one or a plurality of topics within the different time windows, the plurality of topics including at least one of a first topic comprising raw sensor data generated by the one or more subsystems of the autonomous vehicle, and a second topic comprising data derived from the raw sensor data; store, in a second directory of the one or more data stores, a plurality of second files, a second file of the plurality of second files based at least in part on the portion of the data and stored in a second subdirectory of the second directory according to the hierarchy; receive a request, the request comprising a requested topic, a start time, or an end time; and provide one or more of the first file or the second file based at least in part on the requested topic, the start time, or the end time.