Alternatív EAV, alapszerkezet

  • SQL
  • adatbázis tervezés
  • .NET
  • EAV
  • SQL Server


Az online áruház, milyen további paramétereket az árut. Véges számú paramétert. Sokféle áru. Az első dolog, ami eszébe jut - példaértékű építészeti EAV. Az interneten, azt írja, hogy ez rossz és alternatív - minden típusú termék létrehozni egy táblázatot az adatbázisban.


Szeretném tudni, hogy mi mindegy ez rossz. Az igazi oka, nem találták fel, hogy „nincs dörzsölje”. És nézd az adatbázis szerkezete, hogyan kell használni, ha teszik az egyes típusú termék az asztalnál. Amint azt például az összes termék raktáron. Minden termék vagy piros. Ha egynél több táblázatot minden típusú termék ... én nem jön ki az optimális rendszert.


És mégis ... én először tudni az összes lehetőség, azaz a 2. táblázatok ... Termékek és ProductsDescriptors amelyek rögzítették ProductID (int), DescriptorID (int), DescriptorValue (str). És tudom, hogy milyen azonosító, amely magában foglalja a teremtés. Ie ez nem egy online boltba elvont áruk és termékek tudom. Például DescriptorID = 7 felelős a színes TV ...

„Mű” végző SQL lekérdezés.

MAGYARÁZZA ANALYSE mutatja. hogy az akvizíció kérés kártya konkrét termék (amely 10 paraméter) vesz

0,15 ms. PHP gyakran gondolt, mint egy kérés teljesült a postgresql-e.

Van mindenféle ügyes persze nem figyel. Mérnök vagyok, és konkrét problémák megoldásához speciális körülmények között. A vállalkozások csekély érdeklődés a technikai gondok. De az üzleti élet képviselői szeretnénk bármennyi típusú áruk bármely sor jellemzők, ezért az lenne, ha egy új típusú nem szükséges, hogy vonzza a fejlesztők, akik ott lesznek valami varázslatot a tábla szerkezetét. És persze akkor azt gyorsan és bezbagovo munka növeli a katalógus egy millió pozíciókat.
Itt vagyok, hogy megoldja ezeket a problémákat. Szóval van egy egyszerű PHP motor, amely megtartja az áramlás 300 kérések / sec egy idő generációs oldal

0,015 másodperc sok időt (vagyis

25 millió naponta). Az intervallum 5 másodperc tudja kezelni a rövid távú tüskék kereslet 1000 kérések / sec generáció
oldalak

0,070 sec. Így PHP része fogyaszt kevesebb, mint 200 MB RAM-mal. Általában a csomó nginx + php-FPM + postgresql + Redis eszik

Ha a feltételek változnak holnap, amely megmutatja, hogy a EAV nem áll jól nekem, én használni egy optimális struktúra minden gond nélkül. És biztosan nem, ha nem vagyok vallásos fanatikus sikoltozás:% username%,% lang% a Windows szar és% struct% óriási szörny, mert én vagyok egy mérnök és gyakorlatokat. És megfelelőségét kritériumok számomra - hatékony végrehajtása a feladat, hanem absztrakt érvelés elmélet.

Nevess kérelem kódot, köszönöm. Ezután semmi sem vitatkozni veled, sajnálom.

alekciy, akkor azt mutatták, szélsőséges esetben az EAV. Az Ön esetében, a koncepció a szervezet - degenerált feleslegesen predstavlenno külön táblázatban. Szerkezeteket nevezzük UDA (felhasználó által definiált attribútumok) és valóban, semmi ok az aggodalomra. Abban az értelemben, hogy ebben a modellben, akkor is használja a forrásokat adatbázis a harc a tisztesség, ellentétben a klasszikus EAV, amely szükséges az integritás, hogy a saját és a versenyképes hozzáférés Vemma és egyáltalán nem triviális feladat, és megoldani azt hatékonyan, mint a nem a DBMS a klasszikus relációs modell, időnként, ez egyszerűen lehetetlen.

Azonban az alkalmazhatóságát ennek a megközelítésnek vannak korlátai, hogy, akkor nyilván elfér. De az adott esetben, azt hiszem, a korai általánosítani. Valóban, hogy kap egy jó kártya, és ezt a szerkezetes nem jelent problémát. De elképzelhető, címsor hierarchia egy táblázatban, ez egy komoly probléma, meg kell végezni ugyanazt a belépések száma, attribútumok meghatározása szerint olyan entitás. Ha el kell végezniük a kiválasztás csak egy attribútum vagy több, az OR operátor predikátumok, akkor is semmi probléma. De ha kell választania az értékek több attribútum predikátumok kiválasztás az AND operátor, akkor lesz nagyon problemotichno. Azt is meg kell jegyezni, hogy ez a megközelítés, a felhasználó által megadott attribútumok nem használhatók az alkalmazás logikáját. mert A alkalmazás-életciklus attribútum kódot meg lehet változtatni a felhasználó.

De az a tény, hogy az EAV és UDA tényleg semmi nincs semmi baj, én teljesen egyetértek veled. Csak ezek a struktúrák csak korlátozottan használhatók. És ha az UDA még lehet valahol használni, a hatálya alá a EAV - elhanyagolható. Ezek olyan alkalmazások, amelyek működnek külön egységek, átalakított kizárólagos hozzáférést. Azt hiszem, ez a terület a Stolk szűkül az esetben, amelyre az EAV megközelítés alkalmazható nevezhető rendkívülinek.

> Tény, hogy kap egy kártyát egy árucikk segítségével ez szerkezetes nem jelent problémát.
Hierarchia külön táblázatban vagy formában AL NS a helyzetet. Csatlakozás termék-list_dereva egy harmadik táblázatban. Ez magában foglalja a jelenlegi üzleti követelményeknek. Különösen a keresést specifikus attribútumok nem szükséges az online ruhaüzlet keresés logikája „Szeretnék egy piros póló méret XX” általában vezet gyors minta ingek indexet használ, és a lassabb, de az alkalmazáson belül gyorsan, szűrőt attribútum értékeket. Ez messze meghaladja a jelenlegi követelményeknek, és egy nagy mozgásteret. Ha ez volt a számítógépes hardver könyvtár keresés attribútumok beállítva, akkor természetesen, egy ilyen szerkezet nem használható.

A csúcs az UDA köszönhetően.

Kapcsolódó cikkek