비 차단 ORM 문제


9

나는 SO에 대한 질문을 했고, 내가 좋아하는 웹 프레임 워크에 대한 비 차단 ORM이 없다는 것을 알았습니다. 비 차단이란 비동기 검색을위한 콜백을 지원하는 ORM을 의미합니다. ORM에는 데이터가 수신 될 때 실행할 콜백 또는 이와 같은 것이 제공됩니다.

하나를 만들고 싶지만 개발을 시작하지 못하게하는 몇 가지 질문이 있습니다.

  • ORM을 개발할 때 어떤 문제가 발생할 수 있습니까?
  • 비 차단 검색을 지원하면 ORM의 복잡성이 크게 증가합니까?
  • 비 차단 ORM이 왜 그렇게 적은가?

업데이트 : 질문을 개선해야합니다. 우리는 이미 비 차단 방식으로 데이터를 수신 할 수있는 솔루션을 보유하고 있으며 이러한 솔루션을 사용하는 대부분의 회사는 원시 SQL을 사용한다고 생각합니다. 향후 프로젝트에서 재사용 할 수있는보다 일반적인 솔루션을 만들고 싶습니다. 우리는 어떤 어려움을 겪을 수 있습니까?

업데이트 2 : 선호하는 언어는 파이썬이지만 원칙에 관심이 있습니다. 이 질문은 실제로 비 차단 ORM이있는 플랫폼을 살펴볼 것입니다.


2
"비 차단 ORM"이란 무엇입니까? 데이터 를 받기 전에 어떻게 표시 할 수 있습니까?
Robert Harvey

6
@RobertHarvey : 비동기 검색 소리는 실제로 꽤 좋습니다. ORM에는 데이터가 수신 될 때 "활성화"하기위한 콜백 또는 일부가 제공됩니다. 그렇지 않으면 UI 응답 성을 보장하기 위해 ORM을 별도의 스레드로 분할해야합니다.
Marjan Venema 2016 년

@MarjanVenema, 예, 콜백을 지원하는 ORM을 원합니다.
Nikolay Fominyh 2016 년

1
그렇다면 좋아하는 동기식 ORM과 함께 비동기 콜백을 사용하는 것이 어떻습니까? stackoverflow.com/q/1239035
Robert Harvey

동기 ORM이 비동기 서버를 차단하기 때문에 @RobertHarvey.
Nikolay Fominyh 2016 년

답변:


2

ORM을 개발할 때 어떤 문제가 발생할 수 있습니까?

각 RDBMS 벤더가 제공하는 SQL의 특유한 문제를 처리 할뿐만 아니라 Object Relational Impedance Mismatch 를 연결하는 데 필요한 세탁 문제 목록을 처리해야합니다 . 요구 사항이 높아질수록이 부서의 문제는 더욱 심각해집니다. 예를 들어 결과 페이징을 구현하기 위해 생성 한 SQL은 Oracle, SQL Server 및 mysql간에 크게 다릅니다. 다행히도 이것은 차단 및 비 차단 ORM 구현간에 다르지 않으므로 파이썬 용 오픈 소스 ORM이있는 경우 거의 모든 문제를 해결하기 위해이를 크게 빌릴 수 있습니다.

비 차단 검색을 지원하면 ORM의 복잡성이 크게 증가합니까?

가장 큰 문제는 RDBMS 자체에 액세스하기위한 연결 라이브러리가 차단되고 있다는 것입니다. 이것이 해결해야 할 또 다른 차이점입니다. 사용자에게 보이지 않는 스레드를 관리하는 것은 추가 과제입니다. 또한 작업이 프레임 워크 사용자에 의해 동기식으로 인식되기 때문에 요청시 종속성을로드하는 것이 어려울 수 있습니다.

비 차단 ORM이 왜 그렇게 적은가?

이 마지막 시점에 대해서만 추측 할 수 있지만, 그러한 프레임 워크에 대한 수요가 적어야한다고 생각합니다. 필요에 따라 애플리케이션 코드에 다른 수준의 스레딩을 추가하여 비 차단 ORM을 부분적으로 시뮬레이션하고 규칙적인 차단을 유지하기 때문에 특별한 프레임 워크를 개발하는 것은 차선책 일 것입니다.


이 질문에 대한 답변이 더 나을 수 있는지 확실하지 않습니다. 감사.
Nikolay Fominyh 2016 년

6

사용중인 언어를 말하지 않았으므로 Node.js와 ORM을 추천 할 것입니다 : Node ORM , 노드의 모든 것이 비동기입니다. 이것은 다르지 않습니다.


질문이 업데이트되었습니다.
Nikolay Fominyh 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.