Mer

Fordeler med R-trær i forhold til geohashes

Fordeler med R-trær i forhold til geohashes


Geohashes blir mye brukt i produkter som: Lucene, mongodb, etc og har blitt en av dagens viktigste teknologier.

Har Geohashes erstattet de gode gamle R-trærne eller har R-trær noen fordeler sammenlignet med Geohashes?


Geohash er en veldig enkel og effektiv måte å indeksere romlige funksjoner, spesielt punktfunksjoner. Linje- og polygonfunksjoner er litt vanskeligere å indeksere, men kan gjøres. Geohash er et statisk hierarkisk fast størrelse rutenett, lagt over jorden. Rutenettceller på samme hierarkiske nivå overlapper ikke. R-Tree er et dynamisk rutenett som celleplassering og størrelse endres avhengig av funksjonene de indekserer. R-Tree indekser inneholder avgrensningsbokser og celler endres hver gang du setter inn og oppdaterer data. Geohash brukes hovedsakelig til indekseringspunktfunksjoner, og cellene endres ikke for hver innsetting og oppdatering av data. Geohash-celler adopterer ikke til funksjonene som med R-tree.

Noen av fordelene med geohash (sammenligning med r-tree) kan være:

  • enkel implementering
  • ingen ytelsesforringelse med økende antall funksjoner
  • nærhetssøk (delvis sant)

Noen av ulempene med geohash (sammenligning med r-tree) kan være:

  • vilkårlig presisjon av rutenettet
  • vanskeligere å indeksere (og spørre) linje- og polygonfunksjoner
  • størrelsen på indeksen kan være stor med noen metoder for linje- og polygonindeksering
  • etter spesifikasjonene, kan den bare brukes med koordinatsystem for lengde-/breddegrad, selv om den samme metoden også kan brukes på andre koordinatsystemer

De produktene (databasene) som du nevnte bruker geohash fordi geohash hovedsakelig brukes til indekseringspunkter og det er mange applikasjoner som trenger en slik funksjon. Linjer og polygoner brukes ikke så ofte (bortsett fra GIS -applikasjonene selvfølgelig), så hvorfor bry deg med det. En annen grunn er selvfølgelig enkel implementering. Geohash konverterer todimensjonal koordinat til endimensjonal verdi. Dette kalles dimensjonsreduksjon. Endimensjonal verdi er lett å indeksere av standard b-tre som for det meste brukes i disse produktene.

Jeg må nevne at det er lignende algoritmer for geohash, men de fleste av dem er proprietære og krever lisensiering. Geohash er i offentlig eiendom. Dette kan også være årsaken til en så stor bruk de siste årene.

Det er sannsynligvis noen andre fordeler og ulemper, men disse er først som jeg tenker på. Jeg håper forklaringen min hjelper litt.


Et annet ord for det Patrick Durusau på emnekart og semantisk mangfold

Elwood Blues sier i The Blues Brothers at han forfalsket fornyelsen av førerkortet og oppførte:

som hjemmeadressen, liksom

har ikke samme effekt. Ja?

Mongolia har steder like kjent som Wrigley Field er for amerikanerne, men fra og med neste måned kommer alle steder i Mongolia til å ha tre ords fraseadresser. Mongolia endrer alle adressene til treordssetninger av Joon Ian Wong.

Mongolia vil bli en global pioner neste måned, når det nasjonale postkontoret begynner å referere til steder med en rekke treordssetninger i stedet for husnummer og gatenavn.

Det nye systemet er utviklet av en britisk oppstart kalt What3Words, som har tilordnet en setning på tre ord til hvert punkt på kloden. Systemet er designet for å løse et problem som ofte ignoreres av 75% av jordens befolkning, anslagsvis 4 milliarder mennesker, som ikke har noen adresse for utsending, noe som gjør det vanskelig å åpne en bankkonto, få en levering eller nås i en nødssituasjon. I What3Words ’system er tanken at en rekke ord er lettere å huske enn tallstrenger som utgjør GPS -koordinater. Hver unik setning tilsvarer et bestemt 9 kvadratmeter stort sted på kartet.

For eksempel blir Det hvite hus, på 1600 Pennsylvania Avenue, sulk.held.raves Tokyo Tower ligger på fans.helpless.collects og Stade de France er på reporter.smoked.received.

Mongoler vil være de første til å bruke systemet for postlevering fra myndighetene, men organisasjoner inkludert FN, budfirmaer og kartfirmaer som Navmii bruker allerede What3Words ’system.

Det mest bemerkelsesverdige aspektet ved https://map.what3words.com/ blir avslørt hvis du prøver å:

Gandan Monastery (Gandantegchinlen Khiid), Gandan Monastery District, Ulaanbaatar 16040 (011 36 0354).

Prøv nå å endre språk (øverst til høyre).

Frasadresser med tre ord for Gandan-klosteret:

  • picturing.backfired.riverside (engelsk)
  • schneller.juwelen.schaffen (tysk)
  • aislados.grifo.acuerde (spansk)
  • nuageux.lémurien.rejouer (fransk)
  • turbato.fotografate.tinozza (italiensk)
  • chinelo.politicar.molhada (portugisisk
  • matte.skivar.kasta (svensk)
  • vücudu.ırmak.peşini (tyrkisk)
  • карьера.слог.шелка (russisk)

Jeg har bare hatt tid til å se stedet, men fant retraced.loudest.teaspoon for Yap Island i Mikronesia.

Flere uklare steder å prøve?

Du kan finne et vell av tilleggsinformasjon, ja, inkludert et API på: http://what3words.com/.

En flott mulighet for emnekart, ettersom tidligere måter å identifisere steder ikke kommer til å blinke ut av eksistensen. Hvis adresser med tre ord fanger opp, kan bruk av andre søkere avta, men det vil være over generasjoner. Vi står foran en veldig lang overgangsperiode.

Tanker om å bevæpne 3-ords adresser. For det første ved å bruke feil 3-ords adresser til å lede agenter i staten feil. For det andre, opprette nye 3-ords adresser som kan være innebygd prosa, sang, uten prikseparatorer.

For ikke å snakke om en server med riktig autentisering, returnerer “ korrekt ” kartplassering for en 3-ords adresse, ellers får du standard.


Fordeler med R -trær i forhold til geohashes - Geografiske informasjonssystemer

Dette er et dårlig eksempel. En SQL -database er et feil verktøy for jobben hvis du bryr deg om ytelse.

Du vil ha en datastruktur som et rekkevidde [1] eller et k-d tre [2]. Resultatene vil være nær øyeblikkelige.

100 millioner lat /lng -par er noe du kan få plass i RAM uten problemer. Og du kan til og med gjøre geometri -spørringen på klientsiden for ytelse i millisekunder.

Andre eksempler kan trenge SQL, men her ville dette være å gjøre ting på feil måte.

Hvis du mener at steder i nærheten har geotags med store vanlige prefikser, så inkluderer & quotedge & quot-tilfellene der dette arbeidet ikke så lite kjente, upopulære byer som London, Storbritannia (grundig som Greenwich-meridianen passerer).

Det er å si, geohashes i Øst- og Vest -London har ingen felles prefiks. Uber -sjåføren som henter deg i Greenwich, sender deg av i en geohash som starter med en annen bokstav.

For å påpeke det åpenbare, er overflaten på jorden todimensjonal, og en databaseindeks er endimensjonal. En løsning på 2D -spørringsproblemet ved hjelp av en 1D -indeks er matematisk umulig (hvis den eksisterer, vil du kunne konstruere en homeomorfisme mellom en linje og et plan, som ikke eksisterer).

Visst, geohashes kan brukes til å beregne svaret. Men du trenger å vite mer informasjon enn bare bokstavene i geohashen for å finne ut hvilke geohash -partisjoner som grenser til en gitt. Den ekstra informasjonen vil imidlertid svare til å bygge et tre som deler et tre, og du vil fremdeles ikke kunne bruke et områdeforespørsel for å få det.

Hvis det er en spørringsbasert tilnærming til SQL-området med geohashes som kompromitterer korrektheten, men fortsatt er praktisk, har jeg alle ører.

PS: dette er en god oversikt over dette problemet:

Løsningen der innebærer først å produsere et geohash -celledekning. Selvfølgelig betyr dette at du har en BSP-lignende struktur støttet av en database.

PPS: den raske og skitne måten å bruke SQL på er å holde et bord med lat / lng i forskjellige kolonner. Det er ikke vanskelig å definere en lat /lng -boks rundt et punkt som har omtrent like sider, ved hjelp av grunnleggende trig.

Du kan filtrere steder utenfor boksen med SQL, og deretter bare gå over resultatene for å kontrollere avstander og finjustere svaret (om nødvendig). Det vil imidlertid ikke være performant.

Vi undersøkte alternativene for LDAP og Kerberos -integrasjon, kommersielle og gratis. Det viser seg at det ikke er noen anstendig måte å gjøre det på og gi tillatelser basert på LDAP -grupper. Det var ikke engang en anstendig måte. De eneste alternativene var en måte å hackere å vurdere. MS SQL eier fortsatt huset.

Et av de større problemene med steder som har gjort seg avhengige av MS -løsninger, er at MS -programvare gjennomsyrer stedet helt. Når smerten ved å gå full MS er for stor, er de bare på jakt etter nedgang i utskiftninger av eksisterende deler. Dette kommer aldri til å gå bra. MS -programvare spiller aldri godt med alternativer.

Hvis du har latt deg gli for langt nedover den glatte skråningen av MS Office -integrasjoner og MS Sharepoints og lignende, må du betale MS -prisen. Eller du må være villig til å kaste ut hele partiet.

Dette er et vanlig standardkrav i virksomhetssystemer, og det virker ganske fornuftig. Hvis du har en bedre og mer robust løsning, er det milliarder i dette markedet, på den mest bokstavelige måten.

En ting til, selv om Active Directory er en standard i bedriften, er LDAP en åpen protokoll som eksisterte før Microsoft drømte om å være en spiller i virksomhetsfeltet og har minst et halvt dusin åpen kildekode -implementeringer.

Det var nettopp det jeg mente med ødelagte krav. Hvorfor ville noen av SSO -en din være relevant på databasenivå? En databasebruker bør kobles til et program, ikke til en enkelt bruker i AD. Hvis du lar brukere i stadig endring gjøre sine egne SQL -forespørsler på DB -nivå, er det noe råttent i utgangspunktet.

& gt Dette er et vanlig standardkrav i virksomhetssystemer, og det virker ganske fornuftig. Hvis du har en bedre og mer robust løsning, er det milliarder i dette markedet, på den mest bokstavelige måten.

Jeg har aldri støtt på denne typen oppsett i et normalt bedriftsmiljø. Der har du alt bak en slags bedriftsprogramvare. Dataregistrering, revisjon, etc.

Imidlertid, du kunne har behov for dette hvis vi snakker utviklere som deler en enkelt database, og du ikke vil administrere kontoer og passord separat.

Du sa at løsningene du fant for Postgres var for & quothacky & quot. Jeg tror at hvis du har et oppsett der bedriftsbrukere som ikke er utviklere eller DBA -er, trenger personlig tilgang på DB -nivå, er oppsettet ditt ganske "quothacky" til å begynne med.

& gt En ting til, selv om Active Directory er en standard i bedriften, er LDAP en åpen protokoll som eksisterte før Microsoft drømte om å være en spiller i virksomhetsfeltet og har minst et halvt dusin åpen kildekode -implementeringer.

Microsoft har bøyd LDAP og Kerberos på sin egen måte. Å prøve å bruke AD som en LDAP -server er full av ubehagelige overraskelser du får av dårlig dokumentert eller direkte udokumenterte & quotfeatures & quot, og ubrukelige feilmeldinger og logging. Tro meg, det er et stort mareritt å få alt integrert med AD.

Jeg har gjort en god del av integrasjonen med AD, inkludert i noen av de største foretakene som eksisterer på denne planeten, hvor du har hundrevis av grupper av utviklere og administratorer. Jeg leste RFC -ene og dokumentasjonen, i de fleste tilfeller er den faktisk ganske god og detaljert, både på LDAP -en og Kerberos -implementeringsdetaljene.

& gt Jeg har aldri vært borti denne typen oppsett i et normalt bedriftsmiljø. Der har du alt bak en slags bedriftsprogramvare. Dataregistrering, revisjon, etc.

Vel, for deg ligger alt bak bedriftsprogramvaren, men jeg er blant de som trenger å implementere den.

Ah, så dette er et spesielt tilfelle med en butikk som har utviklere og DBA -er i brukerbasen. Nå at Jeg kan forstå.

& gt Jeg leste RFC -ene og dokumentasjonen, i de fleste tilfeller er den faktisk ganske god og detaljert, både på LDAP -en og Kerberos -implementeringsdetaljene.

Da vet du hvilket gigantisk rot det hele er. Jeg har også gjort min del av LDAP ⾭ -integrasjon og fant ut at LDAP er et veldig formbart verktøy som har blitt bøyd på mange måter. Det er mange detaljer å få riktig. MS bruker en bestemt delmengde av skjemater og har lagt til sin spesielle smakstilferd i bakgrunnen. Det betyr at det AD -administratoren ser, ikke er akkurat det en LDAP -spørring kan returnere. På samme måte Kerberos eller andre godkjenningsopplegg som f.eks. SAML. Å få alt dette rett fra utsikten til en tredjepartsprogram er ikke enkelt. Det er derfor jeg aldri har overrasket over at stort sett alle er ufullstendige eller feil på denne måten.

Oracle tilbyr en lignende integrasjon for AD. Har du tilfeldigvis erfaring med det, og i så fall, hvordan sammenligner det seg med MS SQL?

Etter min erfaring implementerer vanligvis tredjepartsverktøy, dvs. ldapsearch, ikke alle AD -alternativer. Hvis du vil bruke dem til en LDAP -forespørsel med AD -funksjoner, vil du motta legitimt svar, men de vil ikke være leselige for mennesker ettersom de ikke ble analysert av verktøy. Imidlertid er dokumentasjonen fra Microsoft på denne fronten faktisk overraskende omfattende, og hvis noen hadde lyst, kunne de implementere den riktige analysen. Det vil også være ganske trygt å anta på dette tidspunktet at forsettlige endringer i fremtiden på disse områdene er ekstremt usannsynlige.

Å lese og forstå LDAP- og Kerberos-implementeringen er en ganske oppgave, og jeg kan fullt ut forstå hvorfor ingen satt for å implementere alt på nytt i åpen kildekode.

Mesteparten av tiden, selv funksjoner som er implementert i open source -biblioteker, for ting som GSSAPI som eksempel, er ikke implementert i programvaren som bruker dem. Og i dette synes jeg PostgreSQL mangler ekstremt.

Til sammenligning lar Apache deg bruke LDAP -grupper for ACL -er, NGinx har et uopprettholdt plugin fjernet fra Apache -basekoden, og det implementerer bare støtte for LDAP -brukere, ikke grupper. PostgreSQL lar deg bare autentisere brukere som samsvarer med brukere som du allerede har definert i PostgreSQL.

Jeg er langt fra å være Microsoft -fan generelt, og jeg lider når jeg må bruke operativsystemet deres. Men AD er et robust stykke arbeid og stort sett det eneste spillet i byen. Jeg føler at det ikke er i fokus akkurat nå, ettersom det ikke er en del av Azure -strategien deres, og det er synd.

Det vil være eksisterende verktøy rundt ACL -administrasjon (vanligvis AD). Brukeradgangshåndteringsgrupper, geografisk adskilt lokal kontoadministrator, flere helpdesk for å tillate katastrofeplaner (pandemier, branner, lokaliserte nettfeil).

Tilgang kan være så enkel som:

- applikasjonen min bruker en systemkonto, og vi administrerer tilgangen

- søknaden min vil passere brukerlegitimasjon (basert på AD), dette er gruppene (basert på AD) som har lest /write /slett tilgang regionale teamledere vil be om tilgang ved hjelp av eksisterende UAM, regionale ledere vil godkjenne forespørsler, din eksisterende verktøy vil behandle disse forespørslene ettersom du er den utpekte autoriteten over disse gruppene

Å endre dette krever enten eksepsjonelle nivåer av observerbare avkastninger på innsats, eller ekstrem viljestyrke og politisk makt.

Under evaluering av MS SQL / PostgreSQL og#x2F uansett, vil det være et krav å passe inn i eksisterende UAM.

Hackish -implementeringene synkroniserer brukere fra LDAP til PostgreSQL, etter planen. Det er mer enn 3 forskjellige implementeringer av denne galskapen.

Hva var oppgaven min? Legg til XML -eksport i et dårlig utført XML -skjema, og gjør alt i PL /SQL, dataene som gikk inn i XML var en blanding av normale spørringer og beregnede PL /SQL -resultater.

Det skjemaet + lagrede prosedyremonstro stikker opp i tankene mine som de mest uhellige katastrofene jeg noen gang har jobbet med.

Hvis du har LAT /LON i tabellen som vanlige kolonner indeksert, spør du bare om begrensningsboksen til radiusen din slik at den kan bruke standard b-treindekser og deretter postfilter til en sirkel som kutter av hjørnene. For forbannelse må du gjøre noe arbeid for å ta hensyn til jordens krumning, men dette er ganske standard geospatiale ting.

Hvis du har en DB med geospatiale typer og indekser som MSSQL 2008+, Oracle, PG etc så blir dette trivielt da de kan gjøre dette direkte.

Hvis du vil gjøre romlige ting i databasen, så er PostGIS for PostgreSQL eller Spatialite for SQLite definitivt de beste alternativene.

For generell ytelse er PostgreSQL gjennomgående utmerket, men det er ikke det beste i alle tilfeller.

Mange brukere sier hovedsakelig om tilgjengelighet, enkelhet, integrering med eksisterende erfaring og#x2Ftools (f.eks. JSON), håndterbarhet, økosystem, etc. Disse brukerne kan være fornøyd fra starten, eller hvis de ikke er fornøyd, klager de en stund til problemet deres er løst, og så blir de stille.

Ærlig talt, hvis det tar databasen din mer enn et sekund å trekke 1000 av 100M rader på en enkel spørring, betyr det at du må finne ut hva som er galt med indeksene dine, ikke at valget av databaseleverandør er dårlig. Det er sant at postgres er en veldig fin database, men for grunnleggende oppgaver vil ærlig talt være en god database hvis du vet hvordan du bruker den effektivt.

Nå har jeg ikke erfaring med MySQL, SQLServer, etc., men mellom Oracle og Postgres er Postgres definitivt den beste databasen.

Alt som før var en#x27that er en enterprise edition -funksjon ' er nå bakt inn.

samtidig opprettelse av indekser er fantastisk.

Enkelheten og hastigheten til pgBarman vs RMAN er overveldende. RMAN i Oracle Standard Edition kan bare ta full sikkerhetskopiering.

Full skrivebeskyttet tilgang til standby? Det er enormt! (bedriften bare for den store O)

Sanntidsreplikasjon (ikke loggfrakt), også kun virksomhet for den store O.

Jeg er en sysadmin, så det er det jeg legger merke til med en gang, men utviklerne våre elsker det også, av mange andre grunner.

Du kan ganske enkelt sikkerhetskopiere databasen din. Og du gjenoppretter ganske enkelt sikkerhetskopien. Og resultatet er en fungerende database, uten feil.

* Protokoll: (a) ingen trådnivå -navngitte parametere støtter alt må være etter indeks. (b) Binær vs tekst er ikke bra, og detaljer om binær protokoll er for det meste & quot; se kilde & quot (c) ingen støtte for inline kansellering: for å avbryte en spørringsklient kan ikke#signalere på gjeldende TCP -tilkobling, må klienten åpne eller bruke en annen tilkobling for å drepe en eksisterende spørring, er dette noen ganger greit, men hvis du står bak en lastbalanser eller pooler kan dette ende opp som en stor smerte.

* Flere resultatsett fra en enkelt spørring uten hacks. Selv om du kan knytte sammen resultater med lignende kolonner eller bruke markører, er dette hacks og fungerer bare i spesifikke tilfeller. Hvis jeg har to valg, returnerer jeg to resultatsett. Vær så snill.

* Valg av språk på protokollnivå. Ja, du kan programmere på et hvilket som helst språk, men å sende inn en vilkårlig forespørsel på et hvilket som helst språk er smertefullt og krever å opprette en anonym funksjon, noe som er ytterligere smerte hvis din ad-hoc-forespørsel har parametere. Jeg vil gjerne ha et protokollnivåflagg som lar deg spesifisere: & quotSQL & quot, & quotPG /plSQL & quot, & quotcool-lang-1 & quot og la det utføre starten på teksten som den.

Jeg elsker Postgres nylig lagt til prosjekter! Jippi!

Også ekte indeksert organisert bord aka ekte klyngede indekser.

Oh og ekte tverrforbindelse spørringsplan caching, utarbeidede uttalelser er bare for tilkoblingen og må eksplisitt brukes. Du trenger ikke å bruke forberedte uttalelser i MSSQL siden 90 's

Å bruke UUID -er for PK er greit og dandy, men klyngede indekser og type 4 UUID -er spiller ikke bra. Mange MS SQL -brukere oppdager dette på den harde måten når lekedatabasen plutselig har flere størrelsesordener.

Jeg er sikker på at hvis postgres hadde det, ville det ikke ha hatt de fleste av disse problemene.

Som en database Driver ˼lient -utvikler:

* Å ha to protokoller og#x2Fdatatyper som to er det samme (tekst / binær) er ikke verdens ende, men det gir bare forvirring. Det legger også til kompleksitet for en annen server- og#x2Fproxy- og#x2Fpool -implementering. Anbefaling: bedre dokument binær og legg til en intensjon om å fjerne tekstdatatyper.

* Å ikke ha en innebygd kansellering (i samme TCP /IP -tilkobling) betyr at kansellering ikke støttes av mange drivere, og selv når det er det, er det mange kanttilfeller der det slutter å fungere. Hver klientimplementering må omgå dette.

Som applikasjonsutvikler ser jeg vanligvis tre mønstre dukke opp:

1. Sett SQL på SQL -plattformen: lagrede funksjoner og#x2F -prosesser. Programmet kaller bare lagrede funksjoner og#x2F -prosesser. 2. Sett SQL på applikasjonsplattformen: enkel lagret SQL -tekst, spørringsbyggere. 3. Gjør applikasjonsdump og bruk enkle CRUD -spørsmål og sett logikken fullt ut i applikasjonen.

Jeg befinner meg vanligvis i kategori (2), selv om jeg ikke har biff med (1). Fordelene med (2) inkluderer: (a) lettere å lage dynamiske søkekriterier og (b) bruk en enkelt kilde til skjemasannhet for applikasjon og database.

- (A) Skjermene jeg lager har ofte et dynamisk kolonnesett. For å oppnå dette kan jeg returnere tre resultatsett: radliste, kolonneliste og feltliste. Dette fungerer for skjermene mine og skriver ut XLSX-ark som kan pivotere dataene automatisk, mens alle dataoverføringskolonnene kan være statisk kjent. og forhåndsdeklarert. Dette lar meg redigere en svingbar tabell fordi hver celle kjenner opprinnelsesraden.

-(B) En rimelig mengde arbeid i SQL kan være lange (300-1000+) linjer med SQL. Det er ofte mange mellomtrinn og temp tabeller. Uten flere resultatsett er det vanskelig å effektivt returnere dataene når det ofte er flere arities og kolonnesett som alle er relevante for analyse eller arbeid. Så hvis jeg tar en fullt applikasjonssentrisk visning (mer som applikasjonstankegang (3)), kaller du bare databasen mye. Men hvis du er mer databaseserversentrert (1) eller (2), kan dette utgjøre et reelt problem etter hvert som kompleksiteten i forretningsproblemet øker. (Jeg er klar over fluktluker, men jeg snakker om utvikling av sundet uten å bruke alternativ koding.)

- (C) Navngitte parametere er ekstremt nyttige for å bygge opp spørringsparametere i applikasjonen (utviklingsmodell (2)). Du kan spesifisere en spørring hvor-leddbit, parameternavnet og få systemet til å komponere det for deg som er umulig med ordinære søk. En driver eller et mellomlegg kan faktisk bruke tekstutskiftning, men det (a) legger til implementeringskostnader og (b) serverberegning og#x2F -tildelingskostnad, (c) mental overhead når du ser sporing av spørringen på serveren. Videre komponerer den dårlig med lagrede funksjoner og fremgangsmåter på serveren (etter min mening). Det er igjen ikke uoverstigelig, men det er en annen ting som tilfører friksjon. Til slutt, når du har en forespørsel som tar over 30 eller 50 parametere, må du bruke navngitte parametere. Ordinal posisjonering er for feilutsatt i stor skala.

- (D) Språkvalg på protokollnivå. PostgreSQL starter alltid utførelsen i ren SQL -kontekst. Hvis du alltid utfører funksjoner som PL /pgSQL, er det bare ekstra overhead. I tillegg er det ikke det enkleste å kjøre ad-hoc PL /pgSQL med navngitte parametere. Det er mulig, bare ikke lett. Denne funksjonen pluss navngitte parametere, så når jeg skriver min forespørsel, vet jeg (a) at jeg har alle mine sendte parametere tilgjengelig for meg bundet til navn og (b) det første tegnet jeg skriver er på språket jeg vil ha.

Kombinasjonen av disse funksjonene ville få applikasjoner utviklet i modell (2) til å gå fra ganske harde til ekstremt enkle. Det ville også gjøre andre utviklingsmåter lettere vil jeg også hevde.

Jeg vil merke at det kreves i Postgres for tilpassede typer å implementere i /out (tekstkoding), men ikke nødvendig for å implementere send /recv (binær koding.) I tilfelle send /recv ikke er implementert, faller datoen tilbake til bruk i /out selv over den binære protokollen.

Gitt antall tredjepartsutvidelser og enkelheten ved å lage dine egne tilpassede typer selv utenfor en utvidelse, forventer jeg at avskrivning av tekstprotokollen aldri vil skje. Det er til syvende og sist det kanoniske trådformatet for & quotdataportabilitet & quot i Postgres under pg_upgrades i større versjon, og til og med verdier i systeminterne typer som pg_lsn blir tekstkodet for å bli overført.

I mellomtiden er binær trådkoding (i motsetning til intern binær koding innenfor et nullpunkt) bare en ytelsesfunksjon. Det er derfor det ikke er helt spesifisert. De ønsker å kunne endre den binære trådkodingen av typer mellom større versjoner for å få mer ytelse, hvis de kan. (Tenk deg for eksempel numerisk endring fra en radix-10000 til en radix-255 binær ledningskoding i PG13. Ingen grunn til at det ikke kunne 't.)

Jeg ser dessverre ikke at vi fjerner teksttransporten. Kostnaden for å tvinge alle klienter til å håndtere marshalling i det binære formatet virker uoverkommelig for meg.

Hva bekymrer serveren /proxy /pool? Jeg ser ikke et problem der.

& gt Å ikke ha en innebygd kansellering (i samme TCP /IP -tilkobling) betyr at kansellering ikke støttes av mange drivere, og selv når det er det, er det mange kanttilfeller hvis det slutter å fungere. Hver klientimplementering må omgå dette.

Ja, det er virkelig ikke flott. Men det er langt fra klart hvordan man gjør det på en robust måte. Klienten som bare sender avbestillingslinjen i normal tilkobling, ville i utgangspunktet bety at serversiden alltid måtte lese alle ventende data fra klienten (og antagelig søl til disk).

TCP -presserende eller lignende kan løse det til en viss grad - men ikke så bra.

Jeg nøler litt med det, avhengig av hva det presise forslaget er.

Å måtte matche tekstparametere for tekst for en utarbeidet setning for hver kjøring er ikke bra. Overhead bør legges til per forberedelse, ikke per utførelse.

Hvis forslaget er at klienten på forberedelsestiden spesifiserer å sende navngitte parametere i en bestemt rekkefølge ved gjennomføringstidspunktet, har jeg ikke et problem med det (om det er nyttig nok til å rettferdiggjøre en endring i protokollen er et annet spørsmål).

& gt En driver eller et mellomlegg kan faktisk bruke tekstutskiftning. b) server beregning og#x2F tildelingskostnad

& gt - (D) Valg av språk på protokollnivå. PostgreSQL starter alltid utførelsen i ren SQL -kontekst. Hvis du alltid utfører funksjoner som PL /pgSQL, er det bare ekstra overhead. I tillegg er det ikke det enkleste å kjøre ad-hoc PL /pgSQL med navngitte parametere. Det er mulig, bare ikke lett. Denne funksjonen pluss navngitte parametere, så når jeg skriver spørringen min, vet jeg (a) at jeg har alle mine sendte parametere tilgjengelig for meg bundet til navn og (b) det første tegnet jeg skriver er på språket jeg vil ha.

Jeg kan ikke se at dette skjer. For det første har jeg vanskelig for å tro at språkforsendelsen er noen form for meningsfylt overhead (med mindre du mener for mennesket mens du skriver interaktivt?). Men også å lage forbindelser har en tilstand der innkommende data vil bli tolket helt annerledes, er en no-go imo. Gjør feilhåndtering mye mer komplisert, til ikke mye fordel.

Hva ville du føle om Postgres som lyttet over QUIC i stedet for /in tillegg til TCP?

Det virker for meg som å ha flere uavhengige fremskritt & quotflows & quot per socket, ville fikse både dette problemet, og gjør det mulig for klienter å holde færre stikkontakter åpne generelt (da de kan beholde hele tilkoblingsbassenget som tilkoblede strømmer på én QUIC -kontakt.)

Du må gjøre noe fancy for å dirigere meldinger til backends i et slikt tilfelle, men ikke også fancy-det ser ut som et enda dypere hierarki av gaffel (2), hvor aksepteren med gaffelkontakt blir en mini-postmester med backens for hver av disse sokkelstrømmene, ikke bare gyting, men også proxy-meldinger til dem.

Som en bonusfordel kan en QUIC-tilkobling også asynkronisere push-feil og#x2Fnotices skapte & quotduring & quot en langvarig kommando (f.eks. En KOPI) som sine egne nye barnestrømmer, merket med den overordnede flyt-IDen de stammer fra. Samme for meldinger fra LISTEN.

På et tidspunkt? Sannsynligvis ikke en dårlig idé. Akkurat nå? Tviler på at det er verdt det - stabelen virker ikke klar ennå.

& gt og gjør det mulig for klienter å holde færre stikkontakter åpne generelt (da de kunne beholde hele tilkoblingsbassenget som tilkoblede strømmer på én QUIC -kontakt.)

Jeg tror ikke det vil være et meningsfylt skritt mot det.

Vi må i utgangspunktet flytte til en gjenget modell for å forbedre situasjonen betydelig.

& gt Du må gjøre noe fancy for å rute meldinger til backends i et slikt tilfelle, men ikke for fancy-det ser ut som et enda dypere hierarki av gaffel (2) s, der akselen med gaffelkontakt blir en mini- postmaster med backens for hver av disse strømmen, ikke bare gyting, men også proxy -meldinger til dem.

Kommer ikke til å skje. De ekstra kontekstbryterne vil være en veldig betydelig økning i overhead. Prosessene i seg selv er bare gratis. Postmester som ikke er nærmeste forelder, ville komplisere statshåndteringen en god del.

For alt binært må klienten vite om alle datatyper og hvordan de skal representere dem på vertsspråket. Men det virker rotete. Vurder NUMERIC vs. float vs. int4 vs int8: bør klienten virkelig vite hvordan han skal analysere alle disse fra binær? Det er mer fornuftig å optimalisere noen få vanlige datatyper som skal overføres som binære, og resten vil gå gjennom tekst. Det fungerer også bedre med det utvidbare typen system, der klientdriveren aldri vil vite om alle datatyper brukeren kanskje vil bruke. Og det fungerer bedre for ting som psql, som trenger en tekstlig fremstilling.

Hovedproblemet med binær er at & quotoptimere noen få kolonner som binære & quot kan helt gjøres i driveren. Sjåføren vet hvilke typer den kan analysere, men den vet ikke hvilke typer en gitt spørring vil returnere. Applikasjonsprogrammereren kan vite hvilke typer spørringen vil returnere, i så fall kan de spesifisere for å returnere dem i binær hvis de vet hvilke som støttes av klientdriveren, men det er stygt (og i libpq støtter det bare alle- binær eller heltekst). Postgres kan kjenne datatypene, men det betyr at sjåføren først må forberede spørringen (som noen ganger er en god idé uansett, men andre ganger er rundreisen ikke verdt det).

& quot Har ikke en inline kansellering (i samme TCP /IP -tilkobling) & quot

Dette er relatert til et annet problem, som er at mens en spørring utføres, gidder den ikke å berøre kontakten i det hele tatt. Det betyr at klienten kan koble fra og spørringen kan fortsette å kjøre en stund, noe som åpenbart er ubrukelig. Jeg prøvde å fikse dette på et tidspunkt, men det var et par problemer, og jeg fulgte ikke opp. Oppdagelse av klientfrakobling bør sannsynligvis gjøres skjønt.

Å støtte avbestilling ville være vanskeligere enn bare å lete etter en klientfrakobling, fordi det potensielt er mye data på kontakten (pipelined queries), så det må lese alle meldingene som kommer inn for å se etter en kansellering, og må lagre alt et sted i tilfelle det ikke er kansellering. Jeg tror dette ville ødelegge spørringsrørledningen, fordi nye forespørsler kan komme inn raskere enn de blir utført, og det ville føre til kontinuerlig minnevekst (fra alle de lagrede sokkeldataene).

So it looks like out-of-band is the only way cancellation will really work, unless I'm missing something.

"Multiple Result Sets. you just call the database alot"

Do pipelined queries help at all here?

"Named parameters are extremely useful for building up query parameters"

"Protocol level language selection"

I'm still trying to wrap my head around this idea. I think I understand what you are saying and it sounds cool. There are some weird implications I'm sure, but it sounds like it's worth exploring.

We return the types of the result set separately even when not preparing. The harder part is doing it without adding roundtrips.

I've argued before that we should allow the client to specify which types it wants as binary, unless explicitly specified. IMO that's the only way to solve this incrementally from where we currently are.

> Do pipelined queries help at all here?

We really need to get the libpq support for pipelining merged :(

I don't understand the idea, can you clarify?

That way a driver can add handling for

10 builtin types (bytea, int[48], float[48], timestamp, . ) that matter from a size𯻿iciency POV, without needing to handle all the other types. Thatɽ provide a large large fraction of the potential benefit of handling binary for all types.

The reason for the server side list is that otherwise I don't see how you could do it without an added roundtrip.

I lucked up and ended up with a real hacker for a boss. As early as 2001-2002 he had saved entire businesses by migrating them from mysql to postgres.

He was a BSD guy and a postgres guy. He made me into a fanboy of both those technologies.

So out of sheer luck I've preferred Postgres for over 15 years, and it has never disappointed me.

Unlike BSD, which often disappointed me once I learned how much easier and mature Linux was to use.

MySql was pretty bad in the first versions. I'm in the enterprise˾rp development world, and when I look at mysql when it start to show in the radar, I can't believe the joke.

MySql get good around 5? Now I can say all major DBs are good enough not matter what you chosee, (still think PG is the best around) but MySql was always the more risky proposition, the PHP of the db engines.

So far I've only setup one master/slave cluster with pgpool-II in postgres and it's definitely an OK setup. But I much prefer the usability and stability of Galera/MariaDB for clustering.

I was with you right until that last sentence. I'm not going to offer a counterargument because your statement is extremely genralised and ripe for flamewars but I will say it's not as clear cut as you stated.

With the exception of package management (at least with debian) I've found the opposite to be true. It's configuration has always been a bit of a mess, especially with regards to networking. Lately systemd has made things only more confusing. And that's before dealing with the myriad of ways different distributions do things (which thankfully now is really only 2 different bases, debian or red hat).

While linux "won" in the end and I use it professionally now, I'm glad I rarely have to interact with it directly anymore thanks to ansible or other orchestration tools.

I'm extremely curious how this worked out.

But all I know is that they had been throwing hardware on a MySQL install to make it work better.

He migrated them to postgres and they got much better performance and could get away with less hardware than they had with mysql.

That was as much detail that I remember. Keep in mind I said by sheer luck I became a fanboy. Not by experience and competence. That came later.

A database for competent users can be amazingly simple and fast. But the Market Has Spoken, loud and clear: databases must absorb an indefinitely large amount of complexity to make the job of app writers a tiny bit easier.

I think there are definitely cases where DB needs to compensate for bad architecture, but then even competent developers can profit from the flexibility of being able to ad new features ad hoc to an existing db schema˺rchitecture and the DB just magically bailing them out.

Can anyone recommend a good client for PostgreSQL?

[1] - I see that there have been some new releases in 2020 so I ought to check on them. The version I tried earlier was 4.11.

Native cross-platform and works across dozens of databases with lots of features.


June 20, 2013

Lucene/Solr Revolution 2013 San Diego (Video Index)

Videos from Lucene/Solr Revolution 2013 San Diego (April 29th – May 2nd, 2013)

Sorted by author, duplicates removed, etc.

These videos merit far more views than they have today. Pass this list along.

Work through the videos and related docs. There are governments out there that want useful search results.

James Atherton, Search Team Lead, 7digital Implementing Search with Solr at 7digital

A usage/case study, describing our journey as we implemented Lucene/Solr, the lessons we learned along the way and where we hope to go in the future.How we implemented our instant search/search suggest. How we handle trying to index 400 million tracks and metadata for over 40 countries, comprising over 300GB of data, and about 70GB of indexes. Finally where we hope to go in the future.

Ben Brown, Software Architect, Cerner Corporation Brahe – Mass scale flexible indexing

Our team made their first foray into Solr building out Chart Search, an offering on top of Cerner's primary EMR to help make search over a patient's chart smarter and easier. After bringing on over 100 client hospitals and indexing many tens of billions of clinical documents and discrete results we've (thankfully) learned a couple of things.

The traditional hashed document ID over many shards and no easily accessible source of truth doesn't make for a flexible index.
Learn the finer points of the strategy where we shifted our source of truth to HBase. How we deploy new indexes with the click of a button, take an existing index and expand the number of shards on the fly, and several other fancy features we enabled.

Ted Dunning, Chief Application Architect, MapR & Grant Ingersoll, Chief Technology Officer, LucidWorks Crowd-sourced intelligence built into Search over Hadoop

Search has quickly evolved from being an extension of the data warehouse to being run as a real time decision processing system. Search is increasingly being used to gather intelligence on multi-structured data leveraging distributed platforms such as Hadoop in the background. This session will provide details on how search engines can be abused to use not text, but mathematically derived tokens to build models that implement reflected intelligence. In such a system, intelligent or trend-setting behavior of some users is reflected back at other users. More importantly, the mathematics of evaluating these models can be hidden in a conventional search engine like SolR, making the system easy to build and deploy. The session will describe how to integrate Apache Solr/Lucene with Hadoop. Then we will show how crowd-sourced search behavior can be looped back into analysis and how constantly self-correcting models can be created and deployed. Finally, we will show how these models can respond with intelligent behavior in realtime.

In this presentation we aim to show how to make a high availability Solr cloud with 4.1 using only Solr and a few bash scripts. The goal is to present an infrastructure which is self healing using only cheap instances based on ephemeral storage. We will start by providing a comprehensive overview of the relation between collections, Solr cores, shardes, and cluster nodes. We continue by an introduction to Solr 4.x clustering using zookeeper with a particular emphasis on cluster state status/monitoring and solr collection configuration. The core of our presentation will be demonstrated using a live cluster.

We will show how to use cron and bash to monitor the state of the cluster and the state of its nodes. We will then show how we can extend our monitoring to auto generate new nodes, attach them to the cluster, and assign them shardes (selecting between missing shardes or replication for HA). We will show that using a high replication factor it is possible to use ephemeral storage for shards without the risk of data loss, greatly reducing the cost and management of the architecture. Future work discussions, which might be engaged using an open source effort, include monitoring activity of individual nodes as to scale the cluster according to traffic and usage.

Trey Grainger, Search Technology Development Manager, CareerBuilder Building a Real-time, Big Data Analytics Platform with Solr

Having "big data" is great, but turning that data into actionable intelligence is where the real value lies. This talk will demonstrate how you can use Solr to build a highly scalable data analytics engine to enable customers to engage in lightning fast, real-time knowledge discovery.

At CareerBuilder, we utilize these techniques to report the supply and demand of the labor force, compensation trends, customer performance metrics, and many live internal platform analytics. You will walk away from this talk with an advanced understanding of faceting, including pivot-faceting, geo/radius faceting, time-series faceting, function faceting, and multi-select faceting. You'll also get a sneak peak at some new faceting capabilities just wrapping up development including distributed pivot facets and percentile/stats faceting, which will be open-sourced.

The presentation will be a technical tutorial, along with real-world use-cases and data visualizations. After this talk, you'll never see Solr as just a text search engine again.

Got a tough problem with your Solr or Lucene application? Vendt
challenges that you'd like some advice on? Looking for new approaches to
overcome a Lucene/Solr issue? Not sure how to get the results you
expected? Don't know where to get started? Then this session is for you.

Now, you can get your questions answered live, in front of an audience of
hundreds of Lucene Revolution attendees! Back again by popular demand,
"Stump the Chump" at Lucene Revolution 2013 puts Chris Hostetter (aka Hoss) in the hot seat to tackle questions live.

All you need to do is send in your questions to us here at
[email protected] You can ask anything you like, but consider
topics in areas like: Data modelling Query parsing Tricky faceting Text analysis Scalability

You can email your questions to [email protected] Vær så snill
describe in detail the challenge you have faced and possible approach you
have taken to solve the problem. Anything related to Solr/Lucene is fair game.

Our moderator, Steve Rowe, will will read the questions, and Hoss have to formulate a solution on the spot. A panel of judges will decide if he has provided an effective answer. Prizes will be awarded by the panel for the best question – and for those deemed to have "Stumped the Chump".

Rahul Jain, System Analyst (Software Engineer), IVY Comptech Pvt Ltd Building a Near Real-time Search Engine and Analytics for logs using Solr

Consolidation and Indexing of logs to search them in real time poses an array of challenges when you have hundreds of servers producing terabytes of logs every day. Since the log events mostly have a small size of around 200 bytes to few KBs, makes it more difficult to handle because lesser the size of a log event, more the number of documents to index. In this session, we will discuss the challenges faced by us and solutions developed to overcome them. The list of items that will be covered in the talk are as follows.

Methods to collect logs in real time.
How Lucene was tuned to achieve an indexing rate of 1 GB in 46 seconds
Tips and techniques incorporated/used to manage distributed index generation and search on multiple shards
How choosing a layer based partition strategy helped us to bring down the search response times.
Log analysis and generation of analytics using Solr.
Design and architecture used to build the search platform.

Mikhail Khludnev, eCommerce Search Platform, Grid Dynamics Concept Search for eCommerce with Solr

This talk describes our experience in eCommerce Search: challenges which we've faced and the chosen approaches. It's not indented to be a full description of implementation, because too many details need to be touched. This talk is more like problem statement and general solutions description, which have a number of points for technical or even academic discussion. It's focused on text search use-case, structures (or scoped) search is out of agenda as well as faceted navigation.

Hilary Mason, Chief Scientist, bitly Search is not a solved problem.

Remi Mikalsen, Search Engineer, The Norwegian Centre for ICT in Education Multi-faceted responsive search, autocomplete, feeds engine and logging

Learn how utdanning.no leverages open source technologies to deliver a blazing fast multi-faceted responsive search experience and a flexible and efficient feeds engine on top of Solr 3.6. Among the key open source projects that will be covered are Solr, Ajax-Solr, SolrPHPClient, Bootstrap, jQuery and Drupal. Notable highlights are ajaxified pivot facets, multiple parents hierarchical facets, ajax autocomplete with edge-n-gram and grouping, integrating our search widgets on any external website, custom Solr logging and using Solr to deliver Atom feeds. utdanning.no is a governmental website that collects, normalizes and publishes study information for related to secondary school and higher education in Norway. With 1.2 million visitors each year and 12.000 indexed documents we focus on precise information and a high degree of usability for students, potential students and counselors.

As the NoSQL ecosystem looks to integrate great search, great search is naturally beginning to expose many NoSQL features. Will these Goliath's collide? Or will they remain specialized while intermingling — two sides of the same coin.
Come learn about where SolrCloud fits into the NoSQL landscape. What can it do? What will it do? And how will the big data, NoSQL, Search ecosystem evolve. If you are interested in Big Data, NoSQL, distributed systems, CAP theorem and other hype filled terms, than this talk may be for you.

Dragan Milosevic, Senior Architect, zanox Analytics in OLAP with Lucene and Hadoop

Analytics powered by Hadoop is powerful tool and this talk addresses its application in OLAP built on top of Lucene. Many applications use Lucene indexes also for storing data to alleviate challenges concerned with external data sources. The analyses of queries can reveal stored fields that are in most cases accessed together. If one binary compressed field replaces those fields, amount of data to be loaded is reduced and processing of queries is boosted. Furthermore, documents that are frequently loaded together can be identified. If those documents are saved in almost successive positions in Lucene stored files, benefits from file-system caches are improved and loading of documents is noticeably faster.

Large-scale searching applications typically deploy sharding and partition documents by hashing. The implemented OLAP has shown that such hash-based partitioning is not always an optimal one. An alternative partitioning, supported by analytics, has been developed. It places documents that are frequently used together in same shards, which maximizes the amount of work that can be locally done and reduces the communication overhead among searchers. As an extra bonus, it also identifies slow queries that typically point to emerging trends, and suggests the addition of optimized searchers for handling similar queries.

In search, language handling is often key to getting a good search experience. This talk gives an overview of language handling and linguistics functionality in Lucene/Solr and best-practices for using them to handle Western, Asian and multi-language deployments. Pointers and references within the open source and commercial eco-systems for more advanced linguistics and their applications are also discussed.

The presentation is mix of overview and hands-on best-practices the audience can benefit immediately from in their Lucene/Solr deployments. The eco-system part is meant to inspire how more advanced functionality can be developed by means of the available open source technologies within the Apache eco-system (predominantly) while also highlighting some of the commercial options available.

Chandra Mouleeswaran, Co Chair at Intellifest.org, ThreatMetrix Rapid pruning of search space through hierarchical matching

This talk will present our experiences in using Lucene/Solr to the classification of user and device data. On a daily basis, ThreatMetrix, Inc., handles a huge volume of volatile data. The primary challenge is rapidly and precisely classifying each incoming transaction, by searching a huge index within a very strict latency specification. The audience will be taken through the various design choices and the lessons learned. Details on introducing a hierarchical search procedure that systematically divides the search space into manageable partitions, yet maintaining precision, will be presented.

Kathy Phillips, Enterprise Search Services Manager/VP, Wells Fargo & Co. & Tom Lutmer, eBusiness Systems Consultant, Enterprise Search Services team, Wells Fargo & Co Beyond simple search — adding business value in the enterprise

What is enterprise search? Is it a single search box that spans all enterprise resources or is it much more than that? Explore how enterprise search applications can move beyond simple keyword search to add unique business value. Attendees will learn about the benefits and challenges to different types of search applications such as site search, interactive search, search as business intelligence, and niche search applications. Join the discussion about the possibilities and future direction of new business applications within the enterprise.

David Piraino and Daniel Palmer, Chief Imaging Information Officers, Imaging Institute Cleveland Clinic, Cleveland Clinic Next Generation Electronic Medical Records and Search: A Test Implementation in Radiology

Most patient specifc medical information is document oriented with varying amounts of associated meta-data. Most of pateint medical information is textual and semi-structured. Electronic Medical Record Systems (EMR) are not optimized to present the textual information to users in the most understandable ways. Present EMRs show information to the user in a reverse time oriented patient specific manner only. This talk discribes the construction and use of Solr search technologies to provide relevant historical information at the point of care while intepreting radiology images.

Radiology reports over a 4 year period were extracted from our Radiology Information System (RIS) and passed through a text processing engine to extract the results, impression, exam description, location, history, and date. Fifteen cases reported during clinical practice were used as test cases to determine if ""similar"" historical cases were found . The results were evaluated by the number of searches that returned any result in less than 3 seconds and the number of cases that illustrated the questioned diagnosis in the top 10 results returned as determined by a bone and joint radiologist. Also methods to better optimize the search results were reviewed.

An average of 7.8 out of the 10 highest rated reports showed a similar case highly related to the present case. The best search showed 10 out of 10 cases that were good examples and the lowest match search showed 2 out of 10 cases that were good examples.The talk will highlight this specific use case and the issues and advances of using Solr search technology in medicine with focus on point of care applications.

My presentation focuses on how we implemented Solr 4.1 to be the cornerstone of our social marketing analytics platform. Our platform analyzes relationships, behaviors, and conversations between 30,000 brands and 100M social accounts every 15 minutes. Combined with our Hadoop cluster, we have achieved throughput rates greater than 8,000 documents per second. Our index currently contains more than 500,000,000 documents and is growing by 3 to 4 million documents per day.

The presentation will include details about:

Designing a Solr Cloud cluster for scalability and high-availability using sharding and replication with Zookeeper
Operations concerns like how to handle a failed node and monitoring
How we deal with indexing big data from Pig/Hadoop as an example of using the CloudSolrServer in SolrJ and managing searchers for high indexing throughput
Example uses of key features like real-time gets, atomic updates, custom hashing, and distributed facets. Attendees will come away from this presentation with a real-world use case that proves Solr 4.1 is scalable, stable, and is production ready. (note: we are in production on 18 nodes in EC2 with a recent nightly build off the branch_4x).

TYPO3 is an Open Source Content Management System that is very popular in Europe, especially in the German market, and gaining traction in the U.S., too.

TYPO3 is a good example of how to integrate Solr with a CMS. The challenges we faced are typical of any CMS integration. We came up with solutions and ideas to these challenges and our hope is that they might be of help for other CMS integrations as well.

That includes content indexing, file indexing, keeping track of content changes, handling multi-language sites, search and facetting, access restrictions, result presentation, and how to keep all these things flexible and re-usable for many different sites.

For all these things we used a couple additional Apache projects and we would like to show how we use them and how we contributed back to them while building our Solr integration.

David Smiley, Software Systems Engineer, Lead, MITRE Lucene / Solr 4 Spatial Deep Dive

Lucene's former spatial contrib is gone and in its place is an entirely new spatial module developed by several well-known names in the Lucene/Solr spatial community. The heart of this module is an approach in which spatial geometries are indexed using edge-ngram tokenized geohashes searched with a prefix-tree/trie recursive algorithm. It sounds cool and it is! In this presentation, you'll see how it works, why it's fast, and what new things you can do with it. Key features are support for multi-valued fields, and indexing shapes with area — even polygons, and support for various spatial predicates like "Within". You'll see a live demonstration and a visual representation of geohash indexed shapes. Finally, the session will conclude with a look at the future direction of the module.

David Smiley, Software Systems Engineer, Lead, MITRE Text Tagging with Finite State Transducers

OpenSextant is an unstructured-text geotagger. A core component of OpenSextant is a general-purpose text tagger that scans a text document for matching multi-word based substrings from a large dictionary. Harnessing the power of Lucene's state-of-the-art finite state transducer (FST) technology, the text tagger was able to save over 40x the amount of memory estimated for a leading in-memory alternative. Lucene's FSTs are elusive due to their technical complexity but overcoming the learning curve can pay off handsomely.

In this talk I will explain how we combine a mixed architecture using Hadoop for batch indexing and Storm, HBase and Zookeeper to keep our indexes updated in near real time.Will talk about why we didn't choose just a default Solr Cloud and it's real time feature (mainly to avoid hitting merges while serving queries on the slaves) and the advantages and complexities of having a mixed architecture. Both parts of the infrastucture and how they are coordinated will be explained with details.Finally will mention future lines, how we plan to use Lucene real time feature.

Search is not just a box and ten blue links. Search is a journey: an exploration where what we encounter along the way changes what we seek. But in order to guide people along this journey, we must understand both the art and science of search.In this talk Tyler Tate, cofounder of TwigKit and coauthor of the new book Designing the Search Experience, weaves together the theories of information seeking with the practice of user interface design, providing a comprehensive guide to designing search.Pulling from a wealth of research conducted over the last 30 years, Tyler begins by establishing a framework of search and discovery. He outlines cognitive attributes of users—including their level of expertise, cognitive style, and learning style describes models of information seeking and how they've been shaped by theories such as information foraging and sensemaking and reviews the role that task, physical, social, and environmental context plays in the search process.

Tyler then moves from theory to practice, drawing on his experience of designing 50+ search user interfaces to provide practical guidance for common search requirements. He describes best practices and demonstrates reams of examples for everything from entering the query (including the search box, as-you-type suggestions, advanced search, and non-textual input), to the layout of search results (such as lists, grids, maps, augmented reality, and voice), to result manipulation (e.g. pagination and sorting) and, last but not least, the ins-and-outs of faceted navigation. Through it all, Tyler also addresses mobile interface design and how responsive design techniques can be used to achieve cross-platform search.This intensive talk will enable you to create better search experiences by equipping you with a well-rounded understanding of the theories of information seeking, and providing you with a sweeping survey of search user interface best practices.

Troy Thomas, Senior Manager, Internet Enabled Services, Synopsys & Koorosh Vakhshoori, Software Architect,Synopsys Make your GUI Shine with AJAX-Solr

With AJAX-Solr, you can implement widgets like faceting, auto-complete, spellchecker and pagination quickly and elegantly. AJAX-Solr is a JavaScript library that uses the Solr REST-like API to display search results in an interactive user interface. Come learn why we chose AJAX-Solr and Solr 4 for the SolvNet search project. Get an overview of the AJAX-Solr framework (Manager, Parameters, Widgets and Theming). Get a deeper understanding of the technical concepts using real-world examples. Best practices and lessons learned will also be presented.

Gilt Groupe is an innovative online shopping destination offering its members special access to the most inspiring merchandise, culinary offerings, and experiences every day, many at insider prices. Every day new merchandising is offered for sale at discounts of up to 70%. Sales start at 12 noon EST resulting in an avalanche of hits to the site, so delivering a rich user experience requires substantial technical innovation.

Implementing search for a flash-sales business, where inventory is limited and changes rapidly as our sales go live to a stampede of members every noon, poses a number of technical challenges. For example, with small numbers of fast moving inventory we want to be sure that search results reflect those products we still have available for sale. Also, personalizing search — where search listings may contain exclusive items that are available only to certain users — was also a big challenge

Gilt has built out keyword search using Scala, Play Framework and Apache Solr / Lucene. The solution, which involves less than 4,000 lines of code, comfortably provides search results to members in under 40ms. In this talk, we'll give a tour of the logical and physical architecture of the solution, the approach to schema definition for the search index, and how we use custom filters to perform personalization and enforce product availability windows. We'll discuss lessons learnt, and describe how we plan to adopt Solr to power sale, brand, category and search listings throughout all of Gilt's estate.

Doug Turnbull, Search and Big Data Architect, OpenSource Connections State Decoded: Empowering The Masses with Open Source State Law Search

The Law has traditionally been a topic dominated by an elite group of experts. Watch how State Decoded has transformed the law from a scary, academic topic to a friendly resource that empowers everyone using Apache Solr. This talk is a call to action for discovery and design to break open ivory towers of expertise by baking rich discovery into your UI and data structures.