Как хранить данные в базе данных без таблиц?


12

Все, что я узнал в школе, был SQL, который сохраняет данные в таблицы. Сейчас я работаю над проектом, где данные хранятся в XML-файлах. Кроме того, каждый XML содержит ссылку на визуальные файлы (JPEG).

Сам XML содержит более тысячи координатных точек, а также дополнительную информацию о данных.

На мой взгляд, не имеет смысла хранить эту информацию в таблицах. Кроме того, я не мог хранить JPEG-файлы вместе с SQL.

Какое было бы подходящее решение или есть ошибка в рассуждениях на моей стороне?

Как видите, я довольно новичок в базах данных. Так что любые конструктивные предложения, ссылки и советы приветствуются.


SQL Server, безусловно, может хранить файлы JPEG, используя тип данных IMAGE. Я не рекомендовал бы это, однако. Вам лучше использовать FILE-STREAM.
Датагод

Когда дело доходит до хранения jpeg (или любого другого файла) в базе данных, это было рассмотрено здесь на некоторых из наших наиболее часто задаваемых вопросов. Что касается способа хранения XML и последующего быстрого нахождения этих данных, то именно для этого предназначены системы хранения данных документов. Я бы посмотрел на решение NoSQL для реляционной базы данных, с которым мне будет проще работать, я мог бы себе представить.
Jcolebrand

Когда дело доходит до XML, IBM DB2 позволяет вам это делать. И вы можете запросить данные с помощью SQL или XPath / XQuery. Их бесплатная версия Express-C поставляется с возможностью сделать это. Если вы перейдете на Enterprise Edition, вам придется заплатить, чтобы включить эту функцию.
Крис Олдрич

Ответы:


11

Все, что вам нужно, это постоянство вашего XML. Используйте решение NoSQL или файловую систему.

Использование СУБД бесполезно, если только вы не хотите использовать ее вместо NoSQL или файловой системы.


Каким было бы подходящее решение NoSQL? Я работаю с C # в приложении Winform кстати.
ン ー ズ パ ン

@bodycountPP: у меня нет опыта с ними ...
gbn

7
Я хотел бы проверить RavenDB ( ravendb.net ) или CouchBase ( couchbase.com/couchbase-server/overview ) для использования в Windows. Другие можно найти через Googles - у меня был хороший опыт с этими продуктами. Очевидно, ваш пробег может варьироваться :)
ITHedgeHog

10

Я закладка Фил Фактора блог Нормирование и «Anima Notitia Copia» сегодня , как это аккуратно суммирует аргументы в пользу и против нормализации определенных типов данных. Запустите следующий запрос для экземпляра SQL и посмотрите, согласны ли вы.

SELECT * FROM sys.syslanguages

SQL позволяет создавать реляционные базы данных. Однако, даже если он пахнет плохо, нельзя совершать ужасно нереляционные вещи с базой данных SQL, если это необходимо, и вы можете заметить разницу; не только это, но и только если вы знаете о рисках и последствиях.

Вы упомянули, что файл XML содержит «дополнительную информацию о данных». Есть ли польза в моделировании этих метаданных в реляционной базе данных, возможно, для целей допроса? Если это так, может быть случай для извлечения соответствующих данных и сохранения оставшегося XML в качестве типа документа XML.

... если вам передали строку JSON или XML и требуется сохранить ее в базе данных, то все, что вам нужно сделать, - это спросить себя в роли Anima notitia copia (Soul of the database): интерес к содержанию этого элемента информации? Если ответ «Нет!» Или «Неквам! Тогда это атомная ценность, какой бы сложной она ни была.

Аргумент Фила Фактора заключается в том, что нереляционные поля в реляционной базе данных вполне приемлемы, если поле рассматривается как атомарное, то есть оно не изменяется, или когда изменяется целое поле, а не его составная часть. Естественным расширением этого является то, что если ваш документ содержит элементы, которые вас интересуют, может быть целесообразно применить реляционную модель к этим элементам.

Относящийся к вопросу, но в первую очередь к фразеологии, последняя цитата Фила:

Естественно, я никогда сознательно не создавал базу данных, на которую бы нахмурился Кодд, но по краям есть интерфейсы и потоки данных, которые я написал, которые вызвали его неприязнь среди фундаменталистов нормализации.

Разве мы не все!


2
ACORD немного похож на это. Я видел людей, пытающихся использовать их в качестве модели базы данных. Впоследствии ACORD получил лицензию на модель данных от Prima, поэтому даже они признают, что она не была большой частью модели данных. Стандарт обмена сообщениями ACORD содержит около 7000 полей, из которых около 200 являются обязательными. Лучшее описание ACORD (от человека, активно занимающегося стандартами обмена сообщениями) состоит в том, что «не знаю, как управлять процессом стандартизации».
ConcernedOfTunbridgeWells

3

Что касается баз данных Oracle, ответ - вы не можете . Все данные в базе данных хранятся в таблицах, даже метаданные. Данные могут храниться в очередях, но это просто другой способ использования таблиц. XML-файлы могут храниться вне базы данных, но это не соответствует вашим требованиям «в базе данных».

Выходя за рамки поставленного вопроса, файлы JPEG или любые другие файлы могут быть сохранены в базе данных. Им потребуется таблица и столбец больших объектов (BLOB или CLOB). XML также может храниться таким образом, но импорт данных XML в базу данных позволит вам работать с данными способами, которые сейчас нелегко сделать. Это также обеспечит другие преимущества баз данных, включая: сокращение избыточности, доступность, параллелизм, масштабируемость, совместимость, безопасность, восстановление и производительность.

Если преимущества базы данных не способствуют достижению ваших целей, не используйте ее.


2

Мне кажется, что вы пытаетесь реализовать пространственную базу данных . Это своего рода реляционная база данных (или дополнение к существующим продуктам баз данных, например, Oracle Spatial, postGIS), которая поддерживает функции типов пространственных данных и используется для оптимизации хранения и запросов данных, относящихся к пространственным объектам, таким как полигональные границы, точки и слои. XML, который у вас есть, звучит как пары координатных границ, а связанные изображения звучат как графические ресурсы, отображаемые на этой границе. Если данные подходят, рассмотрите реляционную пространственную базу данных, которая предлагает встроенное пространственное моделирование, чтобы обеспечить функциональность, которую в противном случае вам было бы сложно или трудоемко реализовать.


Кроме того, если будут внедрение географической информационной системы , рассмотреть вопрос задаю этот вопрос по по географическим информационным системам .
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.