2013-03-05 2 views
0

저는 CodeIgniter/MySQL에서 Laravel/MongoDB로갑니다.MongoDB 및 MVC 모델 변수

예를 들어 플랫폼에 의해 다른 변수와 사용자 클래스 : 모바일 앱 사용에

  • ID
  • 이름
  • browser_kind

:

I 웹 사이트는 변수를 사용 변수 :

  • ID
  • 이름
  • ios_version

이 경우를 고려하면, 내 모델에서 둘 다 바르해야합니까?

<?php 
    class user{ 
     public $id; 
     public $name; 
     public $browser_kind; 
     public $ios_version; 
    } 
?> 

사전 정의 된 구조가 필요없는 NoSQL의 이점은 무엇입니까? 모델에서 이것을 어떻게 사용합니까?

답변

1

Mongo는 스키마가 필요하지 않기 때문에 모델을 모델링해야합니다. 가장 큰 이점 중 하나는 Mongo가 끊어지지 않고 데이터 모델을 변경할 수 있다는 것입니다.

1

개인적으로 나는 null (browser_kind 또는 ios_version)을 같은 문서에 저장합니다. 그 이유는 향후 확장을위한 것입니다. IOS는 파이어 폭스와 오페라 미니 등을 지원하므로 전체 스키마를 함께 저장하는 것이 좋습니다.

그러나 여기에 두 가지 종류의 정적 스키마가있는 것 같습니다. browser_kindios_version을 동일한 문서에 저장하는 것이 좋습니다 (null).

두 스키마는 중복되지 않습니다 (시나리오에 대해 알고있는 내용에서). 컬렉션에 포함 된 문서의 수에 따라 상당한 양의 공백을 사용하게됩니다. 이것은 MongoDB가 현재 파일을 압축하지 않기 때문입니다.

또한이 필요 null, 즉 browser_kind을 결코 것이 필드 것 같아 다른 모든 분야가 아닌 모바일 사용자를 위해 그들을 필요로하는 문서 null 수 없을 것입니다.

마찬가지로 모델을 가지고있는 방식으로 유지하지만 저장하지 않으려는 필드를 지우려면 array_filter과 같은 기능을 사용합니다.

물론 이것은 문제입니다.이 논리를 모두 자신이 많이하지 않는 한 얻을 수없는 장소로 추상화하는 프레임 워크를 사용하고 있습니다. 이를 고려하면 하나의 user 클래스에서 추상화하는 두 클래스를 만들 수 있습니다. 하나는 browser_kind이고 다른 하나는 ios_version을 정의하지만이 경우 응용 프로그램에 가중치가 추가되기 시작합니다.

그래서 여기에는 몇 가지 옵션과 생각할 사항이 있습니다.