LAN DB without server ?!

13 отговора 362 прегледа
#1

LAN DB without server ?!

Имам програма, която използва бд "Paradox" на сървър. Оказа се, че този метод не е удачен (да има клиенти, които да работят със сървъра). Трябва ми начин, по който всяка програма да работи самостоятелно. Напр. вкл. е само моят компот. -). Въвеждам аз данни... включвам другия компот и в момента в който те се намерят в мрежата, втория да си updat-не данните от моя. И така нататък с третия и четвъртия комп. Дайте ми някакви насоки или метод.

Отговор
в отговор на Gemar #2

Re: LAN DB without server ?!

Нещо не схванах... В момента в който някое копие от програмата тръгва, тя се връзва към базата той си взима всички актуални данни в нея... Само трябва да знае коя е базата... За това си има метод - например опъваш един порт и предаваш с TCP/IP местоположението на базата на всяко следващо копие...

чети и дишай по-леко
Отговор
в отговор на Gemar #3

Re: LAN DB without server ?!

Ами виж сега ако правилно съм те разбрал искаш всеки клиент да си работи с локална база данни и да се синхронизират по време на пускане на програмата.

Така за локална база може да се ползва BDE което мене определено не ме кефи, или някой native компонент за отваряне на db, което ще ти спести всички главоболия със драйверите.
Предаването на информация може също да стане по няколко начина.

1. TCP/IP слагаш си един порт през който да се свързват програмите и си правиш протокол за комуникация.
Тук има един мааалък проблем. Трябва да знаеш IP адресите на машините. Решението е или да си ги имаш записани в една табличка и да ги проверяваш подред или да сканираш областа за отворен порт.

2. Използване на Named Pipes мисля че ги има само в NT но не съм, сигурен трябва да провериш в WinApi-то. За справка CreateNamedPipe, CallNamedPipe

За самото обновяване ще ти трябва дата на последното обновяване и идентификатори на записите. Трябва много добре да ги измислиш нещата иначе може да се получи голяма боза.

AquilaX

____________
умният знае кога да говори, мъдрият знае кога да мълчи
Отговор
в отговор на Gemar #4

Re: LAN DB without server ?! Няколко ????

Като идея е добре но е трудно за изпълнение.

Възникват няколко въпроса при тази схема на работа.
1. Предполагаме, че на всички компютри има една и съща база.
2. Пускаме РС1 то променя базата.
3. Пускаме РС2 то взема от РС1 базата и продължава работа. В същото време и РС1 работи. Вероятно те ще си синхронизират данните?!
4. Пускаме РС3 то от къде ще вземе данни?????
5. Ако случайно РС1 зависне по време на работа но е променило базата как РСn ще разбере това??!


Според мен е най добре да заплюеш една от машините за сървър и да нямаш проблеми. Казваш ако тя не е пусната то с програмата не може да се работи и толкова. Какъв е проблема?

Успех.

Никога не е късно човек да се провали!
Отговор
в отговор на Gemar #5

Re: LAN DB without server ?!

Zashto ne slogish DB server na vseki ot komputrite i s replikaciya da se sinhronizirat dannite ?

Отговор
в отговор на lvo #6

Re: LAN DB without server ?!

Развий ми малко тая мисъл!

Отговор
в отговор на Gemar #7

Re: LAN DB without server ?!

Репликатор е сървис който се грижи във фонов режим да синхронизира няколко копия от една база данни. Демек ти си пишеш в локална база данни, която си става еднаква на всички компютри. Има няколко забавни проблема - например един си пише в един запис, друг в същия и в крайна сметка става малко шашаво... Репликатор има вграден в повечето SQL сървъри - за Delphi дебелопери е удобен InterBase, но за Paradox не съм светнат...
Интересно е друго - какъв е този случай в който да не ти отърва клиент/сървър схемата. Един вариант е да не искаш да share-ваш нищо в сървъра - тогава удобен е пак InterBase, който работи и без share - само подаваш IP+път без да оголваш нищо... Та ако кажеш къде те сърби може и да успеем да те почешем...

чети и дишай по-леко
Отговор
в отговор на Gemar #8

Re: LAN DB without server ?!

Подобно нещо е изключително НЕВЪЗМОЖНО да се направи - или ако е възможно - то с изключително много уговорки - т.е. с лимитации на самата програма - което е само по себе си е глупаво - щото знаеш ли какво ще му хрумне на клиента утре- като види че това става - ще поиска и друго и трето - и сам си го вкарваш - авто-гола - де.
Мисля, че сам трябва да си наясно, защо подобно нещо е неизпълнимо - колегите дадоха доста обеснения по въпроса - аз няма да ги повтарям. Проблема не може да се реши без server - по една изключително елементарна причина - как ще опишеш кой къде да дърси нещата - или всеки ще търси навсякъде - доста интересно става при използване на някои познати OS-ове - започващи с Win'9 - темата за мрежата и таймаутите няма да я разглеждам.
При всички случаи решението на проблема включва DB или Application server - като за първия съществуват готови методи за репликация - само дето не мога да се сетя какво ще репликираш - след като имаш LAN - единствената възможност е когато имаш 2 или повече мрежи - които работят независимо една от друга off-line - ама тогава проблема става много по дебел.

Аз съм написал нещо което странно оприличавам на проблема ти - макар и не съвсем - представи си складова програма която дава възможност да се въвеждат документи от различни (далечни ) места - примерно офис в Пловдив, магазин София, магазин Бургас, Варна и т.н.т. - но това е случай (не частен) при който машините е невъзможна (трудно осъществима) on-line връзка. Програмата е писана за Paradox - и прекрасно (учудващо за много хора) работи в локална мрежа - предполагам твоите проблеми са частни - т.е. доказал съм че BDE+Paradox прекрасно може да се използва за малки проекти - и то безпроблемно. В момента е портвам за Interbase и евентуално MSSQL/Oracle, с особенно големи трудности - и те не са от BDE -то- ами от новите компоненти които ползвам - за пореден път се убеждавам, че това което е стандартно (DB) от Борланд е с прекрасна архитектура, и работи безпроблемно.
Така, че приятелю ако си решил да правиш off-line връзки - за LAN мрежа - просто не мога да разбера смисъла - та нали мрежата е точно за това - да свързва постоянно компютрите - остава да си нарочиш един за server и да не го спираш - не е толкова сложно.

Ако обаче целиш друго - мога да ти дам някои насоки - ама ми трябва повече информация.

---
Е т'ва е живот!

Редактирано от PhantomAS на

Отговор
в отговор на Gemar #9

Destributed Systems

Twa deto go iskash bi trqbwalo da se nareche razpredelena baza danni. Ideqta za razpredelenite sistemi me zanimawa otdawna i twoq problem mi se widq dostatychno interesen che da spodelq nqkolko wijdaniq:
1. Protokola kojto trqbwa da polzwash e UDP pri nego mojesh friwolno da si broadcastwash(w palniq smisal na dumata) paketi, kato wseki kojto iska shte chue i ewenutalno otgowori.
2. Za da mojesh da poodarjash sinhronizaciqta mejdu lokalnite kopiq shte ti trqbwa Jurnalizaciq na tranzakciite, kato protokola trqbwa da iziskwa sinhronizaciq na jornalite ot drugite wklucheni mashini ot dadena data natatyk. Sled towa po jornala se wyzstanowqwa sastoqnieto na bd - to koeto e izpusnato.
3. Towa predpolaga: ednosigmenten LAN ili Replikatori na paketite mejdu segmentite. Sobstwen protokol i to dobre planiran. Nalichie na ogromno diskowo prostranstwo (za jurnala).

Obshto wzeto ne e newazmojno ama pochti nikoga ne e nalojitelno. Az pone ne moga da se setq kade se nalaga.
btw sashtestwuwa problem che ako PCX spre drugite prodaljat da rabotqt i izmenqt seriozno bd-to sled koeto sprat i se pusne samo PCX to to nqma da moje da drapne jurnala ot nikogo i rabotata sux mnogo qko. kato sreshtu toq problem ne moje da se naprawi drugo oswen saobshtenie na ekrana. Za da si siguren che si izbegnal taq situaciq i wariqntite i trqbwa da se sledi dali bazata danni e "spirana" t.e. nikoj komputer ne moje da potwardi che toj pazi poslednata tranzakciq.

Twa e. Pomisli i izberi drug wariqnt :))

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на PhantomAS #10

Re: LAN DB without server ?!

InterBase Е на Borland, и работи перфектно с Delphi... Ако знаеш как да го ползваш, разбира се...

чети и дишай по-леко
Отговор
в отговор на Pechenia #11

Re: LAN DB without server ?!

Wsqka programa koqto razchita na neshto poweche ot sistemni DLL-li se broi za samnitelno stabilna. Towa e pomoqta sistema za ocenka na nadejnostta na programnoto osigurqwane :))

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на Pechenia #12

Re: LAN DB without server ?! ????????

Ами знам как да го ползвам - ама имам един проблем - всъщност съм намерил решение - но не ми харесва. Проблема е в използваните компоненти.

Ето и описанието - ако можеш помогни с нещо

Имам таблица - с primary кey - autoincrement - увеличава се автоматично с тригер - и се записва в таблицата. Имам и няколко полета с default стойност - повечето са integer - но няма значение(между другото как да дефинирам default стойност за BLOB?) .
Ситуацията е следната - имаме прост грид - който извежда информацията от таблицата - като може да се въвежда нова информация(т.е. нов запис). Проблем1 - като дам нов запис - primary кey -а не се обновява - и по-подразбиране е required.
Проблем2 - полетата с default value - не се показват с техните стойности - т.е. празни са ????
Проблем3 - при непипане на полета с default value - стойноста им се update -ва с null - което е супер глупаво - в транзакцията обновява всички полета - не само променените !!!!

Та ако имаш отговор на някой от посочените проблеми - и отговора може да се реши елементарно с ВГРАДЕНИТЕ в D6 компоненти - драсни някой ред.
Използването на 3-party не е желателно - заради съвместимост.

Реално ако си виждал EMS Desktop - a за Interbase - там като си отвориш таблица - можеш да въвеждаш информация - искам да докарам моя грид да работи точно по този начин - там autoinc primary key - a не се обновява - ама не ми го иска, след refresh се обновава, а пък полетата с default стойност - си излизат без проблем при нов запис!

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #13

Re: LAN DB without server ?!

[линк] има интересни мнения по темата.
Пак някъде из Кралството бях чел преди около две години интересна статия по темата, но сега нямам време да я потърся

Отговор
в отговор на SDR #14

Re: Destributed Systems

Моя Client/Server си работи много добре, обаче човека много трудно свиква с промените (леле, колко беше трудно от Win 3.11 na Win98 и Word 5 на Office 2000 ). Та той имаше същата програма, но под DOS, която прави това, за което питам. Иначе проблема му е като ходи Събота и Неделя в офиса да не пуска въпросния сървър и неговия комп., а само неговия... шантава работа!
Благодаря за всички мнения...найстина ми спестихте много главоболия. С DCOM става идеално!

Отговор