2011-02-01 2 views
4

콘텐츠에 대한 정보 (메타 데이터)를 해당 콘텐츠의 ID (또는 키)에 저장하는 것이 좋습니다.콘텐츠에 대한 정보 (메타 데이터)를 해당 콘텐츠의 ID (또는 키)에 저장하는 것이 좋습니다.

즉, 데이터베이스에 저장된 일부 콘텐츠의 Id (또는 키)로 시간 기반 UUID를 사용하고 있습니다. 내 응용 프로그램은 먼저 (데이터베이스에서) 해당 ID (또는 키) 목록에 액세스 한 다음 해당 내용 (데이터베이스에서)에 액세스합니다. 이 ID는 실제로 UUID (시간 기준)입니다. 내 아이디어는 내 소프트웨어가 데이터베이스의 전체 컨텐츠에 다시 액세스하지 않고이 메타 컨텐츠에 액세스 할 수 있도록 컨텐츠 자체에 대한 추가 정보를 ID 자체에 저장하는 것입니다.

내 응용 프로그램 컨텍스트는 Java 기술과 Cassandra 데이터베이스를 사용하는 웹 사이트입니다. 그럼 내 질문은

  1. 해야합니까? 나는 콘텐츠의 ID에서 메타 데이터를 검색하기 위해 많은 처리가 필요할 수 있으므로 (사용자에게 데이터를 표시 할 때) 걱정이된다 !! 따라서 데이터베이스에서 검색 한 다음 해당 내용의 ID 처리를 통해 얻는 것이 더 나을 수도 있습니다.

  2. 그러면 제안하면 어떻게 효율적으로 구현해야합니까? 나는 다음과 같은 방법을 생각했다 : -

'timebasedUUID' 해당 콘텐츠가 사용자 & 'userId'에 의해 추가 된 타임 스탬프를 기반으로 생성 된 ID입니다

Id of a content = 'Timebased UUID' + 'UserId'

가 있음을 넣어 사용자의 ID를 나타냅니다 함유량.

는 나의 예를 들어 ID가 다음과 같이 보일 것입니다 : - e4c0b9c0-a633-15a0-ac78-001b38952a49 (TimeUUID) --ff7405dacd2b (사용자 아이디)

가 어떻게 가장 효율적으로, 내용의 위의 아이디에서이 userId을 추출해야 ?

Id에 메타 정보를 저장하는 더 좋은 방법이 있습니까?

답변

4

당신이 생각을 많이 한 것처럼 보이기 때문에 나는 이것을 싫어하지만 나는 이것이 바람직하지 않다고 말할 것입니다. 이처럼 데이터를 저장하는 것은 처음에는 좋은 생각 인 것처럼 들리지만 데이터를 읽고 저장하는 많은 예기치 않은 문제가 있으므로 문제가 발생합니다. 개별 데이터를 별도의 변수 및 열로 유지하는 것이 가장 좋습니다.

주요 콘텐츠가없는 메타 콘텐츠에 정말로 관심이 있다면 두 개의 열을 만들 것입니다. 한 가족은 메타 - 컨텐츠를 가지고 있고 다른 하나는 더 큰 메인 컨텐츠를 가지며 둘 다 동일한 ID 키를 공유합니다. 나는 카산드라에 대해 많이 모른다. 그러나 이것은 이런 종류의 일을하는 데 권장되는 방법 인 것 같다.

이 모든 것이 필요하지 않을 것이라고 생각합니다. 사용자가 매우 많은 양의 정보를 저장하지 않는 한 크기가 작고 빨리 검색해야합니다.

+0

감사합니다. AmaDaden! 나는 그것을 좋아한다! –

1

나는 AmaDaden에 동의합니다. ID와 데이터를 혼합하는 것은 고통의 세계로 인도하는 경로의 첫 번째 단계입니다. 특히 비즈니스 로직이 데이터 부분을 변경해야하고 데이터베이스 로직이 ID가 변경되지 않아야하는 상황을 결국 발견하게됩니다. 수갑을 채우지 않으면 사용자가 두 명의 계정을 단일 사용자 ID에 병합 할 수있는 갑자기 요구 사항이있을 수 있습니다.사용자 ID가 단지 데이터 일 경우, 이는 사소한 업데이트 여야합니다. ID의 일부인 경우 해당 ID에 대한 모든 참조를 찾아 업데이트해야합니다.