나는 ZODB에서 BTree을 사용하여 많은 양의 데이터를 저장하고 전체 순서가 트리의 크기와 로그 인 키를 기반으로 조회를 할 수 있음을 알고 있습니다. 문제는Python에서 ZODB의 양방향 매핑
, 좀 Persistent
객체 Foo
, 그리고 몇몇 다른 Persistent
객체 Bar
을하고 난 bidict의 의미에서, 그들 사이에 양방향 매핑을 저장하고 싶습니다.
는 (로그 시간) 두 개의 액세스를 수행하는 효율적인해야한다 즉 :
# foo is a Foo; bar is a Bar; foos is a collection of persisted Foos; bar is a collection of persisted Bars
baz = foos[foo]
quux = bars[bar]
# baz is a Bar that foo is mapped to
# quux is the Foo that bar is mapped to
지금 내가 생각할 수있는 유일한 편리한 방법은 단순히 내 스토리지 요구 사항을 다시 한 번 두 BTrees
유지하는 것입니다 : 하나의 저장 A에서 B 로의 맵핑과 B에서 A 로의 맵핑에 대한 다른 맵핑을 포함합니다. 물론, 항상 BTrees는 맵핑의 추가와 삭제가 둘 다 일괄 적으로 수행되기 때문에 동일한 요소를 포함합니다.
저의 관심은 나무가 데이터베이스 제약 조건없이 분리 될 수 있다는 것입니다. 이것이 가능하다고 생각하십니까?
이 작업은이 작업을 수행하는 유일한 방법 중 하나처럼 보입니다. – fatuhoku