programing

지원되지 않는데 MariaDB ColumnStore에서 순환 조인을 수행할 수 있는 방법이 있습니까?

copyandpastes 2023. 8. 14. 23:41
반응형

지원되지 않는데 MariaDB ColumnStore에서 순환 조인을 수행할 수 있는 방법이 있습니까?

MariaDB ColumnStore를 사용하고 있으며 ColumnStore에서는 Circular 조인이 지원되지 않습니다.

데이터베이스에는 여러 국가와 고객으로부터 전송된 측정에 관한 데이터가 있습니다.

따라서 다양한 역할을 수행하려면 뷰 내부의 데이터를 필터링할 수 있어야 합니다.

이것이 제가 지금 가지고 있는 구조입니다.

TABLE Measurements:

Country    Customer    Measurement
  a           1           150
  a           2           200
  b           3           250

사용자를 역할에 매핑하는 테이블이 있습니다.

 TABLE UsersToRoles:

 Users      Roles 
   x        role1
   y        role2

볼 수 있는 데이터에 역할을 매핑하는 테이블이 있습니다.

TABLE RolesToData

Roles  VariableType  VariableValue
role1  Country         a
role1  Customer        1
role1  Customer        2
role2  Country         b
role2  Customer        3

다음 역할 보기를 만들었습니다.

 CREATE VIEW RoleView AS (
 SELECT UsersToRoles.User, Country, Customer FROM UsersToRoles.users AS User,  
 Country.VariableValue AS 'Country' FROM 
 ((UsersToRoles JOIN RolesToData Country ON (UsersToRoles.Roles = 
 Country.Roles AND Country.VariableType = 'Country'))
 JOIN RolesToData Customer ON (UsersToRoles.Roles = Customer.Roles AND 
 Customer.VariableType = 'Customer')))

다음 VIEW를 반환합니다.

User    Country    Customer
 x        a           1  
 x        a           2 
 y        b           3

그런 다음 국가 및 고객 모두에 대한 역할 보기를 통해 측정 테이블에 참여하고 싶습니다.

  CREATE VIEW FinalView AS (SELECT measurement.* FROM measurement JOIN RoleView ON 
 (measurement.country = RoleView.country AND measurement.customer = RoleView.customer))     

문제는 MariaDB ColumnStore가 순환 조인을 지원하지 않는다는 것입니다.

원형 접합을 하지 않고 원형 접합을 달성할 수 있는 작업이 있습니까?

여러 보기를 만들고 각 보기에 대해 왼쪽 또는 오른쪽 조인을 수행하는 것을 통해 가능합니까?

이에 대한 해결책을 찾는다면 정말 감사할 것입니다.

편집: 업데이트

저는 빠른 해결책을 찾았지만, 이것이 심각한 영향을 미칠지는 모르겠습니다.

조인 조건 중 하나에서 CONCAT를 사용하면 작동합니다.

  CREATE VIEW FinalView AS (SELECT measurement.* FROM measurement JOIN 
  RoleView ON 
  (measurement.country = CONCAT(RoleView.country,"") AND measurement.customer = 
  RoleView.customer))

이 스레드에서 Andrew의 코멘트를 기반으로 합니다.

https://jira.mariadb.org/browse/MCOL-1205

정확하게 설명했듯이 간단한 해결 방법은 원형 조인 조건을 이 함수의 인수에 효과적으로 아무런 영향을 미치지 않는 기능적 조건으로 바꾸는 것입니다.

언급URL : https://stackoverflow.com/questions/56932762/is-there-a-way-to-achieve-circular-joins-in-mariadb-columnstore-since-it-is-not

반응형