2013-02-07 37 views
6

Chúng tôi đang xây dựng một thuật toán lặp lại bằng cách sử dụng một tập hợp các truy vấn SPARQL cho mỗi lần lặp. Thuật toán này hoạt động tốt, nhưng chúng tôi đang chạy vào một vấn đề sử dụng CPU. Động cơ SPARQL như Fuseki không thực sự đa luồng; chúng cho phép nhiều truy vấn đồng thời được thực hiện trong nhiều luồng, nhưng mỗi truy vấn riêng lẻ là một luồng đơn. Từ việc xem xét một số ghi chú của Fuseki, tôi có ấn tượng rằng Fuseki không phải là chủ đề an toàn nên đây không phải là vấn đề tầm thường.Có triển khai SPARQL luồng không?

Vì thuật toán của chúng tôi vốn đã nối tiếp về các truy vấn SPARQL, và chúng tôi quan tâm đến một lần chạy, có một số công cụ SPARQL có thể tận dụng, ví dụ 32 lõi không?

+0

Fuseki là chủ đề an toàn theo thiết kế. Nếu có bất kỳ sự cố nào, vui lòng gửi báo cáo lỗi. – AndyS

+1

@AndyS, từ những gì tôi thu thập được đa luồng theo nghĩa là tôi có thể có nhiều chủ đề với mỗi giao dịch của riêng họ. Tuy nhiên, bạn không thể có cùng một giao dịch được chia giữa nhiều luồng. Http://jena.apache.org/documentation/tdb/tdb_transactions.html nói rằng truy cập đa luồng đến cùng một giao dịch được giới hạn ở chỉ đọc (hoặc một luồng ghi), vì vậy nhận xét của tôi rằng nó không phải là luồng an toàn (ít nhất là cho những gì tôi muốn). Tôi cũng lưu ý rằng động cơ KHÔNG tận dụng lợi thế của nhiều lõi cho một truy vấn duy nhất, đó là những gì tôi đang tìm kiếm, do đó câu hỏi của tôi. – Adam

Trả lời

1

Có, BigData là một ví dụ mã nguồn mở/thương mại về điều này.

dự án của riêng tôi dotNetRDF cũng sử dụng đa luồng nặng nề, trong trường hợp của tôi, tôi levarage tính năng Net PLINQ parallelize tham gia, sản phẩm, FILTERBIND hoạt động mặc dù họ không phải lúc nào tuân theo này.

Trên ghi chú của Fuseki (Tuyên bố từ chối Tôi cũng tham gia dự án Apache Jena) vì AndyS chỉ ra chính Fuseki là chủ đề an toàn. Vấn đề là công cụ truy vấn (ARQ) không được thiết kế để hoạt động song song, một số ý tưởng về điều này đã được thảo luận trong quá khứ nhưng IMO nó sẽ liên quan đến việc viết lại khá đáng kể.

+0

Tôi sẽ xem BigData. Máy của chúng tôi là một hộp Linux không đầu và tôi muốn tránh phải tìm ra cách để có được Windows trên nó nếu tôi có thể tránh nó, vì vậy tôi sẽ kiểm tra các lựa chọn thay thế đầu tiên. Nhưng có vẻ như dotNetRDF sẽ làm những gì tôi cần. – Adam

+0

Phụ thuộc vào quy mô của bạn, trong khi dotNetRDF có công cụ tạo luồng, nó chỉ có thể đạt đến vài triệu ba lần trong hiện thân của nó và là một cửa hàng không liên tục (tức là bạn phải tải dữ liệu mỗi lần). BigData có thể là lựa chọn tốt hơn đặc biệt cho các kịch bản sản xuất – RobV

1

Động cơ Urika được phát triển và tiếp thị bởi YarcData có tính đa luồng cao (lên đến vài nghìn chủ đề đồng thời) và chạy trong bộ nhớ rất lớn. Có lẽ là không thích hợp cho một ngân sách hobbyist mặc dù. :)

+0

Thực tế câu hỏi này là từ khi chúng tôi đang làm việc trên một mục nhập vào thử thách YarcData mà họ đã làm một thời gian trước đây, nơi chúng tôi đã sử dụng uRiKa. Nhưng chúng tôi muốn một cái gì đó để A) chơi với để gỡ lỗi và như vậy và B) để so sánh uRiKa với một máy cổ điển. – Adam

+0

Ồ, và uRiKa là toàn bộ thiết bị, không chỉ là một phần mềm. Máy sử dụng các bộ xử lý ThreadStorm (hậu duệ từ các XMT cũ nếu bạn quan tâm), điều này làm luồng của chúng theo một cách cơ bản khác với cách mà các chip x86 hoạt động. Vì vậy, ngay cả khi bạn đã có tiền mặt, bạn không thể thực sự sử dụng động cơ của họ trên một máy tiêu chuẩn. – Adam

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