Adatbázis: SQL, XML DB

Microsoft SQL 2017 on Linux

Van-e valakinek tapasztalata a Linuxon futó Microsoft SQL 2017-el kapcsolatban?
2016-ban nagy érdekesség volt hogy kiadták a Microsoft SQL-t Linuxra is, de azóta sem hallottam hogy valaki használta volna.
De biztosan van ilyen.
Ugyanis egy olyan szoftvert nézett ki az egyik vezetőnk, aminek Microsoft SQL kell.
Ez a szoftver nem más mint a DMS One, ami PHP-ben íródott és MS SQL-t használ.
A fejlesztő céget még nem kérdeztem a Linux MS SQL kombinációról, de az lesz a következő, csak előbb kíváncsi vagyok, hogy van-e itt valakinek tapasztalata a linuxos Microsoft SQL-ről?

FireBase security

Üdvözletem!

Egy kicsit security jellegű kérdésem lenne:

Tételezzük fel, hogy készíteni akarok egy blogot, viszont úgy szeretném megcsinálni, hogy mondjuk megvan a HTML/CSS váz és a blog adatbázisa FireBase-en lenne, amit JS-el érnék el.

Ezzel kapcsolatosan kérdezném, mert FireBase-t és hasonlóakat még nem használtam, hogy JS-ből ugye látható a FireBase kulcsa, tehát bárki számára elérhető, így nem jelent veszélyt ez? Tudom hogy lehet különböző szabályokat készíteni, például csak olvasásra, csak írásra külön kulcs. Viszont ha ilyen módon készíteném el a blog poszt írás részét, akkor az író kulcs is szabadon nézhető és ha jól gondolom, annak ismeretében szépen lehet szeméttel szórni.

A fő kérdés inkább a következő:
Biztonságosan lehetne FireBase-t használni oly módon ahogy felvázoltam, vagy legalább az írási részét illene "takarni", például akár PHP-nek adva a feladatot?

SQL lekérdezás több sorána felsorolása egyetlen sorban

Üdv! Sajnos hiába googlézek magyarul/Angolul nem találtam működő megoldást a kérdésemre.
Egy összetettebb több táblás lekérdezést építgetek, de sajnos az utolsó komponensnél(táblánál) rájöttem, hogy nem tudom hogyan kell megfogalmazni SQL-ben, amit szeretnék tőle.
A kérdésemet egy egyszerű egy-táblás lekérdezés formájában teszem fel, a konkrét problémát mutatva, a több táblás változatát én akarom befejezni. :p

Mivel hajlamos vagyok hosszan részletezni a dolgokat ( elkerülve a félreértéseket) jól látható pontokba soroltam a kérdéseimet, így nem veszik el senki a rossz fogalom-használatom miatt felmerülő egyéb "talán" kérdésnek tűnő dolgokban.

=======================
# KÉRDÉS 1: HOGYAN RENDEZHETEM A LEKÉRDEZÉS TÖBB SOROS EREDMÉNYÉT EGYETLEN SORBA? (ezzel elkerülve a redundáns megjelenést)
=======================
BŐVEBBEN:
A "LISTA" táblában az "XtablaID" többször szerepel és minden sorban van egy-egy új adat, pl:
listaID XtablaID ADAT
===== ===== =====
0 | 0 | valami1
1 | 0 | ...valami2
2 | 1 | ezMásikKomponeshezTartozóAdat...

A lekérdezés SELECT * FROM lista WHERE XtablaID=0

Egymás alá kiadja a "valami1", és "...valami2" adatot, viszont az én fő lekérdezésemben egyetlen sorban kellene megjelenítenem ennek a mellék-táblának az X mennyiségű sorában található adatokat ( amennyi épp az xtablaID-hoz hozzá van rendelve.) akár vesszőkkel elválasztva.
(a redundancia elkerülése végett van erre szükségem )

!!! HA
SELECT * FROM lista WHERE XtablaID=0 GROUP BY XtablaID
Tehát Group By-al összevonom a a sorokat, akkor csak az első vagy X. elemet jeleníti meg, nekem viszont minden sor elemére szükségem lenne.

Természetesen a fő és egyéb mellék táblák adataival együtt akarom majd megjelentetni, de azt már én szeretném megcsinálni. E-nélkül viszont azt sem tudom befejezni.

=======================
# KÉRDÉS 2: SZERINTEM A TÖBB LEKÉRDEZÉS TÖBB ERŐFORRÁS IS, MINT EGY NAGY LEKÉRÉS A SZERVERTŐL, JÓL GONDOLOM? VAGY JOBB, HA KOMPLEXEBB LEKÉRDEZÉSEKET INKÁBB KÜLÖN VÉGEZTETEM EL?
=======================
BŐVEBBEN:
Van értelme szórakozni a lista tábla elemeinek egy sorba válogatásával, vagy egyszerűbb, ha kettő lekérdezést indítok?
Én úgy gondolnám, hogy erőforrás hatékonyabb lennék egy lekérdezés küldésével a szerver felé.

=======================
# EXTRA KÉRDÉS 3: A LEKÉRDEZÉSEM MEGFELEL A "FROM TABLA1, TABLA2, TABLA3" FORMÁTUMBAN?
=======================
BŐVEBBEN:
Mivel a több táblámnak (az egyes táblák elsődleges kulcsait leszámítva) minden mezőre szükségem van, így a fő lekérdezésem, valahogy így néz ki:

SELECT * FROM tabla1 tabla2 tabla3 WHERE xtablaID=0 AND (... egyéb tábla relációk ...stb)

Ha jól értelmeztem, a (Inner/Left/Right)JOIN-ok nem erre a feladatra vannak kitalálva, nem azokat kell használnom.
FORRÁS: http://www.sze.hu/~szorenyi/sz03/htm/doc/OUTJOIN.htm

=======================
# EXTRA EXTRA KÉRDÉS: DESKTOP ALKALMAZÁS ESETÉN VAN SPECIÁLIS ADATBÁZI ESZKÖZ?
=======================
BŐVEBBEN:
Jelenleg Webezek, de a későbbiekben programozni is szeretnék. A példa kedvéért, egy offline játék esetén (ami mondjuk C++ ) egyszerűen egy Array-ben fogom letárolni a játékos életét, sebzését, védelmi pontjait, és a táskájában szereplő tárgyainak neveit/db számát?
Vagy létezik kliens használatra valamilyen framework segítségével összedrótozható lokális adatbázis?
Ugyan ez, online játék esetén, hasonlóan a böngésző alapú játékokhoz, szimplán egy valamilyen sql adatbázisra épül?

A segítséget előre is nagyon szépen köszönöm! :)

Couchbase fagyás, adatvesztés

Sziasztok,

adott két Debian-t futtató HW, mindkét vason fut 2xN vm, ezek a PROD és a TEST rendszerek.

A produktív és a teszt rendszerek clusterbe vannak szervezve, ahol szükséges (Corosync), van, ahol az alkalmazás megoldja, pl Couchbase.

A Couchbase-t egy Wildfly alkalmazás hívogatja.

Pár hete egyik éjjel ugyanabban a másodpercben a Couchbase megállt működni mindkét környezetben: mind a PROD, mint a TEST alatt. A virtuális gépeket futtató rendszeren semmi nyoma nincs semmilyen hibának, minden más VM kifogástalanul futott tovább, és a fenti VM-ekben minden más processz szintén. A Couchbase újraindítása után (ill emiatt a Wildfly megtöltötte a log partíciókat, és kilépett, tehát ezt rendbetettük) az addigi adatok eltüntek.

Mentésből visszaálltunk, és az élet ment tovább.

Ezután az alkalmazás fejlesztője átnézte a rendszert, a logok alapján ő erre gyanakodott:


[ns_server:debug,2019-04-01T15:41:53.996+02:00,ns_1@tweb1.local:compaction_new_daemon<0.14453.1774>:compaction_new_daemon:process_compactors_exit:1353]Finished compaction iteration.
[ns_server:debug,2019-04-01T15:41:53.996+02:00,ns_1@tweb1.local:compaction_new_daemon<0.14453.1774>:compaction_scheduler:schedule_next:60]Finished compaction for compact_views too soon. Next run will be in 30s
[ns_server:debug,2019-04-01T15:42:22.137+02:00,ns_1@tweb1.local:compaction_new_daemon<0.14453.1774>:compaction_new_daemon:process_scheduler_message:1312]Starting compaction (compact_kv) for the following buckets: [<<"DP1IP">>,<<"DP1">>]

(ez amúgy egy későbbi log részlet, de a probléma ua).

A fregmentáció az indexeknél kb 23%, az adatoknál kb 89-90% körül mozog. Mindez friss betöltés után.

Utánanéztünk, és találtunk egy olyat, hogy az 5-ös Couchbase-ben volt egy ilyen hiba, ez a 6-osban javítva lett.

Frissítettem 6-osra a TEST rendszerekben mindkét node-on a Couchbase-t 6-osra, de a fenti esemény folyamatosan jön.
(A fenti logrészlet már a 6-os Couchbase logjából származik.)

A legelső megállás óta nem volt semmilyen incidens, de szeretnénk megelőzni a következő ilyet.

Van valakinek ötlete, mit tudunk csinálni, merre induljunk?

Az indulás előtt állítólag volt memtest a gépeken, hogy biztosra menjen az akkori üzemeltető. Egyébként HW hibára utaló jel nincs a gépeken.

Totál kezdő vagyok a Couchbase-ben, a rendszereket pár hete vettem át.

Minden segítséget köszi,

a.

Megszokott 20+ éves küzdelem UTF8 kódolás

Helló!

Valakinek egysoros magyarázata fogja megoldani, szinte biztos vagyok benne.

Tárhelyről költöztem másik tárhelyre.
Webhosticon -> rackforest

Régi tárhelyen az SQL-ből exportáltam, mindent default. Új helyen import, minden default. [phpmyadminból phpmyadminba]
INNODB, utf8_hungarian_ci mindkét helyen, ránézésre minden egyezik.

Az áttöltött fájlokban lévő utf karakterek megjelenítése jó, csakis amit az sql-ből húz be, ott jönnek a ? karakterek. Minden nagyon szépen működik, tényleg egyedül az utf8 karakterek nem jók.

Mit ronthattam el?

Próbáltam már CSV-vel. Próbálgattam állítgatni a szerveren export előtt után közben mindenféle UTF-8 módozatokkal, de pontosan ugyanaz.

Próbáltam, hogy kitörlöm a mező tartalmát és újra beírom, de ugyanaz.

Előre is köszönöm az előremutató ötleteket!

MS Access lekérdezés sorainak sorszámozása

Olyan megoldás kellene nekem, amivel MS Access 2016-ban, az MS SQL-ben lévő row_number()-hez hasonlóan, egy lekérdezés eredménysorait sorszámozza be. Sajnos nincs olyan oszlop, ahol növekvő sorrendben van valamilyen adat, ezt kihasználni nem lehet. Egy kis részlet a lekérdezés eredményéből:

az helyaz javdatum
515 1 2001.07.05.
110 1 2002.01.10.
209 2 2001.08.30.
390 2 2002.01.11.
520 3 2001.05.09.
572 3 2001.05.11.
377 3 2001.06.25.
102 3 2001.08.13.
472 3 2001.09.14.
345 4 2001.01.17.
626 5 2001.09.09.
621 7 2001.04.04.

Itt kellene egy új oszlop, ahol a megjelenített oszlopok sorszámozása található. A sorszámozásnak bármilyen rendezés esetén mindig a megjelenítési sorrendnek megfelelően 1-től kezdődőnek kell lennie. Gyakorlatilag az egymás utáni sorok különbségének maximumát keresném (azonos helyszínen két javítási dátum között eltelt legtöbb időt), de nincs más ötletem, hogy csakis a közvetlen szomszédok különbségeit állítsam elő.

az helyaz javdatum sorszam
515 1 2001.07.05. 1
110 1 2002.01.10. 2
209 2 2001.08.30. 3
390 2 2002.01.11. 4
520 3 2001.05.09. 5
572 3 2001.05.11. 6
377 3 2001.06.25. 7
102 3 2001.08.13. 8
472 3 2001.09.14. 9
345 4 2001.01.17. 10
626 5 2001.09.09. 11
621 7 2001.04.04. 12

MS Access mdb adatbázis szerkesztése több felhasználóval online

Van egy program amit szeretnénk lefordítani, ehhez a leírás alapján a programmal elkészítettem az adatbázis fájlt (MS Access mdb), ebben az egyik oszlopban van az eredeti szöveg a másik oszlopba kell beírni a fordítást, ha kész be kell importálni a programba.

Mivel nem egyszemélyes munka lesz (kb. 4500 sor, sok szaknyelvi mondattal) arra gondoltam, hogy az mdb fájlt valamilyen online felületen megosztom és így direktben tudná mindenki szerkeszteni, javítani, lektorálni az idejétől függően.
Próbáltam keresni, de nem igazán találtam megoldást.

Van-e egyéb lehetőség amivel ez könnyen megoldható.

kezdő - xml format

Adott egy letöltött xml fájl, de szerkesztőben megnyitva, csak egy katyvaszt látok. Nincs betördelve, és áttekinthetetlen az egész.
Van erre valami megoldás? A json detto. Ez amúgy egy időjárás xml vagy json, de ahhoz hogy kezelni tudjam, áttekinthetőnek is kellene lennie, legalábbis addig amíg a feldolgozó szkriptet megírom. Esetleg valami online cucc?

Letezik-e ilyen db engine?

Keresek egy olyan db engine-t, ami:

-SQL/SQL-szeru nyelvvel query-zheto
-Tudja a relacios adatbazisok common feature setjet, kiveve:
--Primary key csak egyetlen oszlop lehet es az is az autoincrement/serial bigint
--Foreign key nem lehet primary key-ben
--es ugye ennek megfeleloen elindult az optimalizalasa ezen megszoritasok menten, ahogy azt nem (teljesen) relacios adatbazisoknal (leanykori neven NoSQL) mar megszokhattuk.

Az se baj, ha ez egy (nemtrivialis) MySQL/PostgreSQL fork, vagy akar egy db engine a MySQL-hez peldaul (ahogy pl. a Facebook is forkolt maganak masik MySQL-t feltetelzve, hogy igen ritkan fog DELETE-t futtatni, es annak karara gyorsabb lehet sok mas muvelet). De az mar igen, ha csak egy config fajlt/plsql scriptet latok, es nem indult el az engine abba az iranyba, hogy kihasznalja annak az elonyet, hogy mindig van integer primary key. Annyi erovel felhuzhatok egy Postgres-t, es megmondhatom, hogy "holnaptol ez a szabaly".

Kerdes, van-e ez utobbinal (Mysql/Postgres + "jatekszabalyok") elegansabb es optimalizaltabb megoldas?

phpMyAdminban automatizált lépéssor

Van arra lehetőség, hogy (egy tárhelyszolgáltatóhoz tartozó) cPanelben vagy phpMyAdminban automatizáljunk egy olyan lépéssort, ami az egyik adatbázis tábláit átmásolja egy másikba? Egyelőre ezt a lépéssort végzem (s ha ez automatizálható/gyorsítható, az is jó). A fájllal matatás a legbénább része, azt lenne jó elkerülni "házon belüli" megoldással:
- phpMyAdmin-ban db1 adatbázisra kattint, Exportálás
- [indítás] + fájl mentése
- db2 adatbázisra kattint
- Szerkezet fülön minden táblát kijelöl (alul), Művelet minddel: Eldobás
- Importálás: fájlt beemel – [indítás]