Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 19:50   #1
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
Восклицание Сетевая БД

Всем доброго времени суток. И так начну с того, что все мы люди все мы человеки, но судя по вашим ответам я идиот, потому что ваши ответы мне ничем не помогают. Наверное я просто наитупейшая блондинка.

И так начну со своих мыслей. Я решил построить клиент серверную БД, я написал базу данных оочень большую в ней хранятся радиостанции которые играю в том или ином городе. То есть если вы откроете мою БД вы можете увидеть какие радиостанции играю в Москве или допустим во владивостоке.

Дальнейшие действия - я пишу приложение клиент, которое будет отправлять запросы по UDP. Почему UDP? Потому что оно не требует подключения и запрос на изменение БД может отправить сразу несколько пользователей, следовательно изменить.

Остаётся вопрос как отобразить базу у клиента. И тут мне в голову пришла на мой взгляд тупейшая идея, но это единственное что пришло в голову:

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

111111111
111111111
111111111
Москва
111111111
Хит ФМ
111111111
12.12.1994
111111111
111111111
111111111
Ростов
111111111
Энерджи
111111111
12.12.1994
111111111

И клиент это всё получает и заносит в базу, допустим если 3 строки пропущено, то в базе заполнять следующую строку, если одна, то писать в той же.

Как я до этого дошёл? Я задал себе вопрос как можно по сети передать содержимое базы, НЕ ФАЙЛОМ, а именно что в ней лежит на данный момент. Но чувствую таким методом я до ночи буду принимать эту базу данных. Если можно как-то объект весь отправить, то расскажите пожалуйста буду очень признателен.

Так вот я идиот обращаюсь к Вам великим умам, как же мне организовать клиент серверную БД. Может есть уже специальные БД, допустим как ДЕНВЕР, только с некими изменениями, может мне не нужно писать БД сервер, а достаточно подключиться к БД на сервере, которая будет сразу нескольким пользователям отвечать.

Я много читал и находил такие речи что-то типа - "используй SQL" или ПортайджСКЛ, ребят объясните я вас умоляю что это как с этим работать?

Как-то так, описал далеко не всё... Но я думаю смысл всем ясен.
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 10.12.2013, 21:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему UDP? Потому что оно не требует подключения и запрос на изменение БД может отправить сразу несколько пользователей, следовательно изменить.
Опрометчиво. Что будет если запрос на сервере отработает ошибочно?
Цитата:
Так вот я отправляю допустим сообщение серверу - "дай базу" и сервер отвечает примерно вот так:
Сервер в свободном доступе по IP? Если да то возможно стоит не делать прослойку с запросами а напрямую взаимодействовать через провайдер СУБД с базой. Это конечно немного ограничивает программу, но проще реализовать. Особенно если клиент будет только вызывать вьюшки или tabled-функции, возвращающие таблицу и функции вписывающие данные в базу. Эта технология по безопасности не уступает остальным если правильно БД настроить.
Если же нет - рекомендую не UDP а HTTP. Это простой текстовый протокол не требующий предварительного соединения, однако по нему легко отвечать серверу и принимать параметры.

Для начала опиши что за сервер и какая СУБД.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2013, 22:09   #3
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Опрометчиво. Что будет если запрос на сервере отработает ошибочно?

Сервер в свободном доступе по IP? Если да то возможно стоит не делать прослойку с запросами а напрямую взаимодействовать через провайдер СУБД с базой. Это конечно немного ограничивает программу, но проще реализовать. Особенно если клиент будет только вызывать вьюшки или tabled-функции, возвращающие таблицу и функции вписывающие данные в базу. Эта технология по безопасности не уступает остальным если правильно БД настроить.
Если же нет - рекомендую не UDP а HTTP. Это простой текстовый протокол не требующий предварительного соединения, однако по нему легко отвечать серверу и принимать параметры.

Для начала опиши что за сервер и какая СУБД.
В том то и проблема не знаю, какой сервер и какую СУБД выбрать, дай пожалуйста наводку с чего начать, а дальше я поплыву с помощью великого гугла. Проще рыть то что знаешь... А пока я только тыкаю пальцев в небо....
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 10.12.2013, 22:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно взять новенький MS SQL. Там есть возможность писать функции, возвращающие таблицы. Делается это примерно так:
Код:
create FUNCTION [dbo].[СписокЛюдей] (@matname nvarchar(max))
RETURNS TABLE
AS
RETURN
(
  Select ID,Naim as Наименование from Люди where (Naim like @matname)or(@matname='')
)
Соответственно вызов:
Код:
With AdoQuery do begin
 Sql.Text:='Select from [СписокЛюдей]('+QuotedStr('%ушкин')+')';
 Open;
end;
Заставит СУБД выполнить функцию и получить от нее таблицу Пушкиных и Кукушкиных и бог знает еше каких ушкиных.
При этом сам запрос клиенту не известен, что обеспечивает защиту.
Точно так же можно делать и INSERT запросы, но описывать их процедурой а не функцией.

А вообще тебе стоит почитать о разных СУБД и сравнить их возможности.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2013, 00:35   #5
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно взять новенький MS SQL. Там есть возможность писать функции, возвращающие таблицы. Делается это примерно так:
Код:
create FUNCTION [dbo].[СписокЛюдей] (@matname nvarchar(max))
RETURNS TABLE
AS
RETURN
(
  Select ID,Naim as Наименование from Люди where (Naim like @matname)or(@matname='')
)
Соответственно вызов:
Код:
With AdoQuery do begin
 Sql.Text:='Select from [СписокЛюдей]('+QuotedStr('%ушкин')+')';
 Open;
end;
Заставит СУБД выполнить функцию и получить от нее таблицу Пушкиных и Кукушкиных и бог знает еше каких ушкиных.
При этом сам запрос клиенту не известен, что обеспечивает защиту.
Точно так же можно делать и INSERT запросы, но описывать их процедурой а не функцией.

А вообще тебе стоит почитать о разных СУБД и сравнить их возможности.
То есть я беру сервер (в моём случае виртуальный), ставлю туда тот самый MS SQL и как-то к нему конекчусь? То есть приложение сервер писать не нужно?
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 11.12.2013, 00:49   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
То есть приложение сервер писать не нужно?
Нужно или нет выбирать исходя из мозгового штурма. Посоветовавшись с директором, начальником ИТ отдела и т.д. Это выбор а не обязательность.
Если твоя задача не преследует каких-то особых целей, для который ну полюбому клиент-серверное приложение писать нужно то просто настроить сервер (хорошенечко и грамотно) и дать ему выход в тырнет, чтоб любой клиент имел возможность к нему присосаться (я имею ввиду твою клиентскую программу) напрямую к СУБД. Так проще. Опять таки повторюсь: Это решение должно быть осознанным согласно задач, поставленных на кону.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2013, 13:03   #7
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нужно или нет выбирать исходя из мозгового штурма. Посоветовавшись с директором, начальником ИТ отдела и т.д. Это выбор а не обязательность.
Если твоя задача не преследует каких-то особых целей, для который ну полюбому клиент-серверное приложение писать нужно то просто настроить сервер (хорошенечко и грамотно) и дать ему выход в тырнет, чтоб любой клиент имел возможность к нему присосаться (я имею ввиду твою клиентскую программу) напрямую к СУБД. Так проще. Опять таки повторюсь: Это решение должно быть осознанным согласно задач, поставленных на кону.
Спасибо тебе огромное! Буду пытаться)) всё равно научиться этому того стоит.
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 11.12.2013, 13:07   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Учись. Студент )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра сетевая Chudyak C/C++ Сетевое программирование 2 28.09.2013 16:48
Сетевая Ckawest Компьютерное железо 13 12.11.2011 17:12
Сетевая модель БД X@OC Microsoft Office Access 1 22.05.2011 20:41
Сетевая таблица JohnyHolms Фриланс 3 12.12.2010 02:10
Сетевая плата Syltan Компьютерное железо 0 05.12.2009 12:34