2012-04-25 4 views
1

저는 Codeigniter를 사용하여 관계형 데이터베이스를 작업 해 왔으며 심각한 프로젝트에서 DataMapper가 쓸모가 없다는 것을 알아 냈습니다. Codeigniter의 Active 레코드는 다 대다 또는 많은 방법론을 제공하지 않기 때문에 쓸모가 없습니다. DataMapper는 느리고 구성이 불가능합니다!CodeIgniter DataMapper가 느린가요?

  1. 쿼리 할 때 전체 테이블을 개체에로드합니다.
  2. 두 번째로 "A"를 넣으면 "A"를 넣을 때 데이터베이스에 2 개의 As가있게됩니다. 그것은 무시와 같은 옵션을 가지고 SQL.And 당신은 존재하지 않는 경우 항목을 쿼리하고, 다음 그것을 삽입해야합니다.
  3. 많은 코딩 작업을 수행했지만 거대한 데이터베이스를 만드는 데 적합하지는 않습니다.
  4. 쿼리하기에는 빠르지 않습니다.

커뮤니티 사이에 합의가있는 것 같습니다. PHP에서 pure mysql을 사용하여 many to many와 one to many에서 연산을 수행 할 것을 권장합니까? 아니면 내가 틀렸다고 생각하니? 제발 저에게 조언 해주십시오. 제 질문은 전문 웹 디자이너로서 데이터베이스를 사용하기 위해 무엇을 사용합니까?

+0

이 질문은 무엇입니까? 또는 작업에 대해 잘못된 도구를 사용하는 것에 대해 큰 소리로 말하고 싶지 않으십니까? – Jakub

+0

1 년 동안 코드 점화 장치를 사용한 후에 제 생각으로 다른 사람들의 의견을 듣고 싶습니다. 하지만 지금은 내 의견을 모두가 동의하지 않으므로 내 게시물을 삭제하고 싶습니다. –

답변

16

홀수 스테이트먼트의 비트.

요구 사항을 정의한 다음 그 요구 사항을 충족시키는 도구를 선택하십시오.

Datamapper는 ORM 인 Object Relational Mapper입니다. 이 경우 Active Record 디자인 패턴을 따르는 패턴입니다 (활성 레코드가없는 CI의 AR과이를 혼동하지 마십시오. 쿼리 작성기입니다). 데이터 엔티티 (이 경우, RDBMS 테이블의 레코드)를 오브젝트에 맵핑하고 오브젝트 간의 관계를 인식합니다.

ORM이하는 일입니다. PHP의 원시 함수를 사용하여 데이터베이스에 직접 액세스하는 것보다 속도가 더 빠릅니까? 전혀. 추가 된 추상화 수준으로 처리 시간이 추가됩니다.

데이터 조작에서 ORM의 목표가 가장 빠르지 않습니다. 컨트롤러 논리에서 데이터 조작을 추상화하여 응용 프로그램을보다 쉽고 빠르게 작성할 수 있으며, 그러한 유지 관리를 절대적으로 빠르게 수행 할 수 있습니다. 응용 프로그램. 비즈니스 컨텍스트 시간 == 돈에서와 마찬가지로 이점이 있습니다. 무료로 코드를 작성하고 2 비트 공유 호스트에서 코드를 실행하면 ORM이 적합하지 않을 수 있습니다.

또한 ORM은 스위스 육군 칼이 아닙니다. 이것은 데이터 수집에 대한 객체 지향 접근 방식이며 컬렉션과 그 관계를 조작하는 특정 목적을 위해 설계되었습니다.

작업에 적합한 도구가 아닌 경우 사용하지 마십시오. 몇 가지 이상한 기준에 따라 백만 건의 레코드를 대량으로 업데이트해야하는 경우 대신 원시 SQL 쿼리를 작성하십시오. 컨트롤러에서 데이터 조작 코드를 추상화하려면 사용자 정의 모델 메소드에서이를 수행하십시오. 특정 의견에 관해서는

:

  • Datamapper 속도가 느립니다 : 무엇에 비교?
  • 구성 할 수 없습니다 : http://datamapper.wanwizard.eu/pages/config.html을 참조하십시오.
  • 전체 테이블을로드합니다. 전체 테이블을 가져 오면 (yes) 예. 나는 이상하지 않다.
  • 동일한 데이터로 두 개의 개체를 만드는 경우 두 번 저장됩니다 : 예. 동일한 UPDATE 쿼리를 두 번 실행하는 경우와 동일합니다.
  • 대용량 데이터베이스에는 적합하지 않습니다. Datamapper는 테라 바이트 크기의 데이터베이스를 지원하므로 크기와 관련성이 없습니다.
  • 빠르지 않습니다. 답변 번호를 참조하십시오. 1.

전문 웹 디자이너 인 경우 MVC 아키텍처를 사용하여 응용 프로그램을 설계 및 구축하고 해당 작업에 적합한 도구 세트를 사용하여 응용 프로그램을 제공 할 수있는 올바른 방법을 알고 있어야합니다 시의 적절한 순간에 고객에게 전달할 수 있습니다.

시간 = 돈, 그리고 더 빨리 전달할 수 있고 더 빨리 유지 관리하거나 개선 할 수 있다면 고객을 유지할 수 있습니다. ORM이 당신을 도울 수 있습니다. 그러나 그것을하기위한 것이 아닌 것을 위해 그것을 사용하지 마십시오.

+0

@WanWizard 관련 정보 동일한 데이터로 두 개의 객체를 만드는 경우 두 번 저장됩니다 : 예. 동일한 UPDATE 쿼리를 두 번 실행하는 경우와 동일합니다. 거기에 SQL과 같은 중복에 대한 무시 방법이 있나요? –

+0

아니요, 없습니다. – WanWizard