NoSQL
2012年、Savas Parastatidisがチームに加わり、NoSQLストアを探求する新しいインキュベーションプロジェクトに取り組みました。また、Erik Meijerは、従来のリレーショナルデータベースの数学的な二面性としてモデル化されたNoSQLストアの理論的な基盤を構築し、両タイプのストアにおけるデータストレージの正規化/非正規化の違いに関して、ビッグデータの3つのVsという多様な軸に取り組んでいました。これらのアイデアは、Rxチームに残っていたベテランによって実行されました。彼らは、ベロシティ領域での二重特性に深く精通しており、プルベースとプッシュベースのクエリ処理機能につながっています。2011年にさかのぼるこの考えの名残は、このテーマに関するBartのECOOP 2011のプレゼンテーションに見られます。この作業は、M/Oslo社の合併によって加速されました。大きな組織は、当時最も関連性の高い例としてMongoDBを含むドキュメントデータベースの今後のトレンドを受け入れるための良い方法を模索していました。
In 2012, Savas Parastatidis joined the team to work on a new incubation project to explore NoSQL stores. Erik Meijer had been working on a theoretical foundation for NoSQL stores modeled as a mathematical dual to traditional relational databases, with regards to the (de)normalization differences to data storage in both types of stores, thus tackling the variety axis of the 3 Vs of Big Data. These ideas were run by the remaining Rx veterans on the team who’ve become deeply familiar with the dual properties in the velocity domain, leading to pull-based and push-based query processing capabilities. A remnant of this thinking dating back to 2011 can be found in Bart’s ECOOP 2011 presentation on the subject. This work was accelerated by the M/Oslo merger where the larger organization was seeking for a good way to embrace the upcoming trend of document databases with MongoDB as the most relevant example at the time.
今回のプロジェクトでは、「クエリなどの計算をデータの近くで実行する」という考え方を中心に、分散型ドキュメントデータベースを構築したいと考えています。これは、構造化されていないデータ(ドキュメント)を、グラフデータベースのノードとエッジのグラフとして表現し、そのノードに計算を送れるようにするという考え方です。そこで、このプログラミングモデルがアクターモデルに非常によく似ていることに気づき、「Orleans」を開発していたMSRのPhil Bernsteinのチームと協力関係を築くことになりました。ここで考えたのは、グラフのノードやエッジの変化を観察できるように、リアクティブプログラミングをサポートすることでした。
With this new project, we wanted to build a distributed document database centered around the notion of running computation (such as querying) close to the data. One way to think of this is to represent unstructured data (i.e. “documents”) as a graph of nodes and edges in a graph database, enabling computations to be sent to these nodes. This led to the realization that this programming model is very similar to the actor model so collaboration was established with Phil Bernstein’s team at MSR that was building “Orleans”. One tangent to the thinking here was to incorporate reactive programming support to enable observation of changes to the nodes and edges in the graph.
このプロジェクトのアイデアは、後述する分散型グラフデータベースの取り組みに引き継がれました。コードをデータに変換することや、そのようなストアでエンティティを表現するために使用されるデータモデルなどの基礎的なアイデアは、最終的にReaqtorの作業に引き継がれました。リアクティブ機能を備えた分散型グラフデータベースの初期の北極星ビジョンは、統一されたプログラミングモデルによって、データの空間的(ノードとエッジのグラフ)および時間的(ノードとエッジの変更の時間軸)なトラバーサルをサポートするシステムを構築したいという願望に基づいていました。
The ideas of this project were carried forward to a distributed graph database effort, which is discussed later in this document. Foundational ideas such as shipping code to data as well as the data model used to represent entities in such a store ultimately carried forward to the Reaqtor work. The initial north star vision for a distributed graph database with reactive capabilities was also informed by the desire to build a system that supports spatial (graph of nodes and edges) and temporal (time axis of changes to nodes and edges) traversal of data through a unified programming model.
この分野での考え方は、最終的に分散オブジェクトグラフの研究(後述)に発展しました。これは、クラウド規模で運用されているBing組織で実績のある分散システム技術の上に構築されたものです。ここから、エリックはアクターベースのプログラミングの基礎を研究するために、Service Fabricの前身である新しくリリースされたWindows Fabricの上に "ActorFx "と呼ばれるアクターフレームワークを構築し、自己回復型の分散システムを構築するための低レベルの複雑さを排除したいと考えるようになりました。
Thinking in this space was ultimately spun off in the distributed object graph work (see further on), built on top of proven distributed systems technology in the Bing organization operating at cloud scale. Out of this came Erik’s desire to research the fundamentals of actor-based programming by building an actor framework called “ActorFx” on top of the newly released Windows Fabric, which was the predecessor to Service Fabric, thus eliminating the low-level complexities of building self-healing distributed systems.