LINUX.ORG.RU

[СУБД]организация хранения больших массивов чисел

 


0

1

Здравствуй, ЛОР. Мне необходимо организовать хранение больших массивов чисел в СУБД. Массивы эти - суть волновые картины, получаемые в результате аккустических исследований скважин. Каждый массив содержит по 5000 тысяч значений, самих массивов множество, ну и исследований по разным объектам тоже достаточно. Думается мне, что хранение таких данных в отдельной таблице с внешним ключиком на сущность картина будет не самым лучшим решением. Имеет ли смысл хранить такие данные в виде блоба, или есть ещё какие-то методы?

зы. СУБД оффтоповая MS SQL, сильно не пинайте, выбор делал не я.

★★★★★

Их обязательно хранить в РСУБД? Для таких вещей очень хорошо бы подошло что-то типа HDF5.

Zenom ★★★
()

Имеет ли смысл хранить такие данные в виде блоба, или есть ещё какие-то методы?

вообще, если массивы данных очень большие (как, например, в астрофизике), то принято их хранить в древовидной структуре каталогов, а традиционные БД идут лесом, ибо не нужны

shty ★★★★★
()
Ответ на: комментарий от Zenom

Для таких вещей очень хорошо бы подошло что-то типа HDF5.

плюсую за HDF, кстати

shty ★★★★★
()

Каждая запись (трасса?) получается по 20Мб. А чем уже SEG-Y не угодил то? Там казалось бы по дцать трасс в файл, а дальше файлы упорядоченно по директориям, все хозяйство на зеркалируемую ФС и вот оно щастье. Ну можно конечно (и нужно наверное) в СУБД лить отдельно содержимое этикеток со ссылками на конкретные файлы, что б по диску не шарится и иметь полную картину мироздания.

Как человек, такие массивы генерящий, могу сказать что у нас так и сделано, только СУБД своя иерархическая (параметры аасоцированные с расчетом лежат в директории расчета в отдельном файле и это можно трактовать как одну запись) заточенная именно под моделирование. Потому как диски и так не успевают напрямую данные писать, а тащщить это все еще через интерфейсы БД...

AIv ★★★★★
()
Ответ на: комментарий от Zenom

>Их обязательно хранить в РСУБД?

ну вообще, можно попробовать договориться, но пока бос сказал РСУБД. а бос у нас консервативный. на дельфях вот писать заставляет.

RedPossum ★★★★★
() автор топика

Храни в файле, СУБД тут нафиг не сдалось.

vertexua ★★★★★
()

5000 ? если каждое значение по байт 20 - то это 100кбайт на еденицу?
вполне такой хороший размерчик

а их колво сколько ? тысячи - миллионы ?
если бы ненужно обеспечивать к ним доступ удаленно - то ничего проще да и эффективнее файловой системы и нету

а если всеже в базу - так если в этих обьектах нету внутренней структуры - так то это Блоб-ы -и хранить из в sql базе как блобы

ae1234 ★★
()

А в МС SQL нет деления таблиц на разделы, как это есть в Оракле специально для работы с огромными таблицами в сотни гигабайт?

anonymous
()

Для начала ответь на такой вопрос: Тебе в каждый раз нужно получать весь массив или нет.

  • Если да, то либо в блоб, либо в отдельный файл.
  • Если нужны интервалы, то думай как на стороне сервера получать эти интервалы и отдавать только их. Тут тоже более красиво выглядят файлы, из них проще считывать только нужный диапазон.

Т.е. так или иначе лучше создать отдельный сетевой сервис для выдачи массивов по их ID. В системе эти сервисы должны иметь возможность запускаться на разных узлах для масштабирования. А на сервере храни только мета-информацию.

З.Ы.: Надеюсь правильно понимаю, что «5000 тысяч значений» - это 5 миллионов чисел на массив, а не опечатка.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

пардон. опечатка 5000 всего.

а вот получать надо сразу массив. даже не так. десятки массивов для обработки(если я правильно понял, 1 волновую картину 1 исследования). то есть имеет смысл хранить это всё в файлах.

RedPossum ★★★★★
() автор топика

На конфе слышал что народ сливает данные в постгрес(который ещё реплицируется) в виде массивов по 200 значений на строку. У них было 130-150 замеров в секунду, объём данных 1.3тб и продолжал рости. Работало всё без тормозов.

Но если идёт речь о таких смешных объёмах как 5тыщ значений то можно их как угодно хранить, тормозить не будет.

true_admin ★★★★★
()

Года идут, а вопросы не меняются.

или есть ещё какие-то методы?

Однозначно файлы. В СУБД можно хранить метаданные для массивов.

mashina ★★★★★
()
Ответ на: комментарий от mashina

Оракл так и делает с блобами, но они у него работают с учётом транзакций. У МС тоже самое должно быть. Делать самому — это изобретение велосипеда и программирование уже имеющихся возможностей СУБД.

anonymous
()
Ответ на: комментарий от RedPossum

Если всего 5000, то спокойно внутри базы в блобах

AlexVR ★★★★★
()
Ответ на: комментарий от anonymous

Нафига тебе на такой блоб транзакции? Вангую, совершенно это не нужно в твоей задаче.

mashina ★★★★★
()
Ответ на: комментарий от RedPossum

>бос у нас консервативный. на дельфях вот писать заставляет.

mssql, дельфя... может нахер такого босса?

quest ★★★★
()
Ответ на: комментарий от quest

>может нахер такого босса?

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

RedPossum ★★★★★
() автор топика

если вам необхадимо только хранение, то вообще используйте файлы.

visual ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.