2010-03-06 36 views
8

Tôi xử lý nhiều văn bản/dữ liệu mà tôi trao đổi giữa Python, R và đôi khi là Matlab.Tệp văn bản SQLite hoặc phẳng?

Việc truy cập của tôi là tệp văn bản phẳng, nhưng đôi khi cũng sử dụng SQLite để lưu trữ dữ liệu và truy cập từ mỗi chương trình (không phải là Matlab). Tôi không sử dụng GROUPBY, AVG, vv trong SQL nhiều như tôi làm các hoạt động này trong R, vì vậy tôi không nhất thiết yêu cầu các hoạt động cơ sở dữ liệu.

Đối với các ứng dụng như vậy yêu cầu trao đổi dữ liệu giữa các chương trình để sử dụng các thư viện có sẵn trong mỗi ngôn ngữ, có quy tắc hay nào về định dạng/phương thức trao đổi dữ liệu để sử dụng (thậm chí XML hoặc NetCDF hoặc HDF5) không?

Tôi biết giữa Python -> R có rpy hoặc rpy2 nhưng tôi đã tự hỏi về câu hỏi này theo nghĩa chung hơn - tôi sử dụng nhiều máy tính mà tất cả đều không có rpy2 và cũng sử dụng một vài phân tích khoa học khác phần mềm yêu cầu truy cập vào dữ liệu vào các thời điểm khác nhau (các giai đoạn xử lý và phân tích cũng được tách ra).

Trả lời

15

Nếu tất cả các ngôn ngữ đều hỗ trợ SQLite - hãy sử dụng nó. Sức mạnh của SQL có thể không hữu ích cho bạn ngay bây giờ, nhưng nó có thể sẽ ở một thời điểm nào đó, và nó giúp bạn tiết kiệm được những thứ sau này khi bạn quyết định có thể truy vấn dữ liệu theo những cách phức tạp hơn.

SQLite cũng có thể nhanh hơn nếu bạn chỉ muốn truy cập một số dữ liệu nhất định trong kho dữ liệu của bạn - kể từ khi thực hiện điều đó với một tệp văn bản phẳng là thử thách mà không đọc toàn bộ tệp (mặc dù nó không phải là không thể).

+0

+1 cho sqlite và dự đoán sử dụng rộng rãi cơ sở dữ liệu trong tương lai mặc dù hiện tại không rõ ràng. –

+0

Cảm ơn bạn - vâng, không đọc toàn bộ tập tin chắc chắn là điểm cộng của nó. – hatmatrix

5

Tệp văn bản phẳng (ví dụ: ở định dạng csv) sẽ là giải pháp di động nhất. Hầu như mọi chương trình/thư viện đều có thể làm việc với định dạng này: R và Python có hỗ trợ csv tốt và nếu tập dữ liệu của bạn không quá lớn, bạn thậm chí có thể nhập csv vào Excel cho các tác vụ nhỏ hơn.

Tuy nhiên, các tệp văn bản không thuận tiện cho các tập dữ liệu lớn hơn vì bạn cần đọc chúng hoàn toàn cho hầu hết mọi hoạt động (tùy thuộc vào cấu trúc dữ liệu của bạn).

SQLite cho phép bạn lọc dữ liệu rất dễ dàng (thậm chí không có nhiều kinh nghiệm SQL) và như bạn đã đề cập có thể thực hiện một số tính toán (AVG, SUM, ...). Sử dụng Plugin Firefox SQLiteManager bạn có thể làm việc với DB trên mọi máy tính mà không gặp phải bất kỳ sự cố cài đặt/cấu hình nào và do đó dễ dàng quản lý dữ liệu của bạn (nhập/xuất, lọc).

Vì vậy, tôi khuyên bạn nên sử dụng SQLite cho các tập dữ liệu lớn hơn cần nhiều bộ lọc để trích xuất dữ liệu bạn cần. Đối với các tập dữ liệu nhỏ hơn hoặc nếu không cần chọn tập hợp con dữ liệu của bạn, tệp văn bản phẳng (csv) sẽ ổn.

+0

Cảm ơn bạn - csv cho các tệp nhỏ và SQL cho các tệp lớn hơn (khả năng lọc là một lợi thế). Không biết về Plug-in Firefox - đó là điều tuyệt vời. – hatmatrix

+0

1 cho trình cắm thêm SQLiteManager. Tôi sử dụng nó, và nó là một cuộc sống tiết kiệm và tuyệt vời cho nhập khẩu (trong định dạng cvs;)) –

+0

cách thú vị, ủng hộ hoặc văn bản bằng phẳng! Thit dường như đi đến sở thích của tôi (mặc dù một tập tin văn bản phẳng TAB giới hạn để quản lý một menu portably từ bất kỳ máy tính) bạn có recomment cho tôi một tập tin phẳng, quá? xem dự án tự động hóa menu mới của tôi http://stackoverflow.com/questions/4524327/php-how-to-automate-building-a-100-ul-li-menuitems-while-keeping-the-menu-s – Sam

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