A method for storing data in a data storage system, wherein the data storage system comprises an accelerator pool and data silos, the accelerator pool comprises accelerators and each of the accelerators comprises a non-volatile random-access memory and a persistent storage, and the data silos are lower performance computing devices when compared to the accelerator pool; the method comprising: obtaining, by an accelerator of the accelerator pool, a data storage request for first data from a first client; storing a copy of the first data locally in the non-volatile memory of the accelerator of the accelerator pool; in response to storing the copy of the first data: sending an acknowledgement to the first client that generated the data storage request; and after sending the acknowledgement, migrating the copy of the first data to the persistent data storage and storing at least one second copy of the first data in the data silos, wherein the acknowledgement indicates that the first data is redundantly stored in at least two different fault domains, wherein the data silos: obtain a second data storage request for second data from a second client; store the second data in the data silos without storing any copies of the second data in the accelerator pool, wherein the second data is stored without utilizing any computing resources of the accelerator pool, and wherein the first client is authorized by the data storage system for a higher data throughput than the second client. obtaining, by an accelerator of the accelerator pool, a data storage request for first data from a first client; storing a copy of the first data locally in the non-volatile memory of the accelerator of the accelerator pool; in response to storing the copy of the first data: sending an acknowledgement to the first client that generated the data storage request; and after sending the acknowledgement, migrating the copy of the first data to the persistent data storage and storing at least one second copy of the first data in the data silos, sending an acknowledgement to the first client that generated the data storage request; and after sending the acknowledgement, migrating the copy of the first data to the persistent data storage and storing at least one second copy of the first data in the data silos, wherein the acknowledgement indicates that the first data is redundantly stored in at least two different fault domains, wherein the data silos: obtain a second data storage request for second data from a second client; store the second data in the data silos without storing any copies of the second data in the accelerator pool, wherein the second data is stored without utilizing any computing resources of the accelerator pool, and wherein the first client is authorized by the data storage system for a higher data throughput than the second client. obtain a second data storage request for second data from a second client; store the second data in the data silos without storing any copies of the second data in the accelerator pool, wherein the second data is stored without utilizing any computing resources of the accelerator pool, and wherein the first client is authorized by the data storage system for a higher data throughput than the second client.