2013-08-06 4 views
0

이벤트 및 분기 기반 응용 프로그램이 있습니다. 저는 가지가있는 사건과없는 사건이 두 가지 있습니다.최상의 데이터베이스, NOSQL 대 MySQL

이벤트 및 분기에는 위도와 경도가 있습니다.

이벤트에는 여러 개의 분기가있을 수 있습니다. 다른 지리적 좌표에서 거리 별 이벤트를 정렬하고 싶습니다.

브랜치가있는 이벤트의 경우 브랜치의 위치를 ​​사용하여 이벤트가 얼마나 가까운 지와 이벤트 자체의 위치를 ​​사용해야하는 이벤트를 찾아야합니다.

성능에 영향이없는 MySQL에서도 가능합니까? 아니면 잘못된 종류의 데이터베이스를 사용하고 있습니까? 스크립트로 다른 NOSQL 데이터베이스를 사용해야 현재 MySQL 및 포드 데이터를 해당 데이터베이스로 내보낼 수 있습니다.

이것은 약간의 설탕을 추가하는이 프레임 워크에서 ATM을 사용하는 기본 쿼리입니다 (당연히 이것은 일반 MySQL에서는 작동하지 않습니다), 분기가없는 이벤트는 올바른 순서로 나타나지 않습니다. 엔티티 사이의 관계의 어떤 종류가 있는지

SELECT 
    t.*, 
    DISTANCE(\"$latitude\", \"$longitude\", 
      IF(t.branches.latitude, t.branches.latitude, t.latitude),  
      IF(t.branches.longitude, t.branches.longitude, t.longitude) 
) as distance 
FROM table as t 
ORDER BY distance. 
+1

지점 및 이벤트는 얼마나 역동적입니까? 얼마나 많은 사람들입니까? 나는 당신의 경우 공간 인덱스가 작동해야한다고 생각한다. 접근 방식과 야구 경기 성능 수치는 [이 프레젠테이션] (http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL)을 참조하십시오. – 9000

+0

백엔드의 CMS를 통해 업데이트합니다. 얼마나 멀리 있는지보고자하는 위치는 사용자의 위치에서 가져온 것이므로 변경 될 수 있습니다. –

+0

공간 인덱스에 테스트를 제공한다고 가정합니다. 표를 예를 들어 채우십시오. 10000 개의 알려진 점, N 개의 점을 임의의 위치로 닫으십시오. '계획 설명', 시간, CPU로드, 메모리로드를 측정하십시오. 손으로 결과의 정확성을 직접 확인할 수 있는지 확인하십시오. 나는 그것이 속도와 자원 소비로 손으로 코딩 된 솔루션을 이길 것이라고 생각한다. – 9000

답변

2

, 당신은 SQL은 이러한 관계를 관리하는 오버 헤드를 줄이고 자. (비즈니스 로직, 이벤트 이름 = select something)

일반 스토리지 용 데이터베이스를 사용하고 서버 측 언어 (PHP, 루비, C#)에 대한 모든 비즈니스 로직 및 관계 관리를 수행하려는 경우, , NOSQL이 더 좋다.

+1

그래서 NOSQL에서 이러한 항목을 수동으로 처리하고 직접 정렬하여 성능 이점을 볼 수 없습니다. 벤치마킹해야합니다. –

+0

예, 로직을 직접 코딩하는 성능 향상이 거의 없을 것입니다. 나는 개인적으로 mysql을 사용할 것이다. – Kirka121

+0

굉장한 고맙습니다. :) –