Cơ sở dữ liệu

Một phần của tài liệu Đồ án tốt nghiệp_Hệ thống thu thập và phân tích dữ liệu du lịch ( Hust) (Trang 32 - 35)

CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

3.7 Cơ sở dữ liệu

Dữ liệu sau khi được xử lí sẽ được đưa vào trong Cassandra. Lí do là vì:

• Khả năng mở rộng ngang: Cassandra được thiết kế để mở rộng dễ dàng bằng cách thêm nút vào hệ thống để xử lý lượng dữ liệu lớn và tải trọng cao. Điều này phù hợp với bài toán của tôi khi cần xử lý hàng ngày khoảng 20.000 dòng dữ liệu mới.

• Hỗ trợ cụm nút: Cassandra cho phép tổ chức dữ liệu thành các cụm nút (node cluster) với mô hình phân tán. Mỗi nút lưu trữ một phần dữ liệu và tạo thành một hệ thống phân tán, giúp tăng tính sẵn sàng và tin cậy của hệ thống.

• Hỗ trợ cấu trúc dữ liệu đa dạng: Cassandra cho phép lưu trữ dữ liệu có cấu trúc hoặc không có cấu trúc một cách linh hoạt. Điều này rất hữu ích khi crawl dữ liệu từ các trang web có định dạng và cấu trúc khác nhau.

• Tính khả chuyển: Cassandra hỗ trợ mô hình mở rộng ngang tự động, cho phép tôi thêm nút và cụm nút một cách dễ dàng để tăng khả năng lưu trữ và xử lý

dữ liệu khi số lượng người dùng và dữ liệu tăng lên.

• Hiệu suất cao: Cassandra được thiết kế để đạt hiệu suất cao và xử lý hàng triệu yêu cầu mỗi giây. Nó hỗ trợ lưu trữ dữ liệu cột (columnar data storage) giúp truy xuất dữ liệu nhanh chóng và hiệu quả.

• Hỗ trợ tương thích: Cassandra hỗ trợ nhiều ngôn ngữ lập trình và giao thức, cho phép tích hợp dễ dàng với các ứng dụng và hệ thống hiện có.

Cassandra lưu trữ dữ liệu theo mô hình cột (columnar data storage). Điều này có nghĩa là dữ liệu trong Cassandra được tổ chức thành các cột thay vì các hàng như trong các hệ thống cơ sở dữ liệu truyền thống. Mỗi cột chứa một giá trị dữ liệu cụ thể và có thể lưu trữ các loại dữ liệu khác nhau.

Cassandra tổ chức dữ liệu thành các bảng (tables), và mỗi bảng có các cột (columns). Mỗi hàng (row) trong bảng chứa các giá trị tương ứng với từng cột.

Mỗi hàng được xác định bằng một khóa duy nhất (primary key), và các bảng có thể có nhiều cột tùy ý.

Dữ liệu trong Cassandra được lưu trữ dưới dạng phân tán, tức là nó được chia thành nhiều phần và lưu trữ trên nhiều nút trong cụm. Mỗi phần dữ liệu được lưu trữ trên một nút dựa trên giá trị khóa của nó. Khi thêm nút mới vào cụm hoặc thay đổi cấu trúc dữ liệu, Cassandra tự động phân phối và cân bằng lại dữ liệu để đảm bảo tính mở rộng và hiệu suất cao.

Mô hình cột của Cassandra giúp cải thiện hiệu suất truy vấn và tăng tính mở rộng của hệ thống. Nó cho phép lưu trữ dữ liệu có cấu trúc và không có cấu trúc một cách hiệu quả và linh hoạt. Đồng thời, việc phân tán dữ liệu trên nhiều nút giúp tăng tính sẵn sàng và tin cậy của hệ thống.

Trong dự án này, dữ liệu được làm sạch và đưa vào 3 bảng dưới đây:

Bảng dữ liệu city-location:

STT Tên trường Kiểu dữ liệu Mô tả Ràng buộc

1 id INT Mã số địa điểm PRIMARY

KEY

2 city_name TEXT Tên thành phố PRIMARY

KEY

3 country_id INT Mã số quốc gia

4 country_code TEXT Mã quốc gia

5 country_name TEXT Tên quốc gia

6 state_code TEXT Mã tiểu bang/tỉnh

7 type TEXT Loại địa điểm

8 latitude FLOAT Vĩ độ

9 longitude FLOAT Kinh độ

Bảng dữ liệu city-intro:

STT Tên trường Kiểu dữ liệu Mô tả Ràng buộc

1 city_id TEXT Mã thành phố PRIMARY

KEY

2 city_name TEXT Tên thành phố

3 country_name TEXT Tên quốc gia

4 city_image TEXT URL hình ảnh thành phố

5 title TEXT Tiêu đề giới thiệu

6 intro TEXT Nội dung giới thiệu

7 activity LIST<TEXT> Danh sách các hoạt động

Bảng dữ liệu hotel-data:

STT Tên trường Kiểu dữ liệu Mô tả Ràng buộc

1 hotel_url TEXT URL khách sạn PRIMARY

KEY

2 hotel_name TEXT Tên khách sạn

3 total_hotel_reviews INT Tổng số đánh giá của

khách sạn

4 star FLOAT Điểm đánh giá của

khách sạn

5 hotel_address TEXT Địa chỉ khách sạn

6 price INT Giá khách sạn

7 review_date DATE Ngày đánh giá

8 reviewer_rating INT Điểm đánh giá từ người

đánh giá 9 reviewer_contribution INT Mức đóng góp của người

đánh giá

10 reviewer_link TEXT URL của người đánh giá PRIMARY

KEY 11 reviewer_title_comment TEXT Tiêu đề đánh giá của

người đánh giá

12 reviewer_comment TEXT Nội dung đánh giá của

người đánh giá 13 reviewer_stay_date DATE Ngày lưu trú của người

đánh giá

14 reviewer_trip_type TEXT Loại chuyến đi của

người đánh giá

15 sentiment_score FLOAT Điểm cảm xúc từ người

đánh giá

16 city TEXT Tên thành phố

17 country TEXT Tên quốc gia

18 hotel_id TEXT Mã khách sạn

19 inserted_date TIMESTAMP Thời gian thêm dữ liệu PRIMARY

KEY

20 reviewer_nation TEXT Quốc tịch của người

đánh giá

21 hotel_language TEXT Ngôn ngữ khách sạn sử

dụng

Dữ liệu trong bảng hotel-data sẽ được thêm mới hằng ngày và khóa chính sẽ gồm 3 trường là reviewer_link, inserted_date, hotel_url. Lí do là do cách dữ liệu được thu thập. Đầu tiên khi xử lý bằng Spark, sẽ có nhiều bản ghi có cùng inserted_date do được xử lý cùng lúc nên không thể 1 mình làm khóa chính. Vì dữ liệu được lọc theo các khách sạn, và có thể xảy ra trường hợp nhiều khách du lịch cùng bình luận 1 lúc nên cần thêm trường hotel_url và reviewer_link. Mỗi một bản ghi đầy đủ trong bảng này sẽ chứa bình luận của khách du lịch trên trang Tripadvisor, còn nếu không có bình luận thì sẽ để cập nhật giá của khách sạn tại ngày hôm đó.

Một phần của tài liệu Đồ án tốt nghiệp_Hệ thống thu thập và phân tích dữ liệu du lịch ( Hust) (Trang 32 - 35)

Tải bản đầy đủ (PDF)

(54 trang)