Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Вниз

Очень большая БД   Найти похожие ветки 

 
Artem K.   (2002-08-22 16:51) [0]

Уважаемые мастера!
Я разрабатываю приложение с использованием БД.
Опыта работы с БД мало.
Ответьте пожалуйста на следующие вопросы:
1. Какую БД (Paradox, dBase, FoxPro или др.) лучше использовать (из имеющихся в составе Delphi) для работы (поиск, фильтрация, создание новой БД) с огромным числом записей в таблице БД (>500000000)?
2. Стоит ли использовать SQL (см. вопрос 1)?
3. Имеет ли смысл разбить такую БД (см. вопрос 1) на несколько, и ускорит ли это работу?
4. Я использовал БД Paradox 7. Из одной таблицы (кол-во записей ~7000), путем математических вычислений над ее полями, создавал другую (кол-во зап. должно было быть ~25000000). Но при добавлении записей в районе ~11000000 в таблицу возникла ошибка "Table is full" (Таблица заполнена). Как устранить эту ошибку (может быть ответом на вопрос 1?)?


 
Anatoly Podgoretsky   (2002-08-22 17:01) [1]

1. ни одна не будет работать
2. да и нужен достаточно мощный сервер
3. нет
4. увеличить размер блока


 
MsGuns   (2002-08-22 19:57) [2]

>Anatoly Podgoretsky (п.3)
Смелое заявления, особенно не имея ни малейшего представления о сущности хранимой в такой БД инфы, да еще учитывая, что Artem сообщает в п.4. У меня вообще в голове не укладывается КАК можно в принципе работать с таким кол-вом записей. Может просто дело в неправильной ОРГАНИЗАЦИИ хранения данных (типа декартова ?)


 
Anatoly Podgoretsky   (2002-08-22 20:01) [3]

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


 
Jeer   (2002-08-22 20:01) [4]

>Anatoly Podgoretsky © (22.08.02 17:01)
>3. нет

Могу добавить, что во времена явной нехватки ресурсов на слабеньких по нынешним меркам машинах, совершенно нормальным было разделение некоторых таблиц по фактору МЕСЯЦ, ГОД.
Ускорение было явным.

>MsGuns © (22.08.02 19:57)
>Может просто дело в неправильной ОРГАНИЗАЦИИ

Скорее всего.
Если автор соблаговолит изложить задачу, то могут возникнуть дельные рекомендации.


 
Jeer   (2002-08-22 20:04) [5]

>Anatoly Podgoretsky © (22.08.02 20:01)
>А разбиением я посмотрю как он будет делать выборки.

А это зависит от способа организации выборок.
Например, практикуется и сейчас подведение итогов в конце месяца, т.н. опер-месяц.
Данные далее идут нарастающим относительным итогом


 
MsGuns   (2002-08-22 20:10) [6]

Для очень больших объемов СОВЕРШЕННО ЦЕЛЕСООБРАЗНО использовать архивные БД, физически отделенные от актуальной. Фактор времени (точнее, периода) в таких случаях обычно все решает. А выборка из табла в 1000000 записей будет итти существенно медленнее (в десятки и даже сотни раз) последовательной выборки из 50 таблиц по 20000 записей (для настольных систем, ессно). Опять же на выборку сильно влияет наличие/отсутствие ключей, тип и размер полей и т.д.


 
Наташа   (2002-08-23 10:07) [7]

Для хранения (и нормальной обработки) такого кол-ва записей я бы посоветовала использовать Industrial SQL SERVER совместно с MS SQL Server. Есть его различные версии, расчитанные на различный объем данных (по кол-ву переменных). Например, в In SQL я пишу показания счетчиков с интервалом в 1 сек., а в MS SQL сбрасываются данные по времени операций и суммарному расходу за каждую операцию. Что касается Paradox и ему подобных, то при объеме более 100 000 записей в одной таблице начинается куча разных проблем- индексы валятся, тормозит, много пользователей не пускает...


 
Anatoly Podgoretsky   (2002-08-23 10:13) [8]

Jeer © (22.08.02 20:04)
Я знаю обходные пути, но я в первую очредт говорил об аналитике


 
Маша   (2002-08-23 10:14) [9]

2 Наташа (23.08.02 10:07)
>>Industrial...

Это название фирмы ?


 
Hro   (2002-08-23 10:23) [10]

Ну то что ни одна СУБД (если их таковыми можно обозвать) из перечисленных не подходит это однознаачно. Что касается "СТОИТ ЛИ ..." то скажу не СТОИТ, а НЕБХОДИМО!. Добится ускорения при работе с таким объемом информации зависит от их характера, логики, и вообще самой задачи. Да если это инфа допустим по бухгалтерии то есть понятие месяца тогда разбиваем и все понятно. А если это непрерывные данны то тут стоит серьезно задуматься об организации базы данных. Тут я согласен с мнением Наташи об использовании MS SQL.

Кстати НАТАША ты случайно не энергетикой (АСКУЭ) занимаешся?


 
Desdechado   (2002-08-23 10:42) [11]

> Из одной таблицы (кол-во записей ~7000), путем математических
> вычислений над ее полями, создавал другую (кол-во зап. должно
> было быть ~25000000)
А стоит ли такое делать? Ведь если данные можно вычислить, то зачем их хранить, тем более в таком объеме. Хотя есть и исключения, когда вычисления слишком продолжительные (заметно больше времени выборки из БД).


 
Tornado   (2002-08-23 11:07) [12]

А как будет вести себя БД Access при объеме примерно в 400 000 - 500 000 записей?


 
Artem K.   (2002-08-23 12:58) [13]

Задачи состоят в следующем:
1. Имеется БД (Paradox 7) по звездам (кол-во записей ~7000) с полями: название (alpha), прямое восхождение (number), склонение (number), звездная величина (number). Нужно найти пары звезд, косинус угла между которыми меньше заданной величины. Косинус угла между звездами рассчитывается с использованием полей: прямое восхождение и склонение. По результатам расчетов создается БД (количество записей по моим расчетам ~>25000000)с полями:косинус угла между звездами соответствующий условию (number), название первой и второй звезды в паре (alpha).
2. Есть другая БД (формат пока еще не знаю) по звездам (кол-во записей 50000000). Нужно сделать тоже самое что и в задаче 1.


 
Shaman_Naydak   (2002-08-23 17:18) [14]

Мда, народ, тут кол-во записей не подсократишь :)
Или возможно есть смысл разбивать, если работают всегда отдельно, скажем, с углом 0-45, 45-90 и.т.п.. идея ясна?
Кстати, не вздумай впихивать в таблицу названия звезд, только ссылки.. уж они то просятся вынести их в справочник, как пить дать


 
Юрий Жуков   (2002-08-23 17:35) [15]

500 миллионов записей? Я правильно посчитал нули?
Для таких серверов как Oracle и MSSQL это не проблема.

Скажу так, где-то чуть меньше года назад в качестве теста мы загнали нашу базу на MSSQL в несколько таблиц по десятку миллионов записей. А потом тестировали запросы - ответ приходил в доли секунды. Грамотная база и индексы тебя спасут.

Сдается мне что и Oracle будут по барабану такое количество.


Более того, на сайте ibase.ru вы найдете упоминание о подобной базе на Interbase(люди взлавмывали какой-то алгоритм).



 
Anatoly Podgoretsky   (2002-08-23 17:40) [16]

980 гигабайт


 
Tornado   (2002-08-23 18:42) [17]

>Юрий Жуков © (23.08.02 17:35)

Если Вы об моем сообщении, то не 500 милионов а всего лишь 500 тысяч (математика).... Я саашивал конкетно о MSACCESS


 
Юрий Жуков   (2002-08-24 09:47) [18]

2Tornado
Нет я отвечал на оригинальное сообщение от Artem K.
Загони эти 500 000 записей и посмотри.


 
Artem K.   (2002-08-24 13:35) [19]

Большое спасибо всем за ответы.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
1-50851
Mazenrat
2002-09-04 15:51
2002.09.16
Как программно найти каталог Program Files?


1-50759
Runser
2002-09-06 07:22
2002.09.16
Минимизация формы


3-50615
Sergey-ZZZ
2002-08-26 15:03
2002.09.16
InterBase


1-50821
Shrek
2002-09-03 19:33
2002.09.16
WinApi


1-50720
Micah'GF
2002-09-05 11:56
2002.09.16
Выключить монитор и блокировать клавиатуру.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский