Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Thêm Elasticsearch Search & Visualization vào SQL Database một cách liền mạch

Dù có nhiều buzz tập trung vào NoSQL data stores mới hơn, relational và SQL-based databases vẫn sống tốt. Thực tế, gần như mọi khách hàng chúng tôi làm việc đều có MySQL, PostgreSQL hoặc MS SQL Server trong môi trường bên cạnh MongoDB, Redis, hoặc Elasticsearch. Không hiếm khi nhận được request về cách dễ nhất replicate data từ relational database vào datastore khác - dù để migration hay đơn giản thêm tính năng như full-text search hoặc visualization cho relational data. May mắn là Elasticsearch làm điều này siêu dễ.

Chúng tôi vừa viết white paper chi tiết về "Connecting Relational Databases to Elasticsearch" mô tả quy trình và quyết định cần thiết, nhưng nếu muốn quick introduction và overview, hãy đọc tiếp bên dưới.

Chọn Toolset phù hợp

Có nhiều migration/replication tool trên web, thậm chí tự viết code cũng không quá khó, nhưng chúng tôi thấy Logstash và jdbc input plugin là giải pháp tốt nhất.

Logstash là "dao đa năng" để ingest, transform, và ship data. Vì là phần của Elastic Stack, khả năng ship data đến Elasticsearch của nó là second to none. Đó là phần shipping, nhưng lấy data từ relational database thì sao?

Một trong nhiều input của Logstash là JDBC input. JDBC là standard định nghĩa cách java application truy cập database. Miên có jdbc-compliant driver cho database, JDBC Logstash input có thể dùng nó extract data dùng standard SQL query. Với hỗ trợ rộng rãi free JDBC drivers cho relational database và thậm chí một số non-relational, đây là đường dễ dàng connect database khác với Elasticsearch.

Thiết lập Connection

Mièn bạn có jdbc-compliant database và driver tương thích, cấu hình dễ dàng bằng cách config Logstash với vài thông tin:

  • JDBC configuration information
  • Credentials và connection info cho relational database
  • SQL query/statement cho relational database extract data bạn muốn
  • Credentials và connection info cho Elasticsearch database

Với thông tin đó, shuffle data vào Elasticsearch cực kỳ dễ dàng.

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

Khi replicate/migrate relational data sang Elasticsearch, đưa data từ A đến B mới chỉ nửa cuộc chiến. Câu hỏi lớn và gây suy nghĩ hơn là bạn muốn model data đó như thế nào khi đã trong Elasticsearch. Vấn đề với relational data trong Elasticsearch, nói thẳng là relations.

Dù Elasticsearch là search engine, data model về cơ bản là document store với hỗ trợ minimal cho relations giữa document. Vì vậy, bạn cần quyết định cách model data trong Elasticsearch.

Ba option chuẩn thường được trình bày:

  • Denormalize data: Loại bỏ tất cả relations, tạo unique document cho mọi combination data trong tables
  • Arrays trong documents: Elasticsearch hỗ trợ tạo array of objects trong document, thậm chí có special "nested" data type cho phép query evaluate từng member của array như separate document
  • Parent-Child relationships: Option cuối, gần nhất với true relational database là Parent-Child relationship trong Elasticsearch, cho phép specify certain documents là children của documents khác

Dù Elasticsearch đưa ra option xử lý data, việc chọn method phù hợp và đáp ứng nhu cầu phụ thuộc vào bạn.

Quyết định quan trọng khác: replicate bao nhiêu data và tần suất nào. Nếu migrate, câu trả lời dễ dàng - one-time dump everything. Nhưng nếu dùng Elasticsearch làm secondary reporting datastore, có option thêm về lượng data copy và cadence. Có thể copy full snapshots theo schedule định kỳ, hoặc dùng facilities trong Logstash JDBC input filter để filter trên certain columns và chỉ gửi data mới khi available. Lại một lần, tất cả phụ thuộc vào data và mục đích sử dụng.

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

Bottom line: tools và processes đã có sẵn NGAY BÂY GIỜ để connect datastore và khá dễ put into practice với data của bạn. Sẽ có tradeoffs về cách data modeled trong Elasticsearch, cách query, và cách visualize. Ví dụ, chọn denormalize relational data sẽ ảnh hưởng đến size resulting dataset, cách perform certain aggregations, và visualizations available.

Để minh họa quy trình và cách đưa ra quyết định, chúng tôi viết white paper: Connecting Relational Databases to Elasticsearch, outline quy trình chuẩn setup relational-to-Elasticsearch replication cho sample dataset, impact của các modeling decision lên resulting data, và guidelines cách chọn option tốt nhất cho bạn.

Chúng tôi hy vọng bạn thấy hữu ích! Như luôn, có thể lấy thêm thông tin từ chúng tôi qua sales@objectrocket.com.