현db


사용자가 쿼리보냄

-> 옵티마이저가 쿼리 분석함

-> 테이블 조인 좆되게 많은거 조인 순서를 옵티마이저가 순서 정함

-> 옵티마이저가 순서 병신처럼 짜면 dba 가 힌트 줘서 조인순서 유도함

-> 정한 순서대로 테이블 읽어서 쭊쭊쭊 모든 테이블 읽음


양자db


사용자가 쿼리보냄

-> 옵티마이저가 쿼리 분석함

-> 어? 시발 조인 왜케 많아 이거 양자컴한테 하청 때려야지

-> 야 양자컴아 이거 조인 순서 어케할까?

-> 으휴 병신아 실행계획 줘봐. 이케해 병신아 ㅉㅉ

-> 오키 그럼 이 순서로 조인한다 

-> 양자컴이 정한 순서대로 테이블 읽어서 쭊쭊쭊 모든 테이블 읽음





대충 양자db 의 기능중 하나임 이게










아래는 db 가 실제 api 어케 보낼지 gpt 가 설명해줌

API 콜로 보내는 데이터의 실체 (JSON 예시)

옵티마이저는 대략 다음과 같은 구조의 JSON 데이터를 양자 API로 전송합니다.

json
{ "problem_type": "join_order_optimization", "num_joins": 5, "join_costs": [ [0, 100, 200, 150, 300], [100, 0, 250, 180, 220], ... ], "selectivities": [0.01, 0.05, 0.02, 0.10, 0.03], "constraints": [...] }

각 필드가 의미하는 바는 다음과 같습니다.

  • num_joins: 조인할 테이블의 총 개수입니다. (예: 5개 테이블 조인 시 5)

  • join_costs: 비용 행렬(Cost Matrix)입니다. join_costs[i][j]는 테이블 i와 테이블 j를 조인할 때의 예상 비용(처리 시간, I/O 비용 등)을 숫자로 나타낸 것입니다. 옵티마이저는 통계 정보를 바탕으로 이 행렬을 미리 계산합니다.

  • selectivities: 선택도(Selectivity) 리스트입니다. 각 테이블이 WHERE 조건 등으로 얼마나 데이터를 걸러낼지에 대한 추정치입니다. (0에 가까울수록 많은 데이터를 걸러냄)

  • constraints: 제약 조건입니다. "이 테이블은 반드시 먼저 조인되어야 한다"와 같은 특수한 규칙이 있을 경우 이를 전달합니다.




https://qiskit.qotlabs.org/docs/api/functions/kipu-optimization


실제 api 는 ibm 퀀텀뭐시기 문서에서 problem 이라는 파라미터가 문제만 풀어주는거임


지금도 가능함

10분에 16만원


근데 그걸 db 에서 바로 못보내 


쿼리나 옵티마이저의 비용 결과값은 ibm 의 api 형태가 아니니까



즉, 

사용자쿼리 -> db 옵티마이저 -> 중간다리로 양자 클라우드 api 변환 -> 양자클라우드



https://github.com/inefabl/Hybrid-DB-system

https://github.com/ihanwen99/Q2O


여기 이런식으로 개발되어있대


D-Wave Leap 의 NL-Solver 사용한다고 나옴