거대한 사전을 만들었습니다. 아마도 수 백 기가 바이트 정도 였을 것입니다. 그러한 객체를 저장하는 현명한 방법이 있습니까? 여기bson을 디스크에 쓸 때 메모리 부족 오류가 발생했습니다.
print "Writing to file..."
jsontext = bson.dumps(sample_dict)
f = open(predump_file, 'wb+')
f.write(jsontext)
f.close()
내가 얻을 스택 추적한다 :
Writing to file...
Traceback (most recent call last):
File "Combine.py", line 1331, in <module>
jsontext = bson.dumps(sample_dict)
File "/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/__init__.py", line 69, in dumps
return encode_document(obj, [], generator_func = generator)
File "/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/codec.py", line 207, in encode_document
encode_value(name, value, buf, traversal_stack, generator_func)
File "/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/codec.py", line 177, in encode_value
traversal_stack, generator_func))
MemoryError: out of memory
선택 사항 (I는 현재이 생각할 수) :
-
을 나는 디스크에 밀어 다음과 같은 루틴을 사용하고 있습니다
- 사전은 중첩되어 있으므로 기본적으로 사전을 레이어로 나눕니다.
- 첫 번째 키에서 사전을 분할하고 이러한 기본 사전에 다른 색인을 제공하십시오. 그런 다음 N 사전을 독립적으로 저장할 수 있습니다. 이것이 좋은 경우 키 사전을 분리하고 최상위 계층 색인 사전을 생성하는 권장 방법이 있습니다. 나는 각 하위 사전이 변수 여야한다고 생각하고있다. 그래서 우리가 중첩 된 큰 사전을 갖게되면 그것을 N 개의 더 작은 사전으로 나누고 매핑 색인을 맨 위에 놓을 수 있습니다.
- 여기 MongoDB는 잠재적 인 솔루션입니까?
사전 콘텐츠를 표시 할 수 있습니까? 중첩 된 사전의 깊이는 얼마입니까? 개인적으로이 작업을 수행하기 위해 데이터베이스를 사용합니다. – Anzel