Agile Cat — in the cloud

NoSQL は Microsoft にとって重要だから、Microsoft だけに任せておけない!

Posted in Microsoft, NoSQL by Agile Cat on August 11, 2010

NoSQL on the Microsoft Platformby Max Indelicato on 8/9/2010 10:22:05 PM
http://www.dotnetconvo.com/post/view/2010/8/9/nosql-on-the-microsoft-platform

・・・ というわけで、原題とは違うニュアンスのタイトルを付けてしまいましたが、本文を読んでいただければ、このタイトルの意図が分かっていただけると思います。 Microsoft がモタモタしているなら、オレたちでさっさと進めちゃうよという、愛のある挑戦状と理解すべきなのでしょうか? ーーー A.C.

ーーーーー

bf952f38-16fe-4bbb-8ac7-e331bb233ad0

NoSQL is a trend that is gaining steam primarily in the world of Open Source. There are numerous NoSQL solutions available for all levels of complexity: from queryable distributed solutions like MongoDB to simpler distributed key-value storage solutions like Cassandra. Then there’s Riak, Tokyo Cabinet, Voldemort, CouchDB, and Redis. However, very few of these packaged NoSQL products are available for the other end of the platform market: Microsoft Windows. I’m going to outline what’s available now and briefly touch on some opportunities that are still available to the daring Microsoft engineer.

NoSQL は、主としてオープンソースの世界で勢いを増している傾向にある。 そこには多数の NoSQL ソリューションがあり、MongoDB のような、queryable 分散型ソリューションから、Cassandra のような、単純な分散 key-value ストレージソ・リューションにいたるまでの、すべてのレベルにおける複雑さに対して適用することが可能である。  さらに言えば、Riak や、Tokyo Cabinet、Voldemort、CouchDB、Redis などがある。 しかし、これらのパッケージされた NoSQL プロダクトは、もう一方のプラットフォーム・マーケットである Microsoft Windows において、きわめて少数しか利用できない。 ここでは、現時点で利用できるもの、そして大胆な Microsoft エンジニアにとって、利用する機会が提供されているものについて、簡単に触れていく。

What’s Available Now

There are a handful of NoSQL projects that currently support Microsoft Windows and support it well enough for practical use.

現時点において、Microsoft Windows をサポートし、また、実用面で充分にサポートされる、ひと握りの NoSQL プロジェクトがある。

Memcached

Memcached is not traditionally considered a NoSQL solution, but being a distributed key-value in-memory cache, it can be used to house a variety of transient datasets in a manner typical of other NoSQL data stores.

現時点において、Microsoft Windows をサポートし、また、実用面で充分にサポートされる、ひと握りの NoSQL プロジェクトがある。
従来から Memcached は NoSQL ソリューションとは考えられていないが、分散 key-value イン・メモリー・キャッシュであり、他の NoSQL データストアの典型的な方式において、トランジット・データセットのために場所を提供するものとして利用できる。

NorthScale has a nicely packaged, freely downloadable, version of Memcached that works on both 32-bit and 64-bit versions of Windows. You can check it out here: http://www.northscale.com/products/memcached.html

NorthScale は Windows 32-64 bit で機能する、 Memcached のフリー・ダウンロードが可能なバージョンである。 詳細については、ここで: http://www.northscale.com/products/memcached.html

MongoDB

MongoDB is a document-based (JSON-style ) data store capable of scaling horizontally via its auto-sharding feature. It uses a simple but powerful query language based in JSON/javascript and is capable of fast inserts and updates thanks largely to its low-overhead atomic modifiers. Additionally, Map/Reduce is used for aggregation and data processing across MongoDB databases.

MongoDB は、自身の auto-sharding 機能を介して、水平にスケールする能力を持った、ドキュメント・ベースの(JSON 風の)データストアである。 そこでは、JSON/javascript とベースとした、シンプルだがパワフルなクエリー言語が用いられ、また、オーバーヘッドの少ないatomic modifier により、挿入と更新を高速で処理する。 さらに、MongoDB データベース全体にまたがる、アグリゲーションとデータ処理のために、Map/Reduce が使われる。

The team at 10Gen, the company behind MongoDB, officially supports the Windows platform and has since early on in the development process. It currently sits at version 1.6.0 and is in use at a number of high-profile web companies.

MongoDB を展開する 10Gen のチームは、その開発プロセスの早期から、公式に Windows プラットフォームをサポートしている。 世間の注目を集める複数の Web カンパニーにおいて、現行の Ver 1.6.0 が利用されている。

You can find more information about setting up MongoDB on Windows here: http://www.mongodb.org/display/DOCS/Windows

MongoDB on Windows の詳細については、ここで: http://www.mongodb.org/display/DOCS/Windows

And you can download the latest version here: http://www.mongodb.org/downloads

最新バージョンのダウンロードは、ここで:http://www.mongodb.org/downloads

sones GraphDB

The sones GraphDB is an enterprise graph data store developed in managed .NET code using C#. It is open source and available for free download for non-commercial usage. Commercial usage licenses are available.

sones GraphDB は、C# と マネージド .NET で開発された、エンタープライズ向けのグラフ・データ・ストアである。
それはオープンソースであり、非営利目的のために、フリーでダウンロードして、利用することが可能である。 また、商用ライセンスも利用できる。

Graph databases in general are a different kind of beast than the typically referenced NoSQL storage examples. They excel at handling a specific class of problem: datasets that include a high number of relationships and require traversing those relationships quickly and efficiently.

たとえば、NoSQL ストレージの例として参照される製品と比べて、グラフ・データベースは猛獣とも言えるパワーを持つ。
たとえば、大量の関連性を持つデータセットや、それらの関連性を高速かつ効果的に走査する場合などの、特定のレベルにおける課題を処理する際に優れる。

A common use-case for graph databases is for storing social relationships or “social graphs”. Often, these social graphs are made up of nodes with many individual relationships between other nodes. This is a problem domain that traditional relational database handle poorly.

グラフ・データベーにおける一般的なユースケースは、ソーシャル・リレーションシップあるいは、 “social graphs” のストアである。 大半のケースにおいて、それらのソーシャル・グラフは、それぞれのノード間における大量の関係を用いて、ノード全体を構成している。
これは、従来からのリレーショナル・データベースでは、対処することが不可能な問題ドメインである。

You can find more information about the sones GraphDB  source code on GitHub here: http://github.com/sones/sones

And cost information and a feature breakdown of the various license options here: http://www.sones.com/produkte

sones GraphDB  source code on GitHub に関する詳細については、ここで:http://github.com/sones/sones

各種の価格オプションに関する詳細については、ここで:http://www.sones.com/produkte

Voldemort

Voldemort is a distributed key-value storage system used at LinkedIn for “certain high-scalability storage problems where simple functional partitioning is not sufficient.” It’s written in Java and by virtue of the fact that Java is cross-platform, it can be configured to work on Windows.

Voldemort は 「シンプルな機能によるパーティショニングでは対応できない、特定のハイ・スケーラビリティ・ストレージ問題」のために、LinkedIn で使用されている分散 key-valueストレージ・システムである。 それは Java により記述され、また、Java のクロス・プラットフォーム特性を活かすことにより、Windows 上で機能するようにコンフィグレーションできる。

Check out this link on GoNoSQL.com to learn more about setting it up in a Windows environment: http://www.gonosql.com/how-to-install-voldemort-on-windows/

Windows 環境における設定について、詳細情報が必要な場合には GoNoSQL.com で:http://www.gonosql.com/how-to-install-voldemort-on-windows/

NoSQL Project Opportunities

This is an exciting time in the world of Microsoft. Partial as a result of the fact that the Microsoft club is slow to take hold of the NoSQL trend, opportunities are abound for developers to begin implementing a host of NoSQL storage solutions.

いまは、Microsoft の世界における、エキサイティングな時間帯である。 Microsoft クラブの面々が、NoSQLトレンドをつかむのが遅いという、限定された事実の結果として、NoSQL ストレージ・ソリューションを、デベロッパーたちが実装し始めるるという期待がたくさん生じる。

Thinking through some of the possibilities and what there is to work with and build upon, some interesting possibilities have presented themselves…

いくつかの可能性を考え、その上で作業できることついて考えると、そのための道が開けてくる ・・・

Managed ESENT-Backed Distributed Data Store

The best analogy I can think of to describe Managed ESENT is that it is the BerkleyDB of the Microsoft world. It is hardly known and rarely used by .NET developers, but its performance and reliability have been proven time and time again by ESENT’s usage in major Microsoft products like Active Directory, Exchange Server, and more.

Managed ESENT を記述するために検討すべき最良の類推は、Microsoft の世界における BerkleyDB である。 それを .NET デベロッパーが知ることも、また、使うことも、ほとんど無い。しかし、そのパフォーマンスと信頼性は、Active Directory や Exchange Server などの、Microsoft の主要プロダクトで ESENT で用いられたことで、何度も証明されている。

More technically, ESENT is an “embeddable database engine native to Windows.” Managed ESENT is a CodePlex project and the .NET wrapper around the esent.dll that is part of every late Windows version.

テクニカルに説明すると、ESENT は「Windows にネイティブでエンベッドできるデータベース」である。 Managed ESENT は CodePlex プロジェクトであり、また、最近の Windows バージョンに取り込まれている、esent.dll の .NET ラッパーである。

I will say this – in the limited testing that I have done, it is damn fast – on the order of 100,000 inserts per second. See the Performance section here for more rough stats: http://managedesent.codeplex.com/wikipage?title=ManagedEsentDocumentation&referringTitle=Documentation

私が実施した限定的なテストにおいて、つまり、毎秒100,000回の挿入というオーダーにおいて、それは極めて高速であったと言いたい。ラフな統計値ではあるが、以下の Performance セクションを見て欲しい:http://managedesent.codeplex.com/wikipage?title=ManagedEsentDocumentation&referringTitle=Documentation

I’m imagining a Microsoft NoSQL solution that uses Managed ESENT as the backing store for a simple, distributed, key-value or columnar data store. Use C# or F# with asynchronous TCP networking and consistent hashing or a lookup/routing instance and we could have something here. Makes me want to play around with that and see what comes of it – anyone else interested in thinking this through with me in the comments?

私が想像するには、Microsoft NoSQL ソリューションとは、シンプルで分散された、key-value あるいは cloumn のデータストアを、外部記憶装置として使用する Managed ESENT のことである。 非同期の TCP ネットワーキングと、一貫したハッシュもしくは lookup/routing インスタンスを、C# あるいは F# でコーディングすることで、面白い結果が得られた。 それを私に続けさせ、そこから生ずるものを確認したいなら、コメントなどを介して一緒に考えて欲しい。

In-Memory Dictionary-Backed Distributed Data Store

Another alternative, and admittedly this will likely be food for thought for a future post, is the viability of an in-memory dictionary-backed distributed data store. This is similar in concept to the Managed ESENT version above, but contained entirely in volatile memory.

今後のポストにおける思考の材料になるが、別の選択肢として、イン・メモリの辞書により保持される、分配データストアを実行するものもある。それは、前述の Managed ESENT に類似しているが、揮発性メモリの中に、全体が保持されるものだ。

This could serve as the basis for a distributed cache, or could be persisted by replicating data across a series of nodes. With the intent that by having at least a subset of nodes running at any one time, data within the data store would be persisted. Amazon, or any other cloud-based non-persistent server solution would host this perfectly. It’s “out there” as a general concept, but I’m a proponent in a big way – more on this in a later post.

それは、分散キャッシュの基盤として機能し、また、一連のノード全体でデータを複製することで、永続性を持つ。 少なくとも、どの時点においても、ノードの下位グループを実行できるという考え方により、データ・ストア内のデータは、永続性を持つだろう。 Amazon などの、クラウド・ベースの non-persistent サーバー・ソリューションは、この考え方に完全に対応しているだろう。 それは、一般的な概念として、そこにあり、私は支持者であるが、詳細は後のポストで説明する。

Closing Thoughts

There is clearly limited options available to Microsoft/.NET developers as far as NoSQL solutions go. That is a shame, but can and will change with time. As .NET developers, it is up to us to make that happen and with some of the ideas I’ve presented above, it should be clear that opportunities are abound.

NoSQL ソリューションに関する限り、Microsoft / .NET デベロッパーが利用できる選択肢は、明確に限定されている。 それは残念なことであるが、時間が解決するだろう。 .NET デベロッパーとして、それを実現するのは、私たち次第となる。 そして、前述のアイデアにより、機会が増えるはずである。

I consider this an exciting time and being able to bring NoSQL to the Microsoft masses is an effort that I’m willing to get behind. If there are any volunteers that would like to discuss this further, please comment below!

いまは、エキサイティングなタイミングであると思う。 そして 、NoSQL を Microsoft の人々にもたらすことに、努力はいとわない。 それについて、ディスカッションしたいボランティアがいるなら、コメントしてほしい!

UPDATE:

Matt Warren mentioned RavenDB.net in the comments. Looks like an interesting document-database project written in .NET. Thanks Matt!

UPDATE 2:

Faulkner mentioned in the comments that Cassandra works in Windows as well! Check out this source for more information on getting it running and working with it from the client side: http://www.ronaldwidha.net/2010/06/22/resources-on-apache-cassandra-for-net-devs/

About the Author

f7ffdc2c-0990-451e-9525-d026567b61f9

Max Indelicato

Director of Infrastructure and Software Development at Stride & Associates

Max has worked in a variety of companies, including startups, growth-stage businesses, and established enterprises. He’s held the roles of Chief Software Architect, Director of Technology, and the like, where he’s built and maintained mobile marketing platforms, large scale public-facing e-commerce websites, and a series of financial applications supporting fixed-income securities financial entities.
bef846c1-3fe5-4e6a-98f2-558405268473 Follow Me

ーーーーー

このブログ・ポストのコメント欄には注目ですね。 High-Scalability からリンクが貼られているということは、とての多くのエンジニアが見ているということで、Redmond からのコメントが期待されているのではないでしょうか? ーーー A.C.

ーーーーー

<関連>
Big Data と LAMP Stack
Facebook、Twitter、Digg などでの Cassandra の状況について
Facebook のスケール感覚に驚愕!
Twitter が Cassandra を選んだ理由 — MyNoSQL
Cassandra:6つの迷信と 6つの真実
NoSQL Ecosystem とは?

%d bloggers like this: