0

저는 CMS를 리노베이션하는 과정에 있으며 어느 솔루션을 채택해야할지 모르겠습니다. 기본적으로 고객 한 명이 자신의 웹 사이트 콘텐츠를 자신의 데이터베이스에 보관합니다. 여기에는 콘텐츠, 설문 조사, 방문자가 사용하는 검색어, 메뉴 구조 등이 포함됩니다.웹 사이트의 환경 설정을 유지하는 방법에 대한 다양한 옵션이 있습니까?

고객의 웹 사이트에있는 많은 콘텐츠는 동적이며 CMS를 통해 변경할 수 있습니다. 이 모든 데이터는 내가 설계 한 관계형 데이터베이스에 저장되었지만 테이블에서 이러한 기본 설정을 유지하는 것이 과포화되는 몇 가지 상황에서 실행됩니다.

예를 들어 CMS를 사용하면받는 사람 목록에 전자 메일을 보낼 수 있습니다. 그들은 우리의 서버를 사용하도록 선택할 수 있습니다 또는 그들은 자신의 SMTP 서버에 넣을 수 있습니다. 그러나이 경우에는 "mailService"에 대한 열이있는 테이블을 만들고 테이블에 하나의 행만 보유 할 수 있으므로 특정 값을 보유하게되면 약간 과잉입니다. 여기

는이 사이트 및/또는 구글에 비트를 검색하여 함께 올 한 몇 가지 아이디어를하지만 나는 그들의 장점과 단점이 무엇인지 너무 확실하지 않다 : 기본적으로

  • 을 모두 보유 위에서 언급 한 표의 선호도, 피하고 싶습니다.
  • 모든 "단일"환경 설정을 XML 파일에 보관하면 설정을 변경할 때 수정됩니다.
  • 다음 columsn : id, preferenceName, value를 갖는 preferences라는 테이블이 있어야합니다. 매번 새로운 환경 설정을 할 때마다 추가, 수정 또는 제거 (이 옵션이 마음에 들지 않습니다. 너무 많은 값을 하드 코딩해야한다고 생각하기 때문에 ... 최소한 길에서 나는 구현을보고있어)

나는 XML 생각에 기대고 있지만 나는 좋은 커뮤니티에서 좋은 의견을 받고 싶다. Stackoverflow :) 아마 XML을 사용하는 것은 끔찍한 생각 일 것이다. 내가 완전히 간과 한 이유나, 당신의 바보 같은 이유가 있습니다. 왜 그렇게하지 않았습니까? 어떤 의견을 주셔서 감사합니다!

답변

1

xml 라우트는 새로운 애트리뷰트를 쉽게 추가 할 수 있고 속성을 그룹화 할 수 있다는 점에서 잘 작동합니다. 단점은 SQL을 사용하여 환경 설정 데이터를 마이그레이션하거나 업데이트하는 것이 불가능하다는 것입니다. 그것은 프로그램 적으로 완료되어야합니다. 필요에 따라 개별 속성에 대한 기본 설정을 쿼리 할 수도 없습니다.

모두 당신이 SQL을 통해 쿼리하거나 업데이트 할 필요가없는 환경 설정을 유지한다면 xml이 잘 작동 할 것입니다. 그렇지 않으면 데이터베이스의 이름, 값 쌍 테이블이 더 좋은 방법입니다. 보다

mail_service:recipients 
mail_service:sender 
mail_service:smtp:hostname 
mail_service:smtp:username 
mail_service:smtp:password 

다른 내가 훨씬 가독성을 위하여 XML에 yaml을 선호 : 당신이 이미 가지고 있고, 합리적인 범주로 설정의 이름을 분할하는 경우

2

내가 사용하는 하나의 데이터베이스 테이블을 말하고 싶지만. XML과 같지만 모든 혼란이 없습니다.

mail_service: 
    recipients: 
     - [email protected] 
     - [email protected] 
     - [email protected] 
     - [email protected] 

    visuals: 
    header: 
     text_color: #BBCCDD 
     background_color: #FFFFFF 

Symfony YAML class은 파일을 PHP 배열로 구문 분석하는 훌륭한 독립 실행 형 라이브러리입니다.

간단한 PHP 파일을 사용할 수도 있습니다.

$settings = array(
"mail_service:recipients" => " .... ", 
"mail_service:sender" => " .... ",  
"mail_service:smtp:hostname" => " .... ", 
"mail_service:smtp:username" => " .... ", 
"mail_service:smtp:password" => " .... "); 
+0

+1이 결코 데이터베이스가 아니어야 함을 나타냅니다. 많은 파일 형식이 있으며 XML이 항상 최선의 선택은 아닙니다. ** 특히 ** 키/값 매핑에만 해당됩니다. –

+0

정보를 제공해 주셔서 감사합니다. 나는 YAML에 대해 들어 본 적이 없기 때문에 나는이 질문을 처음부터 여기에서 요구했다. – Gazillion

1
(이 XML 일 필요는 없습니다하지만 - 그것은 자바라면 내가하지에 대한 이유를 발견 할 때까지 등록 정보 파일을 사용하는 것) 나는 XML 파일과 함께 갈 것

또는 단일 키/값 테이블 (ID 필드는 다른 설치 사이를 구별하는 외래 키가 아닌 한 많은 이득을 얻지 못합니다).

개인적으로 나는 SQL의 다양성을 좋아하고, 자체적 인 것들을 가지고 있습니다. 데이터베이스를 사용하더라도 아직 존재하지 않는 복잡성은 추가되지 않습니다. 예를 들어, 성능이 문제가되면 고유 한 XML 캐시를 확장해야하는 경우와 같은 무료 캐싱 수준을 얻게됩니다. 값을 SQL을 통해 조작하는 것이 복잡한 복잡한 구조를 가지고있는 경우에만 XML을 선택합니다.

"왜 많은 가치를 하드 코딩해야하는지", 특히 파일 솔루션보다 데이터베이스 솔루션에 하드 코딩이 더 많이 필요한 이유가 확실하지 않습니다.

+0

하드 코딩 비트가 맞았다 고 생각합니다. 모든 데이터를 검색 할 때 기본 키를 사용하지 않고 대신 실제 기본 설정의 이름을 사용합니다. 처음에 내 두려움은 CMS의 새로운 인스턴스를 설치할 때 일어나는 일과 관련이 있었지만 빈 테이블은 값이 설정되지 않아 실제로 문제가 발생하지 않는다는 것을 의미한다고 가정합니다. 의견을 주셔서 감사합니다 :) – Gazillion

관련 문제