5

データを自動的に「エージングアウト」する機能を備えたオープンソースデータベースはどれですか。これにより、データを保存する期間を指定できますか?

つまり、データの一部に設定された日付または時刻が設定された後、データベースはそのデータのすべてのトレースを自由に削除できます。

更新:私は数日から数年、数分または数秒以上の年齢制限を探しています。したがって、キャッシュメカニズムは私が探しているものではありません。

4

4 に答える 4

8

MongoDBには、新しいリリース2.2に何かがあります。これは興味深いかもしれません-TTLコレクション

コレクションは、コレクションから期限切れのドキュメントを定期的に削除するバックグラウンドのmongodプロセスと組み合わせて、挿入時間を追跡する特別なインデックスによって期限切れになります。この機能を使用して、レプリカセットおよびシャードクラスターからのデータを期限切れにすることができます。

mongoシェルからTTLコレクションを作成するのは非常に簡単です-

db.mycollection.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )

  • ここから2.2rc0をダウンロードします(リリース候補、完全に本番環境に対応していません...本番ビルドの前にもう1つのリリース候補があります)

  • ここでログを変更

  • 2.2リリースノートはここにあります。

私は他の解決策について話すことができません。

于 2012-08-06T11:47:34.647 に答える
6

ほとんどのnoSqlデータベースはこの機能をサポートしていると思いますが、たとえば、cassandraには次の機能があります。

http://www.datastax.com/docs/1.0/ddl/column_family

Cassandraはここからダウンロードできます:

http://cassandra.apache.org/

ただし、このようなデータベースを有効期限のみに使用している場合は、キャッシュの使用を検討してください。特に、オブジェクトの存続時間が短い場合は、キャッシュを使用することを検討してください。結局のところ、キャッシュの目的は「一時的に保存したいオブジェクトのコンテナとして」です。ほとんどの従来のキャッシュは、ほとんどのNoSqlデータベースと同様に、Key-Valueキャッシュ/データストアです。

cassandraのようなnosqlデータベースは一般にデータの取得が非常に高速ですが、従来のキャッシュと比較してデータを絶えず追加および削除し、ファイルシステムやネットワークのオーバーヘッドを追加すると、ほとんどのデータベースのパフォーマンスが低下することがわかります。必要なのが実際にはキャッシュであることがわかった場合、私がお勧めできるものがいくつかあります。

http://ehcache.org/

非常に単純なAPIを備えた非分散キャッシュです

http://www.jboss.org/infinispan/

分散型メモリ内キャッシュ/K、Vストアです

ただし、キャッシュを使用すると、デフォルトでメモリ内にあるため、保存できる量に制限があります。それらのほとんどにはファイルシステムにデータを保存するオプションもありますが、それに関しては、noSQLデータベースを使用します。

于 2012-08-06T11:40:10.637 に答える
2

保存する必要のあるデータの種類によって異なります。単純なKey-Valueストアで十分であるか、ドキュメントデータベースが必要です。

これは、キャッシュの一般的な使用法です。EHCache、Hazelcast、Memcachedなどを試すことができます。ただし、これらは主にKey-Valueストアです。データを削除するポリシーはいくつかあります。最も古いもの、最も使用されていないものなどです。これらはかなりメモリ内のストアです。この機能を備えた永続的なK/Vストアが必要な場合は、Redisを試してください。

たとえば、使用統計などの時間ベースのデータを収集している場合は、古いデータを削除する代わりに集約するRRDタイプのデータベースを使用できます(日、週、月の合計を作成します)

ドキュメントデータベースのようなものが必要な場合は、MongoDBが単純なドキュメントの有効期限をサポートしているようです(http://docs.mongodb.org/manual/tutorial/expire-data/)。CouchDBはこれをサポートしていないようですが、タイマータスクを実行して古いデータを削除する場合があります。

于 2012-08-06T11:41:18.047 に答える
2

Couchbaseは、memcachedバイナリプロトコルを使用してTTL削除を提供し、存続時間を設定します。したがって、データ項目を保存できます。タイムスタンプを付けて、後で削除する必要があります(将来的には任意に削除できます)。その時が来ると、Couchbaseはデータ項目を削除します。

これは、RubyからTTLを設定する方法の例です。必要に応じて、他の言語の例があります: http: //www.couchbase.com/docs/couchbase-sdk-ruby-1.0/couchbase-sdk-ruby-getting-started-hello.html

于 2012-08-07T21:11:52.177 に答える