Uber如何将财务数据从DynamoDB迁移到Docstore

Introduction
简介
Each day, Uber moves millions of people around the world and delivers tens of millions of food and grocery orders. This generates a large number of financial transactions that need to be stored with provable completeness, consistency, and compliance.
每天,Uber在世界各地运送数以百万计的人,并运送数以千万计的食品和杂货订单。这产生了大量的金融交易,需要以可证明的完整性、一致性和合规性进行存储。
LedgerStore is an immutable, ledger-style database storing business transactions. LedgerStore provides signing/sealing of data to guarantee data completeness/correctness, strongly consistent indexes, and automatic data tiering. LedgerStore uses DynamoDB as its storage backend. Running LedgerStore in production for almost 2 years at Uber scale, we’d amassed a large amount of data as trips and orders volume grew. Over this period of time we realized that operating LedgerStore with DynamoDB as a backend was becoming expensive. Also having different databases in our portfolio creates fragmentation and makes it difficult to operate.
LedgerStore是一个不可变的、分类账式的数据库,用于存储商业交易。LedgerStore提供数据的签名/密封,以保证数据的完整性/正确性、强一致性索引和自动数据分层。LedgerStore使用DynamoDB作为其存储后端。在Uber规模的生产中,LedgerStore运行了近2年,随着行程和订单量的增长,我们积累了大量的数据。在这段时间里,我们意识到用DynamoDB作为后端运行LedgerStore变得很昂贵。同时,在我们的投资组合中拥有不同的数据库会造成碎片化,并使其难以操作。
Having first-hand experience building large scale storage systems at Uber, we decided to change the LedgerStore backend to be one of our in-house, homegrown databases. The 2 main principles we kept in mind were: 1) Efficiency, and 2) Technology consolidation. Following the first would yield us great results in the short term, while the second would put us on a solid long-term roadmap, having greater flexibility and operational ease.
有了在Uber建立大规模存储系统的第一手经验,我们决定将LedgerStore的后端改为我们内部自制的数据库之一。我们牢记的两个主要原则是。1)效率,和2)技术整合。遵循第一个原则将在短期内为我们带来巨大的成果,而第二个原则将使我们有一个坚实的长期路线图,拥有更大的灵活性和操作便利。
In this post today we are going to talk about rearchitecting some of the core components of LedgerStore on top of Docstore, Uber’s general-purpose multi-model database.
在今天的这篇文章中,我们将谈论在Uber的通用多模型数据库Docstore之上重新架构LedgerStore的一些核心组件。