"Thật là hấp dẫn, nếu công cụ duy nhất bạn có là một cái búa, để đối xử với mọi thứ như thể nó là móng tay." - Abraham MaslowCơ sở dữ liệu Lập trình chức năng ở Clojure
Tôi cần phải viết một công cụ để kết xuất một cơ sở dữ liệu phân cấp lớn (SQL) sang XML. Hệ thống phân cấp bao gồm một bảng Person
với các bảng phụ trợ Address
, Phone
, v.v.
tôi phải đổ ngàn hàng, vì vậy tôi muốn làm như vậy từng bước và không giữ các tập tin toàn bộ XML trong bộ nhớ.
Tôi muốn tách mã chức năng không thuần túy thành một phần nhỏ của ứng dụng.
Tôi nghĩ rằng đây có thể là cơ hội tốt để khám phá FP và đồng thời trong Clojure. Tôi cũng có thể cho thấy những lợi ích của dữ liệu bất biến và sử dụng đa lõi cho những người đồng nghiệp hoài nghi của tôi.
Tôi không chắc cấu trúc tổng thể của ứng dụng nên như thế nào. Tôi nghĩ rằng tôi có thể sử dụng một hàm không tinh khiết để lấy ra các hàng của cơ sở dữ liệu và trả về một chuỗi lười biếng mà sau đó có thể được xử lý bằng một hàm thuần túy trả về một đoạn XML.
Đối với mỗi hàng Person
, tôi có thể tạo Future
và có một số xử lý song song (thứ tự đầu ra không quan trọng).
Khi mỗi Person
được xử lý, tác vụ sẽ truy xuất các hàng thích hợp từ các bảng Address
, Phone
, v.v ... và tạo XML lồng nhau.
Tôi có thể sử dụng hàm chung để xử lý hầu hết các bảng, dựa vào siêu dữ liệu của cơ sở dữ liệu để lấy thông tin cột, với các hàm đặc biệt cho vài bảng cần xử lý tùy chỉnh. Các hàm này có thể được liệt kê trong một map(table name -> function)
.
Tôi có thực hiện việc này đúng cách không? Tôi có thể dễ dàng quay trở lại để làm điều đó trong OO bằng cách sử dụng Java, nhưng điều đó sẽ không vui.
BTW, có sách hay nào về các mẫu hoặc kiến trúc FP không? Tôi có một vài cuốn sách hay về Clojure, Scala và F #, nhưng mặc dù mỗi cuốn sách đều có ngôn ngữ tốt, nhưng không ai nhìn vào "bức tranh lớn" về thiết kế lập trình hàm.
Theo hiểu biết của tôi, không có cuốn sách "FP cho kiến trúc sư". Tuy nhiên, nếu bạn đọc "Cấu trúc dữ liệu thuần túy về chức năng" kết thúc, bạn chắc chắn sẽ có ý tưởng tốt hơn về cách áp dụng các khái niệm FP trong thế giới thực. Xem http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504 –
@ Chris Smith: Tôi có cái đó trên danh sách mong muốn Amazon của tôi. Tôi sẽ kiểm tra. – Ralph