2011-03-31 3 views
0

방금 ​​한 가지 용도로만 사용할 수있는 특수 데이터베이스를 작성했습니다. 다른 여러 데이터베이스 시스템을 살펴본 결과 사용자 정의 유형이 필요하다는 결론을 얻었습니다. 그러나 그것이 좋은 생각인지에 대한 내 질문은 아니지만이 최선을 구현하는 방법.맞춤 데이터베이스 서버 (PHP)에 가장 효과적인 방법 파악하기

응용 프로그램 자체는 PHP로 작성되었으며 사용자 정의 데이터베이스 시스템에 작성해야합니다. 동시 읽기/쓰기 작업이있을 수 있으므로 데이터베이스를 응용 프로그램에 직접 구현한다는 생각을 잊어 버릴 수 있습니다. (내가 틀렸다면 제발 정정 해주세요).

  1. 데이터베이스 서버 스크립트
  2. 응용 프로그램 : 나는이 스크립트를 작성해야한다는 것을 의미

    .

이것은 응용 프로그램이 서버와 통신해야한다는 것을 의미합니다. 내 아이디어는 데이터베이스 서버에 cli 모드에서 PHP를 사용했다. 문제가 있다면, 이것이 효과적일까요, 아니면 서버 애플리케이션을 개발하기 위해 C++ 같은 프로그래밍 언어를 조사해야합니까? 두 번째 질문은 의사 소통입니다. CLI 모드에서 php를 사용할 때 직렬화 된 배열 쿼리를 param으로 제공하는 것에 대해 생각했습니다. C++을 사용할 때 여전히 직렬화해야합니까? 또는 아마도 json에서, 또는 무엇이든간에?

검색 할 데이터베이스가 수천 개의 항목으로 구성 될 수 있다는 점에 유의해야합니다. 그래서 PHP는 정말 올바른 선택인지 정확히 모르겠습니다. 두 번째로 나는 쿼리가 파싱되어야하는 문자열이 아니라 키, 값 필터 또는 데이터 세트를 제공하는 배열임을 유의해야합니다. 데이터베이스 서버가 가질 수있는 유일한 복합성은 MySQL 버전의 LIKE '% VALUE %'와 같은 문자열을 비교하는 것입니다. 이는 수천 개의 항목에서 느려질 수 있습니다.

감사합니다. 정확히 하나의 목적에 맞는 특별한 데이터베이스를 작성

+1

PHP를 사용하여 자신의 데이터베이스를 만드는 과정을 거치지 않는 것이 좋습니다. 데이터베이스는 매우 크고 복잡한 소프트웨어입니다. 당신의 유스 케이스는 무엇입니까? 우리는 아마도 몇 가지 대안을 추천 할 수 있습니다 – chriso

+0

자신의 데이터베이스 서버를 작성하는 방법에 대해 궁금한 점이 있다면 대개 직접 작성하지 말고 아직 알지 못합니다. – Archimedix

+0

나는 보통 데이터베이스처럼 Datasbes와 Tables를 가지고있다. 하지만 난 열이 없다. 각 항목은 ID를 제외하고는 자체 열을 가질 수 있습니다. 나는 mysql id를 사용할 수있다. 일련 화 된 데이터 ...하지만 엔트리의 특정 매개 변수를 검색하는 것이 훨씬 재미 있습니다. –

답변

0

난 당신이 사용자 정의 데이터베이스 관리 시스템,

내가 undertanding 많은 문제에 봉착 의미 추정하는 이유는 어느 것 필요하다.

데이터베이스 및 테이블에는 일반적인 데이터베이스가 있습니다. 하지만 난 열이 없다. 각 항목은 고통과 많은 노력을 통해 자신 (및 사용자)를 넣어위한 아주 좋은 이유가 아니다 아이디

를 제외하고, 자신의 열을 가질 수 있습니다.

나는 mysql id | 항목에 특정 매개 변수를 통해 검색 직렬화 된 데이터 ...하지만 재미

그래서 관계형 데이터베이스의 상단에 구현 된 완전 다형성 모델 뭐가 잘못 ...

CREATE TABLE relation (
    id INTEGER NOT NULL auto_increment, 
    .... 
    PRIMARY KEY (id) 
); 
CREATE TABLE col_string (
    relation_id NOT NULL /* references relation.id */ 
    name VARCHAR(20), 
    val_string VARCHAR(40), 
    PRIMARY KEY (relation_id, name) 
); 
CREATE TABLE col_integer (
    relation_id NOT NULL /* references relation.id */ 
    name VARCHAR(20), 
    val_integer INTEGER, 
    PRIMARY KEY (relation_id, name) 
); 
CREATE TABLE col_float (
    relation_id NOT NULL /* references relation.id */ 
    name VARCHAR(20), 
    val_float INTEGER, 
    PRIMARY KEY (relation_id, name) 
); 

및 BLOB, 날짜 등의 테이블

또는 확장 성이 큰 문제가 아니라면 ....

CREATE TABLE all_cols (
    relation_id NOT NULL /* references relation.id */ 
    name VARCHAR(20), 
    ctype ENUM('string','integer','float',...), 
    val_string VARCHAR(40), 
    val_integer INTEGER, 
    val_float INTEGER, 
    ... 
    PRIMARY KEY (relation_id, name) 
); 

예, 삽입 및 선택 '행은'일반 관계형 테이블보다 더 복잡하다 -하지만 처음부터 자신의 DBMS를 쓰는 것보다 훨씬 간단합니다. 또한 저장 프로 시저의 대부분의 기능을 래핑 할 수 있습니다. 설명 된 방법은 NoSQL 데이터베이스에도 쉽게 매핑됩니다.

관련 문제