簡體   English   中英

有誰知道如何在Riak中存儲大二進制值?

[英]Does anyone know how I can store large binary values in Riak?

有誰知道如何在Riak中存儲大二進制值?

目前,他們不建議不分割存儲大於50MB的文件。 請參閱: 常見問題-Riak Wiki

如果您的文件小於50MB,則可以像在Riak中存儲非二進制數據那樣繼續進行。

選擇Riak的另一個原因是為了靈活建模數據。 Riak將以與內容無關的方式存儲您告訴其的任何數據-它不強制執行表,列或引用完整性。 這意味着您可以將二進制文件與其他像JSON或XML這樣的程序員透明格式並排存儲 將Riak用作一種“文檔數據庫”(半結構化,大多為非規范化數據)和“附件存儲”將具有與鍵/值樣式方案不同的需求-即,需要有效的在線查詢,沖突解決方案,增加的內部語義以及可靠的關系表達。 Riak中的架構設計-簡介

@Brian Mansell的答案是正確的-您真的不希望在Riak中將大的二進制值(超過50 MB)作為單個對象存儲(Riak會在一段時間后變得異常緩慢)。

您有2個選擇,而不是:

1)如果二進制對象足夠小,則直接將其存儲。 如果超過某個閾值(開始時50 MB是一個不錯的任意值,但是實際上,請運行一些性能測試以查看集群的平均對象大小是多少,然后開始爬網)–分解文件分成幾個塊,然后分別存儲這些塊。 (實際上,我見過的大多數人都走這條路,使用1 MB的塊)。 當然,這意味着您必須跟蹤“清單”-哪些塊存儲在何處以及以什么順序存儲。 然后,要檢索文件,您首先必須獲取跟蹤塊的對象,然后獲取單個文件塊並將它們重新組合回原始文件。 看一下像https://github.com/podados/python-riakfs這樣的項目,看看他們是如何做到的。

2)或者,您可以僅使用Riak CS (Riak雲存儲)來完成上述所有操作,但是代碼是為您編寫的。 RiakCS的工作原理就是這樣-將傳入文件分成多個塊,分別在普通Riak中存儲和跟蹤它們,並在需要時將其重新組裝。 並且為您的方便提供了Amazon S3 API用於文件存儲。 我強烈建議您使用這種方法(以免浪費時間-分塊和跟蹤文件足夠困難)。 是的,CS是一種付費產品,但是如果您感到好奇,請免費試用開發人員試用版

就像其他所有值一樣。 為什么會有所不同?

使用Erlang介面( http://hg.basho.com/riak/src/461421125af9/doc/basic-client.txt )或「原始」HTTP介面( http://hg.basho.com/riak/ src / tip / doc / raw-http-howto.txt )。 它應該“正常工作”。

另外,通常在riak-users郵件列表上會比在這里找到更好的響應。 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com(z8000並沒有冒犯,后者似乎也有答案。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM