Làm thế nào để lưu trữ dữ liệu trong cơ sở dữ liệu mà không có bảng?


12

Tất cả những gì tôi học được ở trường là SQL lưu dữ liệu vào các bảng. Ngay bây giờ tôi đang làm việc trên một dự án nơi dữ liệu được lưu trữ trong các tệp XML. Ngoài ra, mọi XML đều chứa tham chiếu đến các tệp trực quan (JPEG).

Bản thân XML chứa hơn một nghìn điểm tọa độ, cộng với thông tin bổ sung về dữ liệu.

Theo tôi sẽ không có ý nghĩa gì khi lưu trữ thông tin này trong các bảng. Ngoài ra, tôi cũng không thể lưu trữ các tệp JPEG bằng SQL.

Điều gì sẽ là giải pháp thích hợp, hoặc có một lỗi trong lý luận về phía tôi?

Như bạn thấy tôi khá mới đối với cơ sở dữ liệu. Vì vậy, bất kỳ đề xuất, liên kết và lời khuyên mang tính xây dựng đều được chào đón.


SQL Server chắc chắn có thể lưu trữ các tệp JPEG bằng cách sử dụng kiểu dữ liệu IMAGE. Tôi sẽ không đề nghị rằng, tuy nhiên. Bạn sẽ tốt hơn khi sử dụng FILE-STREAM.
datagod

Khi nói đến việc lưu trữ jpeg (hoặc bất kỳ tệp nào khác) trong cơ sở dữ liệu, điều đó đã được xử lý ở đây đối với một số câu hỏi thường gặp nhất của chúng tôi. Đối với cách lưu trữ XML và sau đó tìm kiếm dữ liệu đó một cách nhanh chóng, đó là khá nhiều hệ thống lưu trữ dữ liệu tài liệu dành cho. Tôi sẽ xem xét một giải pháp NoQuery qua cơ sở dữ liệu quan hệ, nó sẽ dễ dàng hơn để làm việc với tôi sẽ tưởng tượng.
jcolebrand

Khi nói đến XML, IBM cho phép bạn làm điều đó. Và bạn có thể truy vấn dữ liệu bằng SQL hoặc XPath / XQuery. Phiên bản Express-C miễn phí của họ đi kèm với khả năng làm điều này. Tuy nhiên, nếu bạn chuyển sang Phiên bản doanh nghiệp, bạn phải trả tiền để bật tính năng này.
Chris Aldrich

Câu trả lời:


11

Tất cả những gì bạn cần là sự kiên trì của XML của bạn. Sử dụng giải pháp NoQuery hoặc hệ thống tệp.

Không có lợi ích trong việc sử dụng RDBMS, trừ khi bạn muốn sử dụng nó thay vì NoQuery hoặc hệ thống tệp.


Điều gì sẽ là một giải pháp NoQuery thích hợp? Tôi đang làm việc với C # trong một ứng dụng winform btw.
チ ー ズ ン

@bodycountPP: Tôi không có kinh nghiệm với họ ...
gbn

7
Tôi sẽ kiểm tra RavenDB ( ravendb.net ) hoặc CouchBase ( couchbase.com/couchbase-server/overview ) để sử dụng trên Windows. Những người khác có thể được tìm thấy thông qua Googles - Tôi đã có trải nghiệm tốt với những sản phẩm đó. Rõ ràng số dặm của bạn có thể thay đổi :)
ITHedgeHog

10

Tôi đã đánh dấu bài viết trên blog của Phil Factor Bình thường hóa và 'Anima notitia copia' hôm nay vì nó tóm tắt gọn gàng trường hợp và chống lại việc bình thường hóa một số loại dữ liệu. Chạy truy vấn sau đây trên một cá thể SQL và xem nếu bạn đồng ý.

SELECT * FROM sys.syslanguages

SQL cho phép bạn tạo cơ sở dữ liệu quan hệ. Tuy nhiên, ngay cả khi nó có mùi khó chịu, thì cũng không có tội gì khi làm những việc không liên quan đến cơ sở dữ liệu SQL miễn là nó cần thiết và bạn có thể nhận ra sự khác biệt; không chỉ vậy mà còn chỉ khi bạn nhận thức được những rủi ro và tác động.

Bạn đã đề cập rằng tệp XML chứa "thông tin bổ sung về dữ liệu". Có bất kỳ lợi ích nào trong việc mô hình hóa siêu dữ liệu đó trong cơ sở dữ liệu quan hệ, cho mục đích thẩm vấn có lẽ không? Nếu vậy, có thể có trường hợp trích xuất dữ liệu liên quan và duy trì XML còn lại dưới dạng loại tài liệu XML.

... nếu bạn được thông qua một chuỗi JSON hoặc XML và được yêu cầu lưu trữ nó trong cơ sở dữ liệu, thì tất cả những gì bạn cần làm là tự hỏi mình, trong vai trò là Anima notitia copia (Linh hồn của cơ sở dữ liệu) 'tôi có quan tâm đến nội dung của mục thông tin này? '. Nếu câu trả lời là 'Không!' Hoặc 'nequequam! Sau đó, nó là một giá trị nguyên tử, tuy nhiên nó có thể phức tạp.

Lập luận của Phil Factor là các trường không liên quan trong cơ sở dữ liệu quan hệ là hoàn toàn chấp nhận được nếu trường được coi là nguyên tử tức là nó không thay đổi hoặc khi toàn bộ trường thay đổi, không phải là một bộ phận cấu thành của nó. Phần mở rộng tự nhiên của điều này là nếu tài liệu của bạn chứa các yếu tố bạn quan tâm, có thể có giá trị khi áp dụng mô hình quan hệ cho các yếu tố đó.

Liên quan đến câu hỏi nhưng chủ yếu cho cụm từ, một trích dẫn cuối cùng từ Phil:

Đương nhiên, tôi chưa bao giờ cố tình tạo ra một cơ sở dữ liệu mà Codd sẽ cau mày, nhưng xung quanh các cạnh là các giao diện và nguồn cấp dữ liệu mà tôi đã viết đã gây ra sự phù hợp giữa các nhà cơ bản Bình thường hóa.

Không phải tất cả chúng ta!


2
ACORD là một chút như thế. Tôi đã thấy mọi người cố gắng đưa nó vào làm mô hình cơ sở dữ liệu. ACORD sau đó đã đi và cấp phép cho một mô hình dữ liệu từ Prima, vì vậy ngay cả họ cũng thừa nhận rằng đó không phải là một mô hình dữ liệu. Tiêu chuẩn nhắn tin ACORD có khoảng 7.000 trường được xác định trong đó khoảng 200 là bắt buộc - mô tả đúng nhất về ACORD (từ một người có liên quan nhiều đến các tiêu chuẩn nhắn tin) là "không biết cách quản lý quy trình chuẩn".
Mối quan tâmOfTunbridgeWells

3

Theo như cơ sở dữ liệu của Oracle, câu trả lời là bạn không thể . Tất cả dữ liệu trong cơ sở dữ liệu được lưu trữ trong các bảng, thậm chí siêu dữ liệu. Dữ liệu có thể được lưu trữ trong hàng đợi, nhưng đó chỉ là một cách sử dụng bảng khác nhau. Các tệp XML có thể được lưu trữ bên ngoài cơ sở dữ liệu, nhưng điều đó sẽ không đáp ứng yêu cầu "trong cơ sở dữ liệu" của bạn.

Di chuyển ngoài câu hỏi đã nêu của bạn, các tệp JPEG hoặc bất kỳ tệp nào cho vấn đề đó có thể được lưu trữ trong cơ sở dữ liệu. Họ sẽ yêu cầu một bảng và một cột LOB (BLOB hoặc CLOB). XML cũng có thể được lưu trữ theo cách này, nhưng nhập dữ liệu XML vào cơ sở dữ liệu sẽ cho phép bạn thao tác trên dữ liệu theo những cách không thể dễ dàng thực hiện ngay bây giờ. Nó cũng sẽ cung cấp các lợi ích khác của cơ sở dữ liệu bao gồm: Giảm sự dư thừa, Khả năng truy cập, Đồng thời, Khả năng mở rộng, Khả năng tương tác, Bảo mật, Phục hồi và Hiệu suất.

Nếu lợi ích của cơ sở dữ liệu không tiếp tục mục tiêu của bạn, thì đừng sử dụng mục tiêu đó.


2

Nghe có vẻ như bạn đang cố gắng thực hiện một cơ sở dữ liệu không gian . Đây là một loại cơ sở dữ liệu quan hệ (hoặc phần bổ sung cho các sản phẩm cơ sở dữ liệu hiện có, ví dụ: Oracle Spatial, postGIS) hỗ trợ các hàm loại dữ liệu không gian và được sử dụng để tối ưu hóa lưu trữ và truy vấn cho dữ liệu liên quan đến các tính năng không gian như ranh giới đa giác, điểm và các lớp. XML bạn có âm thanh như các cặp tọa độ biên và hình ảnh liên quan nghe giống như tài sản tác phẩm nghệ thuật để hiển thị trong ranh giới đó. Nếu dữ liệu phù hợp, hãy xem xét một cơ sở dữ liệu không gian quan hệ cung cấp mô hình không gian tích hợp để cung cấp chức năng mà nếu không bạn sẽ gặp khó khăn hoặc tốn thời gian để thực hiện.


Ngoài ra, nếu bạn đang triển khai Hệ thống thông tin địa lý , hãy cân nhắc đặt câu hỏi này trên Hệ thống thông tin địa lý .
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.