Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Thêm trực quan hóa và tìm kiếm được hỗ trợ bởi Elasticsearch vào dữ liệu SQL của bạn

Thêm trực quan hóa và tìm kiếm được hỗ trợ bởi Elasticsearch vào dữ liệu SQL của bạn

Bất chấp tất cả sự chú ý tập trung vào các kho dữ liệu NoSQL mới hơn, các cơ sở dữ liệu quan hệ và dựa trên SQL vẫn còn tồn tại và tốt. Trên thực tế, hầu hết mọi khách hàng mà chúng tôi làm việc đều có một số MySQL, PostgreSQL hoặc MS SQL Server trong môi trường của họ cùng với MongoDB, Redis hoặc Elasticsearch của họ. Không có gì lạ khi chúng tôi nhận được yêu cầu về cách dễ dàng nhất để sao chép dữ liệu từ cơ sở dữ liệu quan hệ sang một kho dữ liệu khác dưới dạng di chuyển hoặc chỉ đơn giản là thêm các tính năng như tìm kiếm toàn văn hoặc hiển thị vào dữ liệu quan hệ của chúng. May mắn thay, Elasticsearch làm cho việc này trở nên cực kỳ dễ dàng.

Gần đây, chúng tôi đã viết một bài báo trắng chi tiết về Kết nối cơ sở dữ liệu quan hệ với Elasticsearch mô tả quy trình và các quyết định cần phải thực hiện, nhưng nếu bạn muốn giới thiệu nhanh và tổng quan, hãy đọc tiếp phần bên dưới.

Chọn Bộ công cụ phù hợp

Có rất nhiều công cụ di chuyển / sao chép có sẵn trên web và thậm chí viết mã của riêng bạn trong trường hợp này sẽ không phải là một nỗ lực lớn, nhưng cho đến nay chúng tôi nhận thấy Logstash và plugin đầu vào jdbc là giải pháp tốt nhất.

Logstash là một công cụ nhập, biến thế, và người gửi dữ liệu theo phong cách quân đội Thụy Sĩ. Ngoài ra, do nó là một phần của Elastic Stack, khả năng dễ dàng chuyển dữ liệu đến Elasticsearch là không ai sánh kịp. Việc đó sẽ lo việc vận chuyển đến phần Elasticsearch, nhưng lấy dữ liệu từ cơ sở dữ liệu quan hệ của bạn thì sao?

Một trong nhiều đầu vào mà Logstash cung cấp là đầu vào JDBC. JDBC là một tiêu chuẩn xác định cách các ứng dụng java có thể truy cập cơ sở dữ liệu. Miễn là có sẵn trình điều khiển tương thích jdbc cho cơ sở dữ liệu, đầu vào JDBC Logstash có thể sử dụng nó để trích xuất dữ liệu bằng cách sử dụng các truy vấn SQL tiêu chuẩn. Với sự hỗ trợ rộng rãi cho các trình điều khiển JDBC miễn phí giữa các cơ sở dữ liệu quan hệ và thậm chí hỗ trợ cho một số cơ sở dữ liệu không quan hệ, đây là một con đường dễ dàng để kết nối các cơ sở dữ liệu khác với Elasticsearch.

Thêm trực quan hóa và tìm kiếm được hỗ trợ bởi Elasticsearch vào dữ liệu SQL của bạn

Tạo kết nối

Miễn là bạn có cơ sở dữ liệu tương thích jdbc và trình điều khiển tương thích, việc cấu hình dễ dàng như định cấu hình Logstash với một vài thông tin sau:

  • Thông tin cấu hình JDBC
  • Thông tin xác thực và thông tin kết nối cho cơ sở dữ liệu quan hệ của bạn
  • Câu lệnh hoặc truy vấn SQL cho cơ sở dữ liệu quan hệ của bạn trích xuất dữ liệu bạn muốn
  • Thông tin xác thực và thông tin kết nối cho cơ sở dữ liệu Elasticsearch của bạn

Với thông tin đó, chỉ cần xáo trộn dữ liệu vào Elasticsearch là cực kỳ dễ dàng.

Đặt câu hỏi quan trọng

Khi nói đến việc sao chép hoặc di chuyển dữ liệu quan hệ của bạn sang Elasticsearch, việc lấy dữ liệu từ điểm A đến điểm B chỉ là một nửa trận chiến. Một câu hỏi lớn hơn và kích thích tư duy hơn là bạn muốn lập mô hình dữ liệu đó như thế nào một lần trong Elasticsearch. Vấn đề với dữ liệu quan hệ trong Elasticsearch, nói thẳng ra là các mối quan hệ.

Mặc dù Elasticsearch trước hết là một công cụ tìm kiếm, mô hình dữ liệu về cơ bản là một kho lưu trữ tài liệu chỉ hỗ trợ tối thiểu cho các mối quan hệ giữa các tài liệu. Do đó, bạn sẽ cần phải đưa ra một số quyết định về cách bạn muốn lập mô hình dữ liệu của mình trong Elasticsearch.

Ba tùy chọn tiêu chuẩn thường được trình bày là:

  • Chuẩn hóa dữ liệu: Về cơ bản, loại bỏ tất cả các mối quan hệ và tạo một tài liệu duy nhất cho mọi kết hợp dữ liệu trong bảng của bạn
  • Mảng trong tài liệu: Elasticsearch hỗ trợ khả năng tạo một mảng đối tượng trong mỗi tài liệu và thậm chí cung cấp một kiểu dữ liệu "lồng nhau" đặc biệt cho phép một số truy vấn đánh giá từng thành viên của mảng đó như một tài liệu riêng biệt
  • Mối quan hệ cấp độ cha mẹ: Tùy chọn cuối cùng và gần nhất với cơ sở dữ liệu quan hệ thực sự là mối quan hệ Cha-Con trong Elasticsearch, cho phép bạn chỉ định rằng một số tài liệu nhất định là con của các tài liệu khác.

Mặc dù Elasticsearch cung cấp cho bạn một số tùy chọn để xử lý dữ liệu, nhưng phương pháp nào hoạt động tốt nhất và đáp ứng nhu cầu của bạn thực sự tùy thuộc vào bạn.

Một quyết định quan trọng khác là lượng dữ liệu và tần suất sao chép vào Elasticsearch. Nếu bạn đang di chuyển, câu trả lời rất dễ dàng, vì đó là kết quả một lần của mọi thứ. Tuy nhiên, nếu bạn muốn sử dụng Elasticsearch làm kho dữ liệu báo cáo phụ, bạn có các tùy chọn bổ sung cho lượng dữ liệu bạn sao chép và theo nhịp nào. Bạn có thể sao chép toàn bộ ảnh chụp nhanh theo lịch trình thông thường hoặc sử dụng một số tiện ích trong bộ lọc đầu vào Logstash JDBC để lọc trên các cột nhất định và chỉ gửi dữ liệu mới khi có sẵn. Một lần nữa, tất cả điều này sẽ phụ thuộc vào dữ liệu của bạn và bạn đang sử dụng dữ liệu đó để làm gì.

Quyết định và thêm chi tiết

Điểm mấu chốt là các công cụ và quy trình sẵn có NGAY BÂY GIỜ để kết nối các kho dữ liệu của bạn và thực sự khá dễ áp ​​dụng vào thực tế với dữ liệu của bạn. Sẽ có một số đánh đổi đối với cách dữ liệu của bạn được mô hình hóa trong Elasticsearch, cách bạn có thể truy vấn nó và cách bạn có thể hình dung nó. Ví dụ:việc chọn không chuẩn hóa dữ liệu quan hệ của bạn sẽ có tác động đến kích thước của tập dữ liệu kết quả, cách bạn thực hiện một số tổng hợp nhất định và những hình ảnh trực quan nào có sẵn cho bạn.

Để minh họa quy trình và cách đưa ra các quyết định đó, chúng tôi đã viết một bài báo trắng:Kết nối Cơ sở dữ liệu quan hệ với Elasticsearch, phác thảo quy trình chuẩn để thiết lập bản sao quan hệ với Elasticsearch cho tập dữ liệu mẫu, điều gì ảnh hưởng đến việc lập mô hình khác nhau quyết định dựa trên dữ liệu kết quả và cuối cùng là một số hướng dẫn về cách chọn dữ liệu nào tốt nhất cho bạn.

Thêm trực quan hóa và tìm kiếm được hỗ trợ bởi Elasticsearch vào dữ liệu SQL của bạn

Chúng tôi hy vọng bạn tìm thấy nó hữu ích! Như mọi khi, bạn có thể nhận thêm thông tin từ chúng tôi bằng cách liên hệ với [email protected].