MySQL 백엔드를 사용하는 PHP 애플리케이션이 있습니다. 이것은 100 명 정도의 사용자 만있는 내부 애플리케이션으로, 초당 수천 개의 요청을받지 못합니다.데이터에 대한 계산 수행 위치 : 개체 또는 데이터베이스에서?
현재 Google 데이터베이스에서 '마스터'보기라고하는 것을 만들었습니다. 이러한 뷰는 모든 조회 테이블을 조인하고 모든 행 기반 계산을 수행합니다. 예를 들어 테이블에 members
테이블을 참조하는 member_id
을 저장합니다. 보기에서는 테이블의 모든 열을 가져옵니다. 모든 조회 테이블에 대해이 작업을 수행합니다. 행 기반 계산의 경우 일반적으로 두 날짜 간의 날짜 차이와 같은 간단한 계산입니다. 모든 조인이 이미 만들어져 있고 간단한 계산이 이미 이루어져 있기 때문에 쿼리를 작성 (특히보고)하기 때문에 이러한 마스터 뷰가 있습니다.
제 질문은 - 이것을 수행하는 가장 좋은 방법입니까? 예를 들어, 뷰 내에서 이러한 모든 계산을 수행하는 대신이 계산을 내 클래스로 옮깁니다.
<?php
class FlockEx extends Flock
{
public function getFlockAge()
{
$date1 = new \DateTime($this->getDatePlaced());
$date2 = new \DateTime($this->getDatePickedUp());
$difference = $date1->diff($date2);
return $difference->days;
}
}
그리고 대신 : 그래서, 내 위의 예에서, 대신 두 날짜 (flock_age
) 사이의 차이를 계산하는보기에서 열 필요없이 간단히 말해서 나는 당신이 계산을 수행하기 위해 내 클래스의 메소드를 작성합니다 이 룩업 테이블을 모두 합치면 다음과 같이 대신 해당 클래스의 새 인스턴스를 만듭니다.
<?php
$flockdb = new FlockDB();
$flock = $flockdb->getFlockById(4);
$memberdb = new MemberDB();
$member = $memberdb->getMemberById($flock->getMemberId());
...
이렇게하는 것이 가장 좋은 방법이 있습니까? 또는 단순히 가장 좋은 방법은 무엇입니까?
IMHO .... 나는 데이터베이스의 근육을 구부릴 수있는 한 모든 것을 데이터베이스에서 수행 할 것입니다. –