it-swarm.dev

데이터베이스 작업 우수 사례

저는 Drupal을 배우고 있으며 데이터베이스가 가장 중요한 웹 사이트를 개발하고 싶습니다.

이미 데이터베이스의 확장 된 엔터티-관계 모델 (복잡한 종류)이 있습니다.

Drupal에서 사용할 데이터베이스를 생성 할 때 취해야 할 올바른 방향은 무엇이며, 생성 수동 하고 Drupal에서 다음을 사용하여 쿼리를 수행합니다. PHP는 처음부터 PHP + MySQL 사이트였습니까? Drupal이이를 수행하는 더 쉬운 방법을 제공합니까?

편집 :
저는 Drupal 숙련 된 개발자가 아닙니다. 내가 알고 싶은 것은 :

  • 데이터베이스 작업을 할 때 PHP + MySQL 단일 페이지를 개발하는 것처럼 SQL 구문을 사용하여 데이터베이스를 쿼리하는 더 좋은 방법이 있습니까?

Drupal 개발자가 데이터베이스를 만들거나, 데이터를 삽입하거나, 데이터를 수정하거나, 쿼리를 수행하고 데이터를 사용자에게 보여줄 때 일반적으로 수행하는 작업을 알고 싶습니다.

5
Oscar Mederos

당신의 엔티티-관계 모델은 우리가 Drupal에서 '콘텐츠 유형'이라고 부르는 것에 매핑 될 것입니다.

콘텐츠 유형은 일반적으로 CCK라고하는 콘텐츠 구성 키트 모듈을 사용하여 정의됩니다.

CCK를 사용하면 텍스트 필드, 숫자, 링크, 다른 콘텐츠 유형에 대한 참조, Drupal 사이트의 사용자에 대한 참조) 등 콘텐츠 유형에 포함 할 필드를 지정하고 클릭하여 정의합니다. .

정의 된 콘텐츠 유형을 사용하면 원하는 콘텐츠 (표 형식, 블로그 스타일 등)에 대한 목록의 종류를 파악하고보기 모듈을 사용하여 해당 목록을 만들 수 있습니다. 뷰는 정렬, 필터링, 액세스 제어, 동적 URL 인수 및 다른 콘텐츠 유형에 대한 관계 (조인 생각)가 포함 된 포인트 앤 클릭 쿼리 작성기입니다.

이것이 일반적으로 Drupal-에서 '데이터베이스'가 수행되는 방식이지만 실제로는 데이터베이스로 아무것도 할 필요가 없습니다.

7000 개 정도의 조합으로 해결할 수없는 매우 구체적인 사용 사례가있는 경우 Drupal 모듈), 'Pro = Drupal Development ') 모듈 개발을 배우고 사용자 정의 모듈을 나머지 Drupal에 통합하여 정확한 요구 사항을 충족합니다.

10
Darren Petersen

내 첫 번째 반응은 이것이 너무 기본적인 질문 일 수 있지만, Drupal과 함께 일하는 마음가짐에 너무 근본적이므로 다른 사람들의 훌륭한 작업을 사용하는 경향이 있기 때문에 대답 할 가치가 있습니다. 대부분의 경우 모듈을 통해 약간의 PHP/SQL 만 작성하면됩니다.

따라서 Drupal에 대한 모듈을 빌드하지 않는 한 일반적으로 기본 데이터베이스 또는 작동 방식에 대해 알 필요가 없습니다.

Drupal을 사용하면 콘텐츠 유형, 노드, 모듈보기 및 CCK를 사용하여 사이트에서 필요한 대부분을 빌드 할 수 있습니다. 이러한 모듈은 잘 설계된 시스템에서 볼 수 있듯이 단일 기능을 수행하는 플러그인의 완전한 드롭이 아니라 빌딩 블록입니다. Drupal이 CMS라고 생각하는 실수를하지 마십시오. 너무 많은 코딩이없는 표준 프레임 워크에 가깝습니다.

코어와 잘 선택된 모듈을 사용하면 대부분의 경우 0에서 95 %의 기능을 매우 빠르게 얻을 수 있습니다.

4
Richard Harrison

면책 조항 : 나는 Drupal 개발자가 아닙니다.

MySQL을 사용할 때마다 사이트에서 사용할 스토리지 양을 계획해야합니다.

MySQL DBA로서의 개인적인 경험을 바탕으로 몇 가지 기본 원칙을 염두에두고 Drupal 설치 및 최적화 된 쿼리를 정리했습니다.

Drupal 고객을 위해 내가하는 가장 중요한 일은 모든 MySQL 데이터를 INNODB로 변환 입니다. 이것은 특히 높은 트래픽 사이트에서 테이블 잠금을 제거합니다. . 반드시 innodb_file_per_table 옵션을 사용해야합니다.

모든 InnoDB 데이터를 캐시 할 수 있는지 확인해야합니다. 따라서이를 수용 할 수있는 충분한 메모리를 확보하십시오. sort_buffer_size, join_buffer_size, read_buffer_size, read_rnd_buffer_size를 조정하고 이들의 합계를 max_connections로 곱하는 것을 잊지 마십시오. MySQL에서 사용하는 총 메모리 (innodb_buffer_pool_size + key_buffer_size + (sort_buffer_size + join_buffer_size + read_buffer_size + read_rnd_buffer_size) X max_connections)가 설치된 RAM의 90 %를 초과하지 않는지 확인합니다.

항상 DB 계층을 검토하는 것이 좋습니다. 이러한 제안을 구현 한 후에는 데이터 또는 연결이 크게 증가 할 때 DB 계층 유지 관리를 고려해야합니다. 그렇지 않으면 드물게 발생합니다.

2
RolandoMySQLDBA

일반 사용자라면 install.php를 통해 사이트를 설치하기 만하면됩니다. 데이터베이스에 대해 알아야 할 유일한 것은 이름, 사용자 및 비밀번호입니다. Drupal 나머지는 알아서.

사용자로서 어떤 형태의 쿼리를 수행해야하는 경우 Views 모듈을 사용합니다. 다시 실제로 데이터베이스에 대해 알 필요가 없습니다.

개발자가 사용자 정의 코드 또는 contrib 모듈을 작성하고 데이터베이스에 정보를 저장해야하는 경우 일부 쿼리를 작성해야 할 수 있으며 다른 쿼리는 일부 Drupal 함수)로 처리 할 수 ​​있습니다. .

  • 처음에 데이터베이스를 설정하려면 hook_schema () 를 사용합니다. 여기서 스키마를 필요한 형식으로 반환하기 만하면됩니다.

  • 단일 테이블에서 레코드를 작성/업데이트하는 모범 사례 접근 방식은 drupal_write_record () 를 활용하는 것입니다.

더 많은 읽을 거리가 있습니다 : http://api.drupal.org/api/drupal/includes--database--database.inc/group/database/7

또한 문서는 버전에 따라 다릅니다.

이것이 귀하의 질문에 다소 대답하기를 바랍니다.

1
Decipher