Xin chào Tôi là một kỹ sư xây dựng với một số kinh nghiệm lập trình nhưng tôi không quen với hàng loạt các tùy chọn có sẵn hiện nay. Hy vọng bạn có thể cho tôi bất kỳ con trỏ cách tốt nhất để tiến hành.
Tôi muốn thực hiện và truy vấn cơ sở dữ liệu về các phép đo khảo sát mặt đất theo định dạng lưới. Sẽ có nhiều phép đo cho từng vị trí lưới tại các thời điểm khác nhau thông qua công việc vận chuyển đất để có chiều thứ 4 về thời gian.
Các quan sát rất có thể sẽ được đọc từ một tệp văn bản. Trong mỗi bản ghi sẽ có một vị trí lưới (2 x số nguyên) (hàng và cột) một mức mặt đất (dấu phẩy động) và các mã thông tin chuỗi khác nhau (có thể có tổng cộng tối đa 30 ký tự).
Các lưới có thể có khoảng 10000 hàng x 10000 cột. Không phải mọi vị trí trên lưới sẽ có một bản ghi trong mỗi khảo sát, nhưng chúng thường có tới một trăm bản ghi. Rất nhiều vị trí lưới sẽ không có hồ sơ nào cả (trang web sẽ không phải là hình chữ nhật hoàn hảo).
Tôi muốn tìm kiếm các bản ghi, trích xuất dữ liệu và thực hiện các phép tính, ví dụ như tính toán mức mặt đất thấp nhất hoặc cao nhất cho từng vị trí lưới. Tôi khá tự tin rằng tôi sẽ có khả năng lập trình điều này khá đơn giản bằng một ngôn ngữ như FORTRAN, BASIC hoặc C bằng cách sử dụng mảng. Mặc dù vậy, rất nhiều phần tử mảng sẽ trống và tôi đoán rằng đây không phải là cách phù hợp để làm điều đó và các cơ sở dữ liệu lớn như thế này cần các công cụ đặc biệt mà tôi sẽ phải học cách sử dụng.
Tôi đang nghĩ về các tùy chọn có thể cho nền tảng -
Sử dụng một chương trình cơ sở dữ liệu. Tôi không quen với việc chúng có thể mạnh đến mức nào nhưng tôi tưởng tượng chúng sẽ có nhiều chi phí hoạt động với GUI.
Sử dụng SQL? Điều này tôi không biết nhiều nhưng nó dường như là ngôn ngữ cho cơ sở dữ liệu. Tôi đã luôn sử dụng các ngôn ngữ bắt buộc hơn là khai báo và như tôi hiểu từ wikipedia rằng SQL là khai báo, tôi hơi lo lắng về sự thay đổi. Tôi không hiểu đầy đủ về quy trình sử dụng nó. Có một trình biên dịch làm cho các chương trình giao diện điều khiển? Là cơ sở dữ liệu được lưu trữ trên đĩa? Xin lỗi vì những câu hỏi ngu ngốc như vậy.
Sử dụng API như c-treeACE? Tôi nghĩ rằng đây có thể là cách để mang đến cho tôi sự quen thuộc của ngôn ngữ "làm điều này, sau đó làm điều đó" (thật không may, đây là cách tôi nghĩ như một kỹ sư!). Nhưng tôi hy vọng rằng bộ nhớ và quản lý xử lý hậu trường do API cung cấp sẽ vượt trội hơn so với những gì tôi có thể đạt được với các mảng lớn.
Hoặc tôi có thể làm điều đó với một ngôn ngữ hướng đối tượng và để máy tính lo lắng về các yêu cầu lưu trữ. ví dụ: nếu tôi lưu trữ các bản ghi dưới dạng các đối tượng với các phương thức và thuộc tính sẽ giúp tôi nhận được kết quả tôi cần trong mỗi bản ghi - đó có phải là một chương trình cồng kềnh so với 3)
Có khả năng có hàng trăm triệu bản ghi và tôi muốn có thể truy vấn và xử lý chúng trong vài phút chứ không phải vài giờ (tốt nhất là vài giây!) Trên một PC hiện đại chạy windows. Cụ thể hơn, tôi là bộ xử lý i7 với ram 6Gb và SSD 120Gb chạy Windows 7 64 bit.
Hy vọng ai đó có thời gian để chia sẻ một vài lời khôn ngoan với một người mới.