Tôi đã thực hiện rất nhiều nghiên cứu liên quan đến elasticsearch và dường như tôi đang lo ngại về câu hỏi liệu cơ sở dữ liệu có cần thiết hay không.Cơ sở dữ liệu cần thiết với elasticsearch?
hiện Hibernate-tìm kiếm và thiết kế Relational
ứng dụng hiện tại của tôi được viết bằng java sử dụng chế độ ngủ đông, hibernate-tìm kiếm, và một cơ sở dữ liệu mysql. Tìm kiếm Hibernate được xây dựng trên lucene và tự động quản lý các chỉ mục của tôi cho tôi trong các giao dịch cơ sở dữ liệu. Hibernate-search cũng sẽ tìm kiếm theo chỉ mục và sau đó lấy toàn bộ bản ghi từ cơ sở dữ liệu dựa trên các pks được lưu trữ thay vì phải lưu toàn bộ mô hình dữ liệu của bạn trong chỉ mục. Điều này đã làm việc tuyệt vời, tuy nhiên khi ứng dụng của tôi phát triển, tôi đã liên tục chạy vào các vấn đề mở rộng và chi phí làm cho thực tế các chỉ mục Lucene cần phải sống trên mỗi máy chủ ứng dụng và sau đó bạn cần một thư viện khác để đồng bộ các chỉ mục với nhau. Vấn đề khác với thiết kế này là nó đòi hỏi nhiều bộ nhớ hơn trên tất cả các máy chủ ứng dụng vì các chỉ mục đang được nhân rộng và được lưu trữ với ứng dụng.
Cơ sở dữ liệu hoặc Không Database
Đến từ trường hibernate-tìm kiếm tư tưởng, tôi đang bối rối về việc có hay không bạn giả sử để lưu trữ toàn bộ mô hình dữ liệu của bạn trong elasticsearch và loại bỏ các cơ sở dữ liệu truyền thống hoặc nếu giả sử của bạn để lưu trữ dữ liệu tìm kiếm của bạn trong các chỉ mục và một lần nữa như các khóa chính trả về tìm kiếm hibernate để lấy các bản ghi đầy đủ từ cơ sở dữ liệu quan hệ của bạn.
Quản lý Chỉ số
- Nếu bạn sử dụng các chỉ số với một db, bạn nên tự duy trì chúng trong giao dịch? Tôi thấy một dự án jdbc được gọi là sông nhưng có vẻ không được chấp nhận và không được khuyến nghị sử dụng cho sản xuất , có thư viện ở đó có khả năng tự động xử lý giao dịch của bạn không?
- Nếu chỉ mục của bạn không đồng bộ với db của bạn, có cách nào được khuyến nghị để tạo lại chúng không?
Hibernate-Search API
Tôi cũng thấy những điều sau trong lộ trình ngủ đông tìm kiếm API/SPI cho backends thay thế http://hibernate.org/search/roadmap/
Define API/SPI abstraction to allow for future external backends integrations such as Apache Solr and Elastic Search.
Tôi tự hỏi nếu ai có bất kỳ đầu vào này? Là hibernate-tìm kiếm có khả năng quản lý các chỉ mục tìm kiếm đàn hồi tự động cho bạn cũng giống như nó với cấu hình gốc của nó?
Nếu Không Database
Điều gì sẽ là nhược điểm của việc không sử dụng một cơ sở dữ liệu cho tìm kiếm bất cứ điều gì liên quan?
Cảm ơn trả lời của bạn. Một vài câu hỏi, được bạn làm cập nhật trực tiếp đến chỉ số của bạn trong cơ sở dữ liệu lưu thông tin cập nhật và xóa bỏ? Ngoài ra tôi đang giả sử bạn đang quản lý danh mục của bạn bằng cách serializing một bean để JSON với Jackson? Cuối cùng, nếu bạn đã không thực hiện cập nhật trực tiếp đến chỉ số của bạn, được bạn chỉ cần chạy một công việc định kỳ của một số loại để quản lý cập nhật chỉ số? –
Đó chỉ là một công việc phụ trợ mà lấy diffs được lập chỉ mục. Chúng tôi sử dụng cần tây và người giám sát (Python) cho điều đó. Chúng tôi tuần tự hóa bằng Python, tìm nạp bằng cách sử dụng SQLAlchemy và sử dụng trình tuần tự json của riêng chúng ta để gửi đến elasticsearch. – Ivan