{"author_name":"master-0717","width":"100%","blog_url":"https://blog.game-programmer.jp/","provider_url":"https://hatena.blog","url":"https://blog.game-programmer.jp/entry/2017/03/02/201647","categories":["\u8ad6\u6587\u548c\u8a33"],"title":"Google\u306eSpanner\u306b\u95a2\u3059\u308b\u8ad6\u6587\u306e\u548c\u8a33 2/6","description":"blog.game-programmer.jp \u4e0a\u306e\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3059\u3002 2.IMPLEMENTATION This section describes the structure of and rationale underlying Spanner\u2019s implementation. It then describes the directory abstraction, which is used to manage replication and locality, and is the unit of data movement. Finally, it describes our da\u2026","image_url":"https://cdn-ak.f.st-hatena.com/images/fotolife/m/master-0717/20170301/20170301123928.png","type":"rich","version":"1.0","height":"190","provider_name":"Hatena Blog","published":"2017-03-02 20:16:47","author_url":"https://blog.hatena.ne.jp/master-0717/","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.game-programmer.jp%2Fentry%2F2017%2F03%2F02%2F201647\" title=\"Google\u306eSpanner\u306b\u95a2\u3059\u308b\u8ad6\u6587\u306e\u548c\u8a33 2/6 - 451 Unavailable For Legal Reasons\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","blog_title":"451 Unavailable For Legal Reasons"}