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

Вниз

Самый шустрый сервер   Найти похожие ветки 

 
REA   (2004-11-16 12:32) [0]

Есть необходимость работать с данными большого объема. Таблица (допустим) одна, 100 полей FLOAT, первичного ключа (допустим) нет.
Требуется запись в таблицу со скоростью 1 запись/сек. и как можно более быстрое чтение. Объем может достигать 2Гб, но проверить не могу т.к. вставка медленная - придется долго генерировать.
Какой сервер из семейства IB (Firebird, Yaffi...) можете посоветовать для такой задачи?


 
Reindeer Moss Eater ©   (2004-11-16 12:38) [1]

Любой из перечисленных.


 
Danilka ©   (2004-11-16 12:42) [2]


> первичного ключа (допустим) нет

Однако, такого, думаю, лучше не допускать никогда :))


 
REA   (2004-11-16 12:43) [3]

А все-таки. Есть ли у кого данные по быстродействию серверов (и их версий)?


 
Reindeer Moss Eater ©   (2004-11-16 12:45) [4]

Первичный ключ иногда не нужен.

А все-таки. Есть ли у кого данные по быстродействию серверов (и их версий)?

Большее значение будут иметь характеристики тома где лежит бд, чем конкретная модель.


 
REA   (2004-11-16 12:46) [5]

>Однако, такого, думаю, лучше не допускать никогда :))

Если его сделать, то полагаю скорость записи может замедлиться на больших объемах. Учитывая, что при [Forced write = on] скорость и так оставляет желать лучшего (порядка 30 записей в секунду), то ИМХО отсутствие первичного ключа может как то улучшить ситуацию с вставкой.


 
REA   (2004-11-16 12:50) [6]

>Большее значение будут иметь характеристики тома где лежит бд, чем конкретная модель.

БД лежит локально, быстродействие компьютера и дисковой подсистемы среднее (Хотя диск похоже мало влияет - он его и не дергает при записи почти). Чтение впрочем возможно и по сети, но мне кажется, что быстродействие сервера будет ниже, чем пропускная способность сети 100Мбит (пока не пробовал).

Т.е. от типа сервера для данной задачи быстродействие не зависит?


 
Fay ©   (2004-11-16 15:14) [7]

2 REA   (16.11.04 12:50) [6]
А нафиг тебе чтение таблицы без первичного ключа?


 
Fay ©   (2004-11-16 15:15) [8]

А ваще имеет смысл взять FB 1.51


 
Reindeer Moss Eater ©   (2004-11-16 15:20) [9]

PK - не самоцель, а средство.
Если нет цели, которую надо достичь с помощью PK, то он не нужен.


 
Соловьев ©   (2004-11-16 15:27) [10]

ПК - может состоять из всех полей


 
Соловьев ©   (2004-11-16 15:29) [11]

В смысле его создавать не надо, а думать что уникальность определяется всем кортежем


 
Fay ©   (2004-11-16 15:31) [12]

Чтобы так думать, надо иметь уверенность


 
Соловьев ©   (2004-11-16 15:32) [13]


> Требуется запись в таблицу со скоростью 1 запись/сек

Ну так пишеим дату + время - вот тебе и уникальность.


 
Sergey13 ©   (2004-11-16 15:38) [14]

2 Соловьев © &  Fay ©
Зачем бороться за уникальность, если она не нужна? см [9] Reindeer Moss Eater ©   (16.11.04 15:20)


 
Danilka ©   (2004-11-16 15:52) [15]

[14] Sergey13 ©   (16.11.04 15:38)
А нафига в БД неуникальные записи? :))

Есть какой-нибудь пример, когда ПК ненужен или (о-боже) вредит? Что-то я не могу предстравить..


 
Danilka ©   (2004-11-16 15:54) [16]

Или просто пример случая, когда бывает необходима таблица, содержащая полностью одинаковые записи. И как в таком случае обратиться к какой-нибудь конкретной из них?


 
Reindeer Moss Eater ©   (2004-11-16 15:59) [17]

Конечно есть.
Например простейшая таблица привилегий, которыми наделены пользователи:
create table user_rights(
user_id ...,
privilege_id ...
);

Систему интересует набор привилегий, которыми обладает юзер.
Системе не надо знать в какой конкретной записи содержится привилегия.


 
Соловьев ©   (2004-11-16 16:04) [18]


> Системе не надо знать в какой конкретной записи содержится
> привилегия.

Но админу то надо! Чтобы забрать привелегию.


 
Reindeer Moss Eater ©   (2004-11-16 16:07) [19]

Что бы забрать привилегию, админ напишет запрос
delete from user_rights wherer user_id = :uid and privilege_id = :pid


 
Danilka ©   (2004-11-16 16:08) [20]

[17] Reindeer Moss Eater ©   (16.11.04 15:59)
Дык, здесь в качестве ПК будет две записи: "юзер" и "привелегия", кроме всего прочего, на уровне сервера будет обеспечен контроль - не будет записей с одинаковым набором юзер и привелегия


 
Danilka ©   (2004-11-16 16:08) [21]

брр, не две записи, а составной ПК по двум полям


 
Соловьев ©   (2004-11-16 16:09) [22]


> wherer user_id = :uid and privilege_id = :pid

Ну так вот и есть ПК - виртуальный правда :)


 
Johnmen ©   (2004-11-16 16:12) [23]

>Reindeer Moss Eater ©   (16.11.04 15:59) [17]

Здесь нет одинаковых записей (по смыслу).
И ПК есть (опять же по смыслу).


 
Reindeer Moss Eater ©   (2004-11-16 16:13) [24]

По смыслу может быть это и PK.
Но объект БД "primary key" в этом случае не нужен.
Он ничего нам не дает и ничего не решает.


 
Johnmen ©   (2004-11-16 16:16) [25]

А что дает/решает ПК, напр., в таблице-справочнике ?


 
Danilka ©   (2004-11-16 16:16) [26]

[24] Reindeer Moss Eater ©   (16.11.04 16:13)
решает. во-первых скорость доступа в запросе: wherer user_id = :uid and privilege_id = :pid
во-вторых, обеспечивает уникальность. :))


 
Reindeer Moss Eater ©   (2004-11-16 16:25) [27]

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

2. Скорость обеспечивается и обычным индексом.

PK здесь нафик не нужен.


 
Соловьев ©   (2004-11-16 16:26) [28]


> 2. Скорость обеспечивается и обычным индексом.

Что влечет за собой замедление при вставке...


 
Reindeer Moss Eater ©   (2004-11-16 16:27) [29]

А PK это "волшебство", работающее без индекса, и вставку не замедляет.
Так что ли?


 
Соловьев ©   (2004-11-16 16:31) [30]


> А PK это "волшебство", работающее без индекса, и вставку
> не замедляет.
> Так что ли?

Замедляет конечно. Просто я так понял спор разгорелся из-за того, что ПК может и не существовать(я так понимал, что имелось ввиду - не существовать вообще). Как оказалось такого быть не могет. ПК всегда есть :)


 
Reindeer Moss Eater ©   (2004-11-16 16:34) [31]

Не надо путать логические сущности и физические объекты.
PK есть не всегда.


 
Соловьев ©   (2004-11-16 16:40) [32]


> Не надо путать логические сущности

Логически ПК должен быть. Потому как смысла в данных не будет
Физически да, может и не быть.


 
Reindeer Moss Eater ©   (2004-11-16 16:42) [33]

В моей таблице нет физического PK.
И логического PK то же нет.
Потому что мне не надо уникально идентифицировать запись.

Тем не менее в таблице смысла - хоть отбавляй.


 
Соловьев ©   (2004-11-16 16:47) [34]


> create table user_rights(
> user_id ...,
> privilege_id ...
> );

Эта таблица? ПК Вы сами привели в запросе

> delete from user_rights wherer user_id = :uid and privilege_id
> = :pid


 
Reindeer Moss Eater ©   (2004-11-16 16:54) [35]

Это не ПК, это перечень полей.


 
Sergey13 ©   (2004-11-16 17:59) [36]

2[15] Danilka ©   (16.11.04 15:52)
>А нафига в БД неуникальные записи? :))
Есть какой-нибудь пример, когда ПК ненужен или (о-боже) вредит? Что-то я не могу предстравить..

Ну например лог какого то устройства за сутки. Могут отслеживаться только крайние значения например. В сутках может быть сколько угодно одинаковых значений (прибор тупо отдает - база тупо пишет). Удаляется сразу посуточно т.е. where day=:day. Не редактируется. И что? Зачем ПК? Достаточно (но и необязательно 8-) индекса по суткам, ну и по искомой величине.


 
vuk ©   (2004-11-16 18:04) [37]

to Reindeer Moss Eater ©   (16.11.04 16:25) [27]:
>1. Уникальность не нужна (будет сто одинаковых записей, но
>стократного увеличения привилегий не будет )
При выборках всегда select distinct писать будете? Сервер железный - ему по барабану? :o)


 
Reindeer Moss Eater ©   (2004-11-16 21:41) [38]

Для того, чтобы узнать, есть ли у юзера привилегия Х я не буду писать distinct. Зачем он?
Exists после первого же найденного вхождения мне вернет true, либо не вернет false если привилегии нет вовсе.


 
vuk ©   (2004-11-16 21:59) [39]

exists - да. А если для отображения в клиенте?


 
Reindeer Moss Eater ©   (2004-11-16 23:19) [40]

Если будет требование отображать в клиенте список привилегий, я добавление привилегии реализую с предварительной проверкой на её существование.



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

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

Наверх




Память: 0.54 MB
Время: 0.048 c
1-1102307317
Ivvvan
2004-12-06 07:28
2004.12.19
Интеграция c Outlook Express


4-1099314757
zsv
2004-11-01 16:12
2004.12.19
реестр


1-1102057217
denis24
2004-12-03 10:00
2004.12.19
TdateEdit.date


3-1100850329
axx
2004-11-19 10:45
2004.12.19
Рекомендации по FIBs и TThread


4-1099829125
SPeller
2004-11-07 15:05
2004.12.19
Combobox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский