Главная страница
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)
Был бы опыт, тогда не задавал бы здесь вопросы :)


 
Alexandr ©   (2002-06-05 08:44) [41]

понимаешь, задача очень большая и очень серьезная.

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

Так что вот.


 
Delirium ©   (2002-06-05 12:28) [42]

Если разговор о локалке - многое упрощается: 1000 клиентв на один сервер это пожалуй много, но на 2-3 это вполне приемлемо.
Итак получаем 3 сервера соединённых транзакционной репликацией,
На каждом RAID-5 из 8 дисков по 40Gb каждый, всего 280Gb. Сервера 2-х (4-х) процессорные, памяти 1.5Gb - такая конфигурация, IMHO, с поставленной задачей справится с запасом.


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

Поставленную задачу я уж решил, но до воплощения ее в реальности просто хотел узнать мнения мастеров....

2 Delirium © (05.06.02 12:28)
Почему 1000 - много? Есль объем передаваемых данных снизить то вроде нормально получается (расчет номер 2 - писал выше).



 
Delirium ©   (2002-06-05 14:08) [44]

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


 
ev ©   (2002-06-05 14:20) [45]

2 Delirium © (05.06.02 14:08)
> можно образовать как бы кластер
идейку можно, или ссылочку...


 
Lord Warlock ©   (2002-06-05 14:30) [46]


> Delirium © (05.06.02 14:08)


кстати про трехзвенку...

для писания дельфи подойдет, на для работы нужон один ДЛЛ (для MIDAS), который в поставке Д работает только на локальной машине, в хелпе пишут, "если хотите трехзвенку по сети, платите денежку", насчет Аппсерверов других типов я не проверял, может таже история?


 
Delirium ©   (2002-06-05 14:32) [47]

Вообще говоря кластер это не совсем то, почему я и сказал "как бы кластер", вот ссылочка про MSSQL http://ivn.newmail.ru/CentCluster.htm


 
Delirium ©   (2002-06-05 14:37) [48]

> Lord Warlock

"кстати про трехзвенку..." - я, как ни странно, в Delphi MIDAS не пользую - пишу руками, под DCOM.

> ev

Вообще тебе нужен http://msdn.microsoft.com/library/default.asp?url=/library/en-us/architec/8_ar_cs_99et.asp


 
ev ©   (2002-06-05 14:51) [49]

Я понимаю, что для данной задачи MS лучще подходит, чем IB.
Но как по надежности MS (это ведь не юникс)?


 
Lord Warlock ©   (2002-06-05 14:56) [50]


> пишу руками, под DCOM.


ну сам понимаешь, под midas проще все... если бы была халявная библиотека, все бы писали


 
Delirium ©   (2002-06-05 15:06) [51]

> ev
Под unix - Orace, а под NT - MSSQL это негласное правило :)

> Lord Warlock
"ну сам понимаешь, под midas проще все..." - чем-же проще?
Ведь при самостоятельной разработке, я сам себе хозяин: данные передаю и принимаю в RecordSet-ах, могу придумывать собственные форматы и интерфейсы, могу контролировать нагрузку на сеть и т.п.


 
Lord Warlock ©   (2002-06-05 15:19) [52]


> Delirium © (05.06.02 15:06)


Допустим, не надо тебе всех этих наворотов, устраивает все по умолчанию, зачем мозги коптить лишний раз?...


 
Delirium ©   (2002-06-05 15:29) [53]

Хм, ты когда-нибудь COM-сервер в Delphi создавал? Там нет никакой головной боли, всё делается в мастере и, IMHO, действий меньше чем при создании элементарного MIDAS-сервера.


 
ev ©   (2002-06-05 17:26) [54]

Так как по надежности Windows2000 Server?
NT4 - достаточно надежен (сам проверял).
А вот с Windows2000 Server - дело обстоит хуже. Его ведь надо постоянно перезагружать, да и виснет бывает. :(


 
Игорь Шевченко ©   (2002-06-05 17:31) [55]

ev © (05.06.02 17:26)


>А вот с Windows2000 Server - дело обстоит хуже.

Это что-то с настройками сервера или с левым железом. Или с руками.


 
Anatoly Podgoretsky ©   (2002-06-05 17:35) [56]

Lord Warlock © (05.06.02 14:30)
И еще прочитай пункт про разработчика и лицензию


 
Delirium ©   (2002-06-05 17:37) [57]

> ev

"А вот с Windows2000 Server - дело обстоит хуже. Его ведь надо постоянно перезагружать, да и виснет бывает. :(" - нууу, это не правда, у нас сервера перезагружаются для профилактики раз в 2 недели, но бывали случаи когда машина и по пол-года работала без перезагрузки - суди сам.


 
Anatoly Podgoretsky ©   (2002-06-05 17:52) [58]

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


 
NailS ©   (2002-06-05 18:24) [59]

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

В каком виде приходят данные?

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


 
Delirium ©   (2002-06-05 18:29) [60]

> Anatoly Podgoretsky

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


 
ev ©   (2002-06-05 18:59) [61]

> Игорь Шевченко © (05.06.02 17:31)
> Delirium © (05.06.02 17:37)
Судите сами, у меня есть два сервера W2K. Один (с маленькой загрузкой) работает нормально. А вот второй (про него я писал - где 80ГБ за несколько дней забивается) - приходится перезагружать раз в несколько дней (1-3).

> Anatoly Podgoretsky © (05.06.02 17:52)
Дело в том, что все версии виндов плохо освобождает память :(
И через некоторое всремя ее становится все меньше и меньше.
В NT4 - это довольно длительный срок, а вот W2K - нет. :(
Опять повторюсь - это при большой нагрузке!


 
Delirium ©   (2002-06-05 19:08) [62]

"приходится перезагружать раз в несколько дней" - дряхлый какой-то сервачёк, может он на бытовой материнской плате собран? :))))))


 
ev ©   (2002-06-05 19:50) [63]

> Delirium © (05.06.02 19:08)
> дряхлый какой-то сервачёк, может он на бытовой
> материнской плате собран

а ты на чем посоветуешь?


 
Alexandr ©   (2002-06-06 06:45) [64]

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

Разводит он вас по-моему просто, парни.
Прикалывается он так.


 
Dok_3D ©   (2002-06-06 07:08) [65]

2Alexandr
>> ev говорит, что создал уже такую распределенную систему, но
>> при этом не знает про надежность серверов


Абсолютно согласен.
Я уже два дня читаю эту ветку и у меня уже где-то на середине устоялось такое же мнение.


 
ev ©   (2002-06-06 08:53) [66]

> Alexandr © (06.06.02 06:45)
> ev говорит, что создал уже такую распределенную систему
Читай внимательнее! Не СОЗДАЛ, а пока только РАЗРАБОТАЛ (или смоделировал - кому как удобней). Это разные вещи! Разработанную систему еще надо воплотить в реальность.

> верит всякому бреду: вроде освобождения памяти...
Проверено на практике! Повторяю, это заметно только при очень больших нагрузках!

В качестве аппаратной платформы, планирую использовать IBM xSeries.

Но ведь всегджа молезно узнать мнения других людей!



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

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

Наверх




Память: 0.66 MB
Время: 0.014 c
3-23481
Sniffer
2002-06-16 12:16
2002.07.08
Как узнать, существует ли Таблица?


4-23825
MisterBin
2002-05-07 19:55
2002.07.08
Наверное сложный вопрос...


3-23509
3asys
2002-06-16 23:33
2002.07.08
Кодировка при использовании ADO


1-23596
chak
2002-06-25 11:49
2002.07.08
Как устранить эту ошибку?


3-23443
Dark Programmer
2002-06-14 11:36
2002.07.08
Как получить доступ к записи в ДБГриде?