2009-12-02 50 views
6

Tôi đang làm việc trên trang web mạng xã hội với cây gia đình tuân thủ GEDCOM. Chúng ta cần quyết định xem chúng ta có nên sử dụng cấu trúc cơ sở dữ liệu theo chiều ngang hoặc dọc cho các hồ sơ người dùng hay không. Vì vậy, tôi muốn biết nếu có ai có thể trả lời khi nào nên sử dụng cấu trúc cơ sở dữ liệu ngang và khi nào thì sử dụng cấu trúc cơ sở dữ liệu theo chiều dọc.Cơ sở dữ liệu ngang và Cơ sở dữ liệu dọc

Tôi đã tìm thấy một số câu trả lời cho các trang web mua sắm nơi các trường không được quyết định: nên sử dụng cấu trúc cơ sở dữ liệu dọc. Nhưng tôi đang bối rối về những gì để sử dụng cho một trang web cây gia đình. Tôi có nên sử dụng dọc hoặc ngang?

Trả lời

8

Tôi giả sử bạn sử dụng cơ sở dữ liệu quan hệ như Mysql, Ms sql, Sqlite, Postgresql hoặc Oracle để lưu trữ?

Gedcom là tiêu chuẩn để trao đổi thông tin để bạn biết bạn sẽ có bao nhiêu cột. Có lẽ tiêu chuẩn được mở rộng với các thuộc tính mới trong tương lai nhưng có lẽ sẽ không có nhiều thuộc tính mới. Bạn có thể dễ dàng mở rộng một bảng với một vài cột mới.

Tôi sẽ sử dụng bảng 'ngang' và không phải là hệ thống giá trị thực thể-attribyte-giá trị (bảng dọc). Hệ thống bảng theo chiều dọc có xu hướng chậm. Chúng không thể được lập chỉ mục đúng cách và gây nhầm lẫn cho trình tối ưu hóa truy vấn.

Nó sẽ trở thành một câu chuyện khác nhau khi người dùng của bạn có thể xác định thuộc tính mới trong tiểu sử của họ như mắt colo (u) r hoặc colo ưa thích (u) r mình. Bạn muốn các cấu hình đó linh hoạt đến mức nào?

+0

tôi đang sử dụng máy chủ sql 2008. và người dùng sẽ không được phép thêm thuộc tính mới. – Radhi

0

Tôi đồng ý với tuinstoel, bảng dọc/hệ thống EAV không chỉ chậm mà còn một thời gian rất phức tạp. Đôi khi nó là cần thiết để viết một số phương pháp api của riêng bạn mà đối phó với những bảng và các nhà phát triển chỉ đối phó với những phương pháp để tránh phức tạp.

Vì vậy, nếu bạn không cần phải thêm các trường khác thì hãy ở lại với bảng ngang. Tuy nhiên, bạn có thể cần phải có bảng khác nếu bạn cũng có thể hỗ trợ khả năng đa ngôn ngữ. Nhưng tôi khuyên vẫn nên gắn bó với bàn ngang.

Tôi cũng đang phát triển một trang liên quan đến hồ sơ người dùng và tôi đang sử dụng các bảng ngang và nếu cần hỗ trợ ngôn ngữ khác trong tương lai thì tôi sẽ chỉ sửa đổi cho các trường có ngôn ngữ quan trọng.

3

Cơ sở dữ liệu dọc rất tuyệt vời cho việc phát hiện và đọc/chỉ báo cáo. Thông thường bạn tạo lại chúng qua đêm. Hiệu năng viết của họ thường rất tệ tuy nhiên các lệnh SELECT nhanh gấp 10-100 lần.

Một kịch bản điển hình để sử dụng cơ sở dữ liệu theo chiều dọc là báo cáo olap khi bạn tạo ảnh chụp nhanh (hàng ngày) và sau đó chạy truy vấn đối với nó. Hầu hết lợi ích đến từ các truy vấn chỉ yêu cầu số lượng trường tương đối nhỏ, ví dụ: khi bạn chỉ chọn một số trường từ bảng rộng và lớn. Truy vấn truy vấn như vậy đối với hàng triệu bản ghi (ví dụ: tính SUM/COUNT/AVG) sẽ chỉ mất một hoặc hai giây.

Trường hợp của bạn dường như không phải là ứng cử viên tốt cho cơ sở dữ liệu ngành dọc.

Các vấn đề liên quan