우리는 서버 측에서 Java를 사용하여 대용량 전자 상거래 웹 사이트 인 db40을 찾고 있습니다. 동시성 및 트랜잭션 지원은 우리에게 매우 중요합니다. 고객이 항목을 구매할 때 단일 거래 내에서 재고 및 고객 주문 내역을 각각 업데이트하기 위해 제품 및 고객 오브젝트를 잠글 필요가 있습니다. db4o로 가능합니까? 다중 객체 트랜잭션을 지원하는지 확인하고 싶습니다.db4o는 동시성과 트랜잭션을 어떻게 지원합니까?
답변
여기에도 비슷한 질문이 있습니다 (예 : one). 그리고 제 대답은 다소 다릅니다.
대용량 전자 상거래 웹 사이트 정보 : db4o는 대용량, 대용량 데이터베이스로 구축 된 것이 아니라 데스크탑 및 모바일 응용 프로그램과 같은 내장 된 유스 케이스로 제작되었습니다. 글쎄 그것은 '높은 볼륨'이 무엇을 의미하는지에 달려 있습니다. 수백 또는 동시 트랜잭션을 의미한다고 가정합니다. db4o의 범위를 벗어납니다.
동시성 및 트랜잭션 지원 : db4o 코어는 여전히 기본적으로 단일 스레드이므로 소량의 동시 작업 만 제공 할 수 있습니다. db4o supports transactions은 read committed isolation입니다. 이는 트랜잭션이 다른 트랜잭션의 커밋 된 상태 만 볼 수 있음을 의미합니다. 실제로 이것은 매우 약한 보증입니다.
예를 들어, 한 번의 트랜잭션으로 제품 및 소비자의 구매를 업데이트 할 수 있습니다. 그러나 다른 트랜잭션은 이러한 오브젝트를 갱신하고 커밋 할 수 있습니다. 그런 다음 이미 일부 객체를 읽은 실행중인 트랜잭션은 이전 값으로 계산을 수행 할 수 있습니다. 그래서 약한 격리는 당신의 상태를 오염시킵니다. 잠금을 사용하여 잠금을 방지 할 수 있지만 db4o에는 멋진 개체 잠금 메커니즘이 없습니다. 그리고 그것은 성능을 더욱 감소시킬 것입니다.
모두 당신은 아마도 동시성과 트랜잭션 처리를 더 잘 지원하는 '더 큰'데이터베이스가 필요할 것이라고 생각합니다.
db4o semaphores을 사용해야하는 것 같습니다.
물론 가능합니다. 그러나 세밀한 나뭇결 잠금 권한을 얻으려면 많은 노력이 필요합니다. 그리고 스케일링 측면을 더욱 악화시킵니다. 그 시점에서 나는 그러한 것들을 훨씬 더 잘 지원하는 '더 큰'데이터베이스를 골라야한다고 생각합니다. – Gamlor
- 1. MongoDB/CouchDB는 트랜잭션을 지원합니까?
- 2. Spring은 SAP JCo 트랜잭션을 지원합니까?
- 3. Entity Framework는 COM + 트랜잭션을 지원합니까?
- 4. 젠드 프레임 워크 동시성과 아약스
- 5. Cassandra memtable에서 동시성과 잠금이 어떻게 해결 되었습니까?
- 6. MSCRM 웹 서비스는 데이터베이스 트랜잭션을 지원합니까?
- 7. db4o는 경험이 있으십니까?
- 8. db4o는 트리 구조의 C#
- 9. 데이터베이스 벤더는 어떻게 트랜잭션을 구현합니까?
- 10. Entity Framework는 트랜잭션을 어떻게 처리합니까?
- 11. PHP로 Interbase 트랜잭션을 어떻게 사용합니까?
- 12. db4o는 LINQ 쿼리 - 널 (null) 문자열 안녕
- 13. Db4o는 Eclipse 디버그 모드에서 매우 느립니다.
- 14. 어떻게 트랜잭션을 롤백 할 수 있습니까?
- 15. Ruby DataMapper에서 트랜잭션을 어떻게 활용할 수 있습니까?
- 16. Python에서 pyodbc를 사용하여 어떻게 트랜잭션을 수행합니까?
- 17. DynamicQueryable은 Array 연산자를 어떻게 지원합니까?
- 18. JavaCC에서 어떻게 키릴 문자를 지원합니까?
- 19. NUnit에서 데이터베이스 테스트를 지원합니까?
- 20. Active Directory는 트랜잭션을 인식합니까?
- 21. MySQL은 트랜잭션을 지원하지 않습니다?
- 22. Linq에서 SQL에 트랜잭션을 처리
- 23. MySQL과 트랜잭션을 배우려고 시도
- 24. 다중 스레드간에 하나의 트랜잭션을 공유하는 방법
- 25. 데이터베이스 디자인 : 어떻게 다국어 사이트를 지원합니까?
- 26. GDI +는 어떻게 부동 소수점 값을 지원합니까?
- 27. 우리는 dontEscape를 어떻게 지원합니까? .NET 3.5
- 28. 클릭 한번 배포시 어떻게 클라이언트 프로파일을 지원합니까?
- 29. wsdl 파일에서 PHP 예외를 어떻게 지원합니까?
- 30. 스레드 동시성과 병렬 처리를 함께 사용할 수 있습니까?
코어가 단일 스레드입니까? db4o의 빅 브라 더 (Villant VOD)도 마찬가지입니까? 나는 믿기가 어렵다는 것을 알게된다. 코어에서 단일 스레드 인 경우, 간단한 읽기가 다른 읽기가 실행될 때까지 기다려야한다는 것을 의미합니다. RDBMS보다 10 배 성능이 정확히 나오는 곳은 어디입니까? – user646584
물론 VOD에는 맞지 않습니다. db4o의 현재 상태를 설명했습니다. VOD는 또 다른 짐승이며 이러한 모든 기능을 지원합니다. – Gamlor
데이터베이스 이론이 상당히 약하므로 '읽기 전용 격리'보다 나은 격리 계획에 대해 더 알고 싶습니다. '더 큰'데이터베이스가 이것을 어떻게 효과적으로 처리하는지 몇 가지 정보를 지적 할 수 있습니까? 나는 수색이 있었지만 많이 찾을 수는 없었다. 어쩌면 최소한 핵심 단어를 제공 할 수 있습니다. –