Форум: "Потрепаться";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
Внизраспределенная БД Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.007 c