MS SQL Server - tani serwer

0

Cześć!

Jestem nowy na forum. Jeżeli temat nie nadaje się do tej grupy to prośba o jego przeniesienie.
Od ponad roku po pracy uczę się programowania. Niestety nie mam żadnego znajomego, który mógłby mi doradzić w pewnych kwestiach związanych z pisaniem aplikacji.

Zrobiłem sobie kursy na Udemy:
C#
WPF
Xamarin Forms
MySql
MS SQL Server
Entity Framework

W tej chwili chciałbym napisach aplikacje, która umożliwiłaby mi połączenie kilku technologi (C#, WPF, MS SQL Server i Entity Framework). Chciałbym utrwalić sobie zdobytą wiedzę. Program tak naprawdę ma być taka małą baza danych (lista zadań do zrobienia). Pracuję w budownictwie wiec wygląda to tak, ze kilka osoba pracuje nad jednym projektem. Każdy z użytkowników mógłby dodać nowy rekord, w którym byłby tytuł, opis zdarzenia, status i kogo z zespołu dotyczy rekord(zdarzenie). Najprościej ujmując użytkownik A, dodaje nowy rekord i zaznacza kogo dotyczy zdarzenie np. użytkownika B. Użytkownik B synchronizuje się z baza danych, zauważa że zostało dodane nowe zdarzenie i rozwiązuje je i zmienia status na Zamknięte, albo dodaje komentarz do rekordu, że np. nie jest w stanie rozwiązać problemu. Później narada burza mózgów itd...

W pracy jak się pewnie domyślacie mamy dysk sieciowy na którym są wszystkie projekty i do którego maja dostęp wszyscy pracownicy. Z tego co zrozumiałem żeby kilku użytkowniku mogło jednoczenie korzystać z jednej bazy danych musi być zainstalowany MS SQL Server, który w pewnym sensie pewni role bufora miedzy użytkownikiem, a baza danych i ma za zadanie min. nie dopuścić do zablokowania całej bazy danych przez jednego użytkownika. Z tego względu, że nie chcę instalować SQL Servera express w pracy, bo szef najprawdopodobniej się nie zgodzi to szukam innego rozwiązania.

Pierwsze rozwiązanie, chociaż wydaje mi się bardzo amatorskie to plik tekstowy, w którym zapisane byłyby wszystkie rekordy. Za każdym razem gdy użytkownik chciałby synchronizować się z takim plikiem tekstowym to w pierwszej kolejności aplikacja sprawdzałaby czy plik nie jest otworzony przez innego użytkownika. Jeżeli byłby otworzony to aplikacja czekałaby maksymalnie 5 s. Jeżeli w tym czasie plik by się zwolnił aplikacja by się synchronizowała i od razu zamykała plik tekstowy. Jeżeli po 5 s nadal nie byłoby możliwości otworzenia pliku to aplikacja wyświetlałaby komunikat np że plik jest zajęty przez innego użytkownika proszę poczekać...

Drugie rozwiązanie to jakiś tani sensowny serwer MS SQL Server dostępny do zakupu w internecie. Serwisy, które wymagają podania karty kredytowej odpadają Nie chce się narażać na koszty, które z tego co się zorientowałem są bardzo duże. Innymi słowy Azure i Amazon odpadają.
I tutaj moje najważniejsze pytanie. Czy w internecie są dostępne do zakupu serwery z MS SQL Server z sensownymi cenami? Przecież chce zrobi amatorska aplikacje, której baza danych będzie zajmowała maksymalnie 5 MB xD Serwer musi mieć możliwość dostępu z zewnątrz. Czyli instaluję aplikacje na swoim komputerze i łącze się z serwerm gdzieś tam na świecie. Dodałem sprostowanie, bo zauważyłem, że pojawiają się serwery (jeżeli dobrze zrozumiałem), które nie umożliwiają ze względu bezpieczeństwa na dostęp do bazy danych z zewnątrz.

Będę wdzięczny za pomoc oraz za naprowadzenie jak rozwiązać mój problem.

2

Nie bardzo rozumiem czemu nie możesz zainstalować w pracy SQL Servera express, w sensie w ogóle nic nie chcesz instalować? Jeśli tak to polecam skorzystać z innej bazy danych: SQLite. Nic nie trzeba instalować, plik bazy danych może być na dysku sieciowym, ładnie współpracuje z Entity Frameworkiem, w pełni darmowe i nie trzeba babrać się z równoległą edycja pliku.

A jak koniecznie chcesz MS SQL Server to w ramach webio https://www.webio.pl/hosting-asp-net/porownanie-planow-hostingowych.html masz 250MB bazę MS SQL dostępną za 110zł/netto na rok.

0
neves napisał(a):

Nie bardzo rozumiem czemu nie możesz zainstalować w pracy SQL Servera express, w sensie w ogóle nic nie chcesz instalować?

Nie chce isntalować bo na moja obecna wiedze musialbym z jednego komputera zrobic serwer... Jestem projektantem nie praogramista...
Ogolnie moge cos takiego zrobic ale w ostatecznosci

Jeśli tak to polecam skorzystać z innej bazy danych: SQLite. Nic nie trzeba instalować, plik bazy danych może być na dysku sieciowym, ładnie współpracuje z >Entity Frameworkiem, w pełni darmowe i nie trzeba babrać się z równoległą edycja pliku.

Czy dobrze rozumiem. Kilka osob bedzie moglo pracować rownolegle na jednym pliku?

A jak koniecznie chcesz MS SQL Server to w ramach webio https://www.webio.pl/hosting-asp-net/porownanie-planow-hostingowych.html masz 250MB bazę MS >SQL dostępną za 110zł/netto na rok.

Dzięki wielkie!!!

0

nie chcę instalować SQL Servera express w pracy, bo szef najprawdopodobniej się nie zgodzi

A czemu? Czegoś nie rozumiem - nie chcesz/nie masz zgody na wersję darmową, ale za to możesz skorzystać z usługi trzymanej gdzieś w chmurze i płatnej?
Pamiętaj, że tego SQL'a nie musisz instalować na jakimś Waszym głównym serwerze (może tego się ludzie z firmy obawiają, że coś popsujesz), Możesz dostawić jakikolwiek komputer (zwykły desktop z Windowsem 7 da radę na Wasze potrzeby) i na nim zainstalować sobie tego SQL'a. Na to chyba dostaniesz zgodę, co? ;)

Po drugie - czemu chcesz Ms a nie Postgresa? Microsoftowy posiada pewne ograniczenia w wersji darmowej (aczkolwiek podejrzewam, że Ciebie one nie będą boleć, nie ta skala aplikacji), za to Postgres w opinii wielu osób jest najlepszym dostępnym rozwiązaniem, a do tego jest całkowicie darmowy. Ponadto można go postawić na linuksie, czyli nawet tego Win7 z poprzedniego akapitu nie potrzebujesz.

W temacie dostępu z zewnątrz - jeśli postawisz to u siebie, to można przekierować porty i się wpinać bezpośrednio, ale nie polecam takiego rozwiązania. Lepiej jest to jakoś "obudować" - wystawić na zewnątrz jakiś webservice czy inne API do obsługi operacji na bazie, ale nie wystawiaj SQL na świat, bo może to się niemiło skończyć.

Ostatnia rzecz - plik tekstowy na dysku sieciowym to najgorsza z możliwych opcji. Jak już chcesz iść w takie półśrodki, to wrzuć na ten udział sieciowy nie plik .txt ale basę SQLite. Jeśli tematu nie kojarzysz, to poszukaj: ogólnie rzecz biorąc to fajna sprawa. Masz dużą część funkcjonalności "prawdziwego" SQL, ale niczego nie musisz instalować. Masz bibliotekę do obsługi SQLite, która po prostu operuje bezpośrednio na tym pliku. Na początek powinno dać radę. A jak zrobisz jakiś odpowiedni stopień abstrakcji bazy od logiki, to późniejsza zamiana tego SQLite na coś innego (czy to Ms, czy Postgres) przejdzie praktycznie nieodczuwalnie.

EDIT

Nie chce isntalować bo na moja obecna wiedze musialbym z jednego komputera zrobic serwer

a nie macie jakiegoś kompa, który i tak chodzi cały czas - czy to jakiś serwer plików, czy może komp do obsługi monitoringu? Obecnie można nawet na urządzeniach typu NAS zainstalować SQL - chociażby pierwszy z brzegu link odnośnie instalacji Microsoft SQL na urządzeniu QNAP - https://makeittogether.pl/microsoft-sql-server-na-qnap-bez-windows/

0

Od biedy pewnie nawet jakiś zwykły Access by tu nawet poleciał - nie wiem tylko jak C# z tym gada :| Dla testu czy to się w ogóle sprawdzi (w sensie cała ta aplikacja i pomysł) to chyba najłatwiejsze rozwiązanie.

0
cerrato napisał(a):

nie chcę instalować SQL Servera express w pracy, bo szef najprawdopodobniej się nie zgodzi

A czemu? Czegoś nie rozumiem - nie chcesz/nie masz zgody na wersję darmową, ale za to możesz skorzystać z usługi trzymanej gdzieś w chmurze i płatnej?
Pamiętaj, że tego SQL'a nie musisz instalować na jakimś Waszym głównym serwerze (może tego się ludzie z firmy obawiają, że coś popsujesz), Możesz dostawić jakikolwiek komputer (zwykły desktop z Windowsem 7 da radę na Wasze potrzeby) i na nim zainstalować sobie tego SQL'a. Na to chyba dostaniesz zgodę, co? ;)

Porozmawiam z chlopakiem od IT moze zaisntaluje Sql expreess na moim kompuerze.
Bardziej jestem skłonny zapłacic za serwer jezeli bedzie w sensownej cenie. Mozliwe, że na jednej aplikacji sie nie skończy.
Chcialbym zeby moje aplikacje mialby mozliwosci zapisywania danych wlasnie gdzies w chmurze niz na samym urzadzeniu. Takie roziwazanie daje wiecej mozliwosci.

Po drugie - czemu chcesz Ms a nie Postgresa? Microsoftowy posiada pewne ograniczenia w wersji darmowej (aczkolwiek podejrzewam, że Ciebie one nie będą boleć, nie ta skala aplikacji), za to Postgres w opinii wielu osób jest najlepszym dostępnym rozwiązaniem, a do tego jest całkowicie darmowy. Ponadto można go postawić na linuksie, czyli nawet tego Win7 z poprzedniego akapitu nie potrzebujesz.

Pierwsze slysze o Postgresie :). Czy bardzo rozni sie MS SQL czy znow bede musial poswiecic pare godzi na nauke takiego oprogramowania? xD
Normalnie niekonczaca sie opowiesc....

W temacie dostępu z zewnątrz - jeśli postawisz to u siebie, to można przekierować porty i się wpinać bezpośrednio, ale nie polecam takiego rozwiązania. Lepiej jest to jakoś "obudować" - wystawić na zewnątrz jakiś webservice czy inne API do obsługi operacji na bazie, ale nie wystawiaj SQL na świat, bo może to się niemiło skończyć.

Czemu nie mozna wystawiac SQL'a na swiat? Do tej pory myslalem ze do tego glownie sluzy.
Chcesz powiedziec ze sql serwer stosuje sie bardziej w sieci lokalnej niz w internecie, bo to jest niebezpieczne?
W takim razie jak dzialaja takie aplikacje jak np messenger, medicover itd? W jaki sposob sa zapisywane dane na serwerze? Bez uzycia np sql serwera?

Ostatnia rzecz - plik tekstowy na dysku sieciowym to najgorsza z możliwych opcji. Jak już chcesz iść w takie półśrodki, to wrzuć na ten udział sieciowy nie plik .txt ale basę SQLite. Jeśli tematu nie kojarzysz, to poszukaj: ogólnie rzecz biorąc to fajna sprawa. Masz dużą część funkcjonalności "prawdziwego" SQL, ale niczego nie musisz instalować. Masz bibliotekę do obsługi SQLite, która po prostu operuje bezpośrednio na tym pliku. Na początek powinno dać radę. A jak zrobisz jakiś odpowiedni stopień abstrakcji bazy od logiki, to późniejsza zamiana tego SQLite na coś innego (czy to Ms, czy Postgres) przejdzie praktycznie nieodczuwalnie.

Kilku uzytkownikow bedzie moglo pracowac na jednym pliku jednoczesnie?
Jezeli kilka osob bedzie moglo pracowac na jednym pliku to idealne rozwiazanie.
Stawiam baze danych na dysku sieciowym kazdy sie do niej z aplikacja podlacza pobiera i zapiusje dane.

EDIT

Nie chce isntalować bo na moja obecna wiedze musialbym z jednego komputera zrobic serwer

a nie macie jakiegoś kompa, który i tak chodzi cały czas - czy to jakiś serwer plików, czy może komp do obsługi monitoringu? Obecnie można nawet na urządzeniach typu NAS zainstalować SQL - chociażby pierwszy z brzegu link odnośnie instalacji Microsoft SQL na urządzeniu QNAP - https://makeittogether.pl/microsoft-sql-server-na-qnap-bez-windows/

Jakis sie na pewno znajdzie. Ale powtorze to jezcze raz wolalbym miec swoj wlasne wykupiony serwer w necie do ktorego bede mogl sie podlaczac jak za chciwle wpadne na zrobienie jakies fajnej nowej aplikacji. :)

0

Azure jest za darmo na jakiś czas. Poszukaj sobie, bo bodajże najmniejsza baza w Azur jest za darmo (plan basic) na zawsze. Możesz też popatrzeć czy jakoś nie da się skorzystać z MS SQL Compact.

0
IvanZwyciezca napisał(a):

Drugie rozwiązanie to jakiś tani sensowny serwer MS SQL Server dostępny do zakupu w internecie. Serwisy, które wymagają podania karty kredytowej odpadają Nie chce się narażać na koszty, które z tego co się zorientowałem są bardzo duże. Innymi słowy Azure i Amazon odpadają.

A możesz przybliżyć co to za koszty i gdzie o tym nabyłeś wiedzę ? Serwer SQL na Azure jest darmowy na rok z tego co reklamują - doczytałeś się jakiś * czy co ? Ktoś gdzieś chyba tu na forum wspominał o tym, ze jak się przekorczy limit transferu z bazą to chyba zaczynają coś naliczać - ale to zakldam musiał by być naprawdę duży ruch.
Wiesz coś o tym więcej ? Pytam bo sam chciałem skorzystać z tego w nie długim czasie do własnych testów z "szkoleniową" apką.

0

Czemu nie mozna wystawiac SQL'a na swiat?

https://dba.stackexchange.com/questions/23083/how-can-place-sql-server-online-on-the-internet - However, just remember that as soon as you make it publicly available you are opening yourself up to a world of hurt. Not everyone out there is as honest as you might like and people will try and break in - so be prepared.

https://stackoverflow.com/questions/1086554/best-practice-direct-sql-access-vs-web-service - The use of web services tends to be safer, although security is often more a people issue than software issue. But with the web service between the user and the database, the connection to the database is more secure since the user cannot directly access it. (Except for the functionality you provide through the web service.)

A tak własnymi słowami: wystawiając SQL na świat, staje się on podatny na ataki. Co chwila wychodzą jakieś exploity typu 0-day czy inne podatności, które szybko są wykorzystywane do włamywania się. W przypadku jakiegoś własnego rozwiązania, jest ono trudniejsze do złamania.

Kilku uzytkownikow bedzie moglo pracowac na jednym pliku jednoczesnie?

dokładnie tak. Dopóki baza nie będzie jakaś wielka, albo nie będzie wieeeelu jednoczesnych prób zapisu, taki sposób dostępu do niej powinien dać radę. Nie jest to rozwiązanie optymalne, ale na początek całkowicie da radę.

Pierwsze slysze o Postgresie

Taka ciekawostka - forum, na którym teraz sobie piszemy właśnie jest o Postgresa oparte ;) Jest to chyba najlepszy i najbardziej rozbudowany otwarto źródłowy silnik bazy. Ponadto można go zainstalować na Linuksie, jak i Windowsie. A co do różnic - zasadniczo to polecenia w stylu SELECT * WHERE i podobne działają praktycznie wszędzie tak samo, więc dużej (żadnej?) różnicy nie odczujesz. Owszem, przy bardziej zaawansowanych zastosowaniach są już rozbieżności między silnikami, ale to nie jest (przynajmniej - na razie) Twój poziom zaawansowania.

0
BlackBad napisał(a):
IvanZwyciezca napisał(a):

Drugie rozwiązanie to jakiś tani sensowny serwer MS SQL Server dostępny do zakupu w internecie. Serwisy, które wymagają podania karty kredytowej odpadają Nie chce się narażać na koszty, które z tego co się zorientowałem są bardzo duże. Innymi słowy Azure i Amazon odpadają.

A możesz przybliżyć co to za koszty i gdzie o tym nabyłeś wiedzę ? Serwer SQL na Azure jest darmowy na rok z tego co reklamują - doczytałeś się jakiś * czy co ? Ktoś gdzieś chyba tu na forum wspominał o tym, ze jak się przekorczy limit transferu z bazą to chyba zaczynają coś naliczać - ale to zakldam musiał by być naprawdę duży ruch.
Wiesz coś o tym więcej ? Pytam bo sam chciałem skorzystać z tego w nie długim czasie do własnych testów z "szkoleniową" apką.

Sprawdzalem jedynie ceny na Azure i ceny sa dla mnie kosmiczne. Ogolnie serwery do profesjonalnego zastosowania, a nie dla osoby, ktora chce sie uczyc.
Jezeli chodzi o Amazona to jedynie gdzies na forum przeczytalem, ze ceny sa podobne do Azure i ze karte trzeba podpinac w obu przypadkach.

Pierwszy rok jezeli dobrze pamietam jest darmowy.

Plan mam taki.
Wykupuje baze danych 250MB bazę MS >SQL dostępną za 110zł/netto na rok.

Sprawdzam czy na pewno da się z nią połączyć bezpośrednio z domowego kompa jezeli tak to bede w ted sposób na niej pracował.
Jeżeli jednak sie nie uda to z wielkim bólem zrobię aplikację na bazie SQLite'a którego liznałem przy nauce Xamarinu.
Bólem, bo uważam że lepiej łączyć sie z serwerm, bo daje wiecej możliwości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1