Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

распределенная БД   Найти похожие ветки 

 
ev ©   (2002-06-01 20:17) [0]

Сегодня (на встрече мастеров) мне сказали, что сабж с IB сделать невозможно! Отсюда вопросы:
1. это действительно так (если Да, то как выйти из положения)?
2. как грамотно делать резервирование БД IB на другом компьютере?


 
Alexandr ©   (2002-06-03 06:59) [1]

1) все можно, только кода больше писать надо.
2) backup ?


 
ev ©   (2002-06-03 08:25) [2]

2 Alexandr © (03.06.02 06:59)

1. что Вы имеете ввиду? Мне надо, чтобы одна БД была на несколькик компьютерах. Как это можно реализовать (или где почитать).

2. т.е. я добавляю запись в таблицу, а она АВТОМАТИЧЕСКИ (средствами interbase) появляется и на другом компьютере (который выполняет роль резервной БД).


 
Alexandr ©   (2002-06-03 09:26) [3]

1. Ты скажи сначала нафига. Тебе такое? Ты знаешь, что IB это клиент-серверная БД, и считается нормальным иметь одну базу в сети и много клиентов, работающих с ней.
2. Вообще-то есть IBReplicator, с помощью которого такое можно проделать, но проще самому написать. А нафига тебе резервная база данных ( просто архив базы данных (снимок) не подойдет?)

ты уж определись конкретно, что тебе надо, тогда уж посмотрим, как это сделать.

А так, какие-то праздные рассуждения типа круто/не круто...


 
Praco ©   (2002-06-03 09:47) [4]

Alexandr ©
Распределенная БД нужна часто. Классический пример - общий склад и несколько удаленных магазинов.

ev © (01.06.02 20:17)
Отсутствие штатных средств репликации - большой минус IB. Но сабж это не только синхронизация. Это еще и поддержка распределенных транзакций. Так что реализовать сабж можно, но лучше подумать о MS SQL, Sybase и выше, ИМХО.

Мне рассказывал один дядька о крупной американской фирме, производящей ПО для торговых предприятий, они используют исключительно средства Borland. И реализовали множество систем с распределенными базами на IB.


 
Yuri K.   (2002-06-03 10:11) [5]

Насколько я понимаю, речь идет не о распределенной БД, а о репликации. У IB я репликацию не настраивал, но вроде там по описанию такая возможность есть.


 
Шамиль   (2002-06-03 10:55) [6]

Я несколько не въехал - если есть сетка, то зачем распределенные базы? А если сетки нет и синхронизация через дискеты и т.п. - какая ж тут автоматика? Всяко придется процедурку записи на дискету писать.


 
Alexandr ©   (2002-06-03 12:05) [7]

Нет Если общий склад и несколько магазинов, то в первую очередь стоит подумать о трехзвенке, а не репликации

Как это нет штатных средств? А IBReplicator в конце концов?

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

А репликацию не настраивают, ее делать надо.


 
ev ©   (2002-06-03 13:46) [8]

1. Распределить нагрузку по разным компьютерам (слишкомм много клиентов).

2. А резервная база данных нужна, если выйдет из строя основная. Т.е. 100% резервирование.


 
Alexandr ©   (2002-06-03 13:56) [9]

1) Поставь Firebird Classic Server на Unix (Linux)
2) Поставь Yaffil Classic Server на Windows
Эти две конфигурации поддерживают многопроцессорность.
Особенно если памяти побольше...
Это решит проблемы с нагрузкой :) Хотя все относительно.
Вот тебе и нагрузка.

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

ДА не падает просто так Interbase он может годами без перезагрузки работать, а если еще и backUp делать почаше, то 100% резервирование может и не нужно?


 
Alexandr ©   (2002-06-03 13:57) [10]

а вообще-то это смахивает на универсальный решатель задач с речевым вводом


 
ev ©   (2002-06-03 14:31) [11]

2 Alexandr © (03.06.02 13:56)
А если сеть не позволяет большую нагрузку?

> ДА не падает просто так Interbase он может годами без
> перезагрузки работать
Это факт, или ИМХО?


 
Alexandr ©   (2002-06-03 14:55) [12]

если сеть не позволяет большую нагрузку, тогда легкая трехзвенка.

А насчет стабильности работы это факт, если у админа и разработчика руки не кривые.
У меня несколько месяцев без перезагрузки сервер win2000 Serv + IB5.6 работает. (потом приходится, но не из-за Interbase, а из-за Windows, установки нового ПО, глюков других программ и пр.)


 
ev ©   (2002-06-03 17:29) [13]

2 Alexandr © (03.06.02 14:55)
Что ты подразумеваешь " легкая трехзвенка".


 
shiva1 ©   (2002-06-03 18:14) [14]

У меня IB более года на сервере без перезагрузки, и никаких глюков.


 
Alexandr ©   (2002-06-04 06:46) [15]

вообщем, просто трехзвенка. Которая траффик по сети зазря не гоняет.



 
Sergey13 ©   (2002-06-04 09:25) [16]

2ev © (03.06.02 13:46)
>слишкомм много клиентов.
Это сколько?
2ev © (03.06.02 14:31)
>А если сеть не позволяет большую нагрузку?
А что за сеть такая и что за нагрузка?

2ev ©
А для начала, я бы посоветовал не западать на трехзвенки-распределенки, а просто проверить приложения на наличие запросов типа
Select * from Table
без условий. И поковырять планы запросов. И проверить частоту обновлений результатов запросов. И т.д. и т.п.
Где то я читал "адын умный вещь", что любая аппаратно-софтовая(имеется в виду что то типа смены драйверов, версий и т.п.) настройка производительности дает прирост, как правило, максимум 20~30%. Настройка и отладка приложения (в основном SQL-запросов и логики их применения) может повысить производительность в РАЗЫ. И в том и в другом сам убеждался не единожды. К тому же второй путь проще и интереснее с чисто программитской точки зрения.

В общем "Пилите, Шура, пилите. Они золотые."


 
ev ©   (2002-06-04 09:50) [17]

2 Alexandr © (04.06.02 06:46)
Т.е. серверов БД делать несколько, а сервер приложений - один.
А что будет, если сервер приложений не выдержит нагрузки.

p.s. предпологается одновременно более 10000 соеденений.


 
ev ©   (2002-06-04 09:55) [18]

От отдного пользователя поступает 1.5 млн записей в сутки (insert 50-100 байт ). А пользователей на один сервер я хочу минимум 1000.
Плюс множество пользавателей делают выборки (иногда и по 1-2 млн записей).
Или это не реально.


 
Praco ©   (2002-06-04 10:15) [19]

"предпологается одновременно более 10000 соеденений.
От отдного пользователя поступает 1.5 млн записей в сутки
пользователей на один сервер я хочу минимум 1000. "

1500000 * 1000 = 1 500 000 000 записей в сутки
"Плюс множество пользавателей делают выборки (иногда и по 1-2 млн записей)."

Что это? Американская национальная телефонная компания заказ дала? :)
IB не потянет. Oracle может и потянет на соответствующем железе.



 
Sergey13 ©   (2002-06-04 10:15) [20]

2ev © (04.06.02 09:55)
Если не секрет, что за задача такая?
Если все это действительно нужно, то вам прямой путь на Oracle ЕЕ(или что то похожее)+ оптоволокно+многозвенка+распределенка+черт знает что. + Это будет стоить уйму зеленых американских президентов на бумажном носителе.
А вы хотели все это сделать на фришном IB? Ха-Ха-Ха. Такие проекты стоят миллионы, и не рублей.


 
Anatoly Podgoretsky ©   (2002-06-04 11:16) [21]

ev © (04.06.02 09:55)
Да это же более 5000 Терабайт в год, тогда насчет нескольких миллионов зеленых тебя обманули, речь идет или л десятка или о сотнях мегабакс и особо производительные каналы


 
Alexandr ©   (2002-06-04 11:26) [22]

:)

жалко тут юмор не собирается...

Пора ветку перенести в "потрепаться"


 
ev ©   (2002-06-04 11:49) [23]

Можно посчитать:
(1.5 млн записей в сутки) * (50 байт ) = 75 Мегабайт
(75 Мегабайт от одного пользователя) * 1000 = 75 Гигабайт
Это в сутки. Если учитывать, что максимума не будет, то винт на 80 ГБ (что сейчас не редкость) будет уходить на 1-2 дня.

Информация хранится долго не будет! Устаревшая информация будет уничтожаться или сбрасываться в архив. Это надо просто для статистики.

Вопросы в слудующем:
1. потянет ли Interbase (если нет, то сколько потянет)
2. насколько по надежности хватит винтов

p.s. Сейчас у меня проект - винт 80 ГБ забивается за 5-6 дней, потом немного удаляется, опять забивается.... и так по циклу.
IBM вылетает за пару месяцев. Сейчас взял Баракуду4 - посмотрим...


 
Alexandr ©   (2002-06-04 11:52) [24]

а ты уверен, что тебе для первичную информацию надо в базе держать?
Может ее обрабатывать отдельно, а в базу только результирующую информацию заносить?

По-моему так правильнее...


 
ev ©   (2002-06-04 13:25) [25]

Статистическая информация актуальна несколько дней, потом стирается. Но если была бы возможность (винты по млн. ТераБайт), то я не стирал даже устаревшую на месяц, а то и на год.

То, что я писал от (04.06.02 11:49) - практический маскимум. Т.к. для разработки этот максимум надо учитывать. А так я надеюсь, что объем будет в 3-5 раз меньше.


 
Delirium ©   (2002-06-04 18:03) [26]

Эта та самая ситуация когда MSSQL однозначно сильнее IB :)


 
ev ©   (2002-06-04 19:48) [27]

А если мне надо unix (надежней, чем MS)?
Oracle - дорого.
Структурную схемку реализации репликации и резервирования (используя IB) я уже нарисовал.
Но остается 2 вопроса:
1. потянет ли Interbase такой поток данных (если нет, то сколько потянет)
2. насколько по надежности хватит винтов


Ну не потянет 1000 пользователей, можно и два компьютера поставить - это допустимо.


 
Delirium ©   (2002-06-04 19:54) [28]

Я бы предложил систему ветвления (с MSSQL так можно):
ставятся промежуточные сервера - один на 50 клиентов (например), это сервера-подписчики у них один сервер-дистрибьютор. Далее все дистрибьюторы являются подписчиками следующего уровня (можно опять по 50 объединить), для них свой дистрибьютор и так до бесконечности.


 
Delirium ©   (2002-06-04 19:58) [29]

Надо только уровни репликации грамотно распределить, дабы каналы не перегружались.


 
ev ©   (2002-06-04 20:16) [30]

Упростим задачу (не так часто статистику собитать).
(50 байт) * (15000 запросов) = 750 КБайт
(750 КБайт) * (1000 пользователей) = 750 МБайт

Это статистика за сутки (для 1000 пользователей).
Ну такое-то потянет сервер?

Мне для отчета надо выяснить максисальную "пропускную способность" сервера. Исходя из этих значений будет уже строится ТЗ.

p.s. как бы ни хотелось 1.5 млн запросов - это не реально.


 
Delirium ©   (2002-06-04 20:23) [31]

Хм, проблема на мой взгяд не в сервере, а в связи - наращивать базу на 1 гигобайт каждый день это не проблема, можно и на 10 наращивать - как прокачать этот гигобайт? Или речь идёт о локалке ?


 
ev ©   (2002-06-04 20:37) [32]

локалка


 
Alexandr ©   (2002-06-05 07:04) [33]

в связи с игнорированием моих последних постов в эту ветку, а прекращаю писать в нее.


 
ev ©   (2002-06-05 07:11) [34]

2 Alexandr © (05.06.02 07:04)
Почему игнорирование? Я же написал, что это статистическая информация.
А статистика не может обрабатываться сразу. Или я не прав?


 
Alexandr ©   (2002-06-05 07:36) [35]

ладно.

Прав - не прав.
Откуда я знаю, я же ТЗ не видел.
Тебе транзакции и прочие прелести Interbase нужны?
Или может MYSQL или даже dbf можно в этом месте обойтись?
А в Interbase хранить уже обработанные данные.
Ну не знаю я твоего ТЗ: я просто варианты предлагаю.
И помни, что бызвыходных ситуаций не бывает. Все можно сделать.

Ненормально это: Большим потоком в реальном времени вгонять данные в SQL сервер. Что-тут не так в проектировании.

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

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

А вообще-то сдается мне, что ты биллинг делаешь для телефонной станции. Угадал?


 
Anatoly Podgoretsky ©   (2002-06-05 07:52) [36]

ev © (04.06.02 19:48)
Начинать надо с постановки техзадания, может и окажется, что Оракл в этом случае просто задаром, или даже просто не потянет.
Одно надо сразу учесть, зависимость физических размеров базы от операционной системы.


 
ev ©   (2002-06-05 08:01) [37]

> Тебе транзакции и прочие прелести Interbase нужны?
Да.

> А вообще-то сдается мне, что ты биллинг делаешь для телефонной
> станции. Угадал?
Нет. Это просто статистическая информация о работе некоторых компьютеров в сети (не троян!).

Задача примерно такая:
В локальной сети есть несколько шлюзов с которых приходят данные. На это шлюзы информация поступаеи из интернет от удаленных клиентов. Удаленных клиентов может быть очень много (в ТЗ числа еще нет, да и не может быть - система должна расширяться).

Все делло в том, что размерность добавляемых данных от 50 до 100 байт. Но количество запросов на добавление данных (от одного клиента) может быть очень много.

Вот, что планирую: на 1000 пользователей приходится 3 сервера:
- на первый происходит запись
- на второй происходит периодическая репликация с первого сервера (нужен для разгрузки первого сервера, с него происходит только чтение)
- третий служит для резерва

И собственно встают вопросы:
1. что реально можно реализовать, что прописать в ТЗ (будут мифические числа, а потом мучайся).
2. Как лучше производить периодическую репликацию с первого сервера на второй?


 
ev ©   (2002-06-05 08:02) [38]

2 модератору

странные у тебя понятия о соответствии веткам и темам форумов :(


 
Alexandr ©   (2002-06-05 08:27) [39]

однако, серьезная вещь...
Опыта тебе маловато, чувствую, для решения такой задачи.

Практика тебе нужна. Так-что пробуй...


 
ev ©   (2002-06-05 08:33) [40]

2 Alexandr © (05.06.02 08:27)
Был бы опыт, тогда не задавал бы здесь вопросы :)



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

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.014 c
14-23782
Almaz
2002-06-07 23:43
2002.07.08
Потерялся файл


4-23831
Web
2002-05-09 23:23
2002.07.08
WinAPI


6-23709
Doom
2002-04-29 14:49
2002.07.08
Переполнение буфера -- это что?


14-23761
SHREK2002
2002-06-02 02:14
2002.07.08
Мужики, нужен перехват вызовов всяких API функций


3-23470
Alex_R
2002-06-14 16:21
2002.07.08
Как увеличить timeout в ADO