© Findwise 2015-03-25
Apache Solr – silnik wyszukiwania jako
baza NOSQL
O mnie
• Konsultant w Findwise
• Lucene / Solr / ElasticSearch
• Poza tym NoSQL, Hadoop, NLP
• JAVA
• IR, ES, KM, IM, PM
http://www.meetup.com/es-warsaw
http://www.linkedin.com/in/sobczakt
http://twitter.com/sobczakt
Agenda
• Silnik wyszukiwania
• Apache Solr
• NoSQL
• Solr Cloud
Silnik wyszukiwania
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem.
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem.
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem.
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica
2 W izba gościnny siedzieć panna Aleksandra sam na sam z Kmicic
1 Oko panna Aleksandra spocząć błyskawica na twarz Kmicic
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem.
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica
2 W izba gościnny siedzieć panna Aleksandra sam na sam z Kmicic
1 Oko panna Aleksandra spocząć błyskawica na twarz Kmicic
2 w izba gościnny siedzieć panna aleksandra sam na sam z kmicic
1 oko panna aleksandra spocząć błyskawica na twarz kmicic
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
q: oczy panny Aleksandry
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
q: oczy panny Aleksandry
AND
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
q: oko panna Aleksandra
AND
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
q: oko panna aleksandra
AND
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
q: oko panna aleksandra
AND
oko 1
panna 1 2
aleksandra 1 2
spocząć 1
błyskawica 1
na 1 2
twarz 1
kmicic 1 2
w 2
izba 2
gościnny 2
siedzieć 2
sam 2
z 2
q: oko panna aleksandra
AND
q: oko panna aleksandra
AND
1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
Apache Solr
Apache Solr
• Advanced Full-Text Search Capabilities
• Optimized For High Volume Web Traffic
• Standards Based Open Interfaces - XML And HTTP
• Comprehensive HTML Administration Interfaces
• Server statistics exposed over JMX for monitoring
• Scalability - efficient replication to other Solr Search Servers
• Flexible and Adaptable with XML configuration
• Extensible Plugin Architecture
Apache Solr
• Relevance calculations
• Search with wildcards
• Fuzzy search
• Number & date searching
• Facets
• Spelling assistance
• Find similar documents
• Distribute indexing and query load among servers
• Replication & backups
Apache Solr
Index
Query
Request
Handler
Response
Writer
Response
UpdateHandler
Solr
Lucene
Data Source
Apache Solr
NoSQL
NoSQL
• Not Only SQL, a nie No SQL
• Olbrzymie ilości danych
• Skalowanie i wydajność
• Bezpieczeństwo nie jest priorytetem (ACID)
• Liczy się przepustowość i opóźnienia
• Budowanie rozproszonych klastrów danych
• Odporność na błędy, wysoka dostępność
• Różnorodność danych
• Schemaless
NoSQL
• Key – Value
• Document
• Columnar
• Graph
NoSQL
• Key – Value
K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”}
• Document
• Columnar
• Graph
NoSQL
• Key – Value
K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”}
• Document
{Name: ”Findwise”, {Street: „Wspólna 35 / 16”, City: ”Warszawa”} }
• Columnar
• Graph
NoSQL
• Key – Value
K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”}
• Document
{Name: ”Findwise”, {Street: „Wspólna 35 / 16”, City: ”Warszawa”} }
• Columnar
• Graph
1
Name Street City
Findwise Wspólna 35 / 16 Warszawa
NoSQL
• Key – Value
K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”}
• Document
{Name: ”Findwise”, {Street: „Wspólna 35 / 16”, City: ”Warszawa”} }
• Columnar
• Graph
1
Name Street City
Findwise Wspólna 35 / 16 Warszawa
NoSQL
• Key – Value
• Hazelcast, Redis, Berkeley DB
• Columnar
• Cassandra, Hbase
• Document
• MongoDB, CouchDB, Couchbase
• Graph
• Neo4J, InfiniteGraph
NoSQL
NoSQL
• AP lub CP
• Kompromis między availability, a consistency
• CA
• Brak wsparcia dla partition tolerance
NoSQL
• Distribution model
• sharding, replication, master-slave, peer-to-peer
• Write, read, sequential consistency
• Optimistic / pessimistic locks, conflict resolution
• Data versioning
Solr Cloud
• Document based NoSQL
• JSON, XML, CSV, binary / schemaless
• CP (consistency & partition tolerance)
• Update durability
• Real-time Get (NRT)
• Versioning and Optimistic Locking
• Scalability
• Distributed indexing
• No single points of failure
Solr Cloud
Solr Cloud
ZooKeeper
host(s)
Leader
Shard 1
Leader
Shard 2
Leader
Shard 3
Replica
Shard 1
Replica
Shard 2
Replica
Shard 3
Solr Cloud
Solr Cloud
ZooKeeper
host(s)
Leader
Shard 1
Leader
Shard 2
Replica
Shard 1
Replica
Shard 2
Data Source
Query ResponseSolrJ Client
Load
Balancer
Solr Cloud
ZooKeeper
host(s)
Leader
Shard 1
Leader
Shard 2
Replica
Shard 1
Replica
Shard 2
Leader
Shard 1
Leader
Shard 2
Replica
Shard 1
Replica
Shard 2
Solr Cloud
ZooKeeper
host(s) Leader
Shard 1
Leader
Shard 2
Replica
Shard 1
Replica
Shard 2
Leader
Shard 1
Leader
Shard 2
Replica
Shard 1
Replica
Shard 2
ZooKeeper
host(s)
Solr Cloud
shard1
replica2
replica3
http://.../solr/collection1/update
replica1
shard2
replica2
replica3
replica1
Solr Cloud
shard1
replica2
replica3
http://.../solr/collection1/query?q=findwise
Load-balanced
sub-request
replica1
shard2
replica2
replica3
replica1
Solr Cloud
1. /get
Document
2. modify
_version_
Document
3. /update
4. go back if
version conflict
Solr Cloud
Tlog:
• Umożliwia rejestrowanie wszystkich zmian
• Każdy node ma własny tlog
• Nowa replika komunikuje się z liderem i jego tlog służy do
zbudowania indeksu
• Przechowuje niezacommitowane dokumenty
• Umożliwia:
• NRT (/get)
• Recovery
• peer sync
1. a
2. Apache Solr
• facets, filtering, highlighting, clustering, spellcheck, suggestions, monitoring, cache etc.
3. NoSQL
• CAP – AP lub CP
4. Solr Cloud
• Document based, CP
Podsumowanie
1 oko panna aleksandra spocząć błyskawica na twarz kmicic
Wyszukiwanie w plikach audio
Warszawska Wyższa Szkoła Informatyki
Lewartowskiego 17, Warsaw
Thursday, February 26, 2015
7:00 PM
Wyszukiwanie w plikach audio
Warszawska Wyższa Szkoła Informatyki
Lewartowskiego 17, Warsaw
Thursday, February 26, 2015
7:00 PM
© Findwise 2015-03-25
tomasz.sobczak@findwise.com

Apache Solr as NoSQL database

  • 1.
    © Findwise 2015-03-25 ApacheSolr – silnik wyszukiwania jako baza NOSQL
  • 2.
    O mnie • Konsultantw Findwise • Lucene / Solr / ElasticSearch • Poza tym NoSQL, Hadoop, NLP • JAVA • IR, ES, KM, IM, PM http://www.meetup.com/es-warsaw http://www.linkedin.com/in/sobczakt http://twitter.com/sobczakt
  • 3.
    Agenda • Silnik wyszukiwania •Apache Solr • NoSQL • Solr Cloud
  • 4.
  • 5.
    2 W izbiegościnnej siedziała panna Aleksandra sam na sam z Kmicicem. 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
  • 6.
    2 W izbiegościnnej siedziała panna Aleksandra sam na sam z Kmicicem. 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica. 2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica
  • 7.
    2 W izbiegościnnej siedziała panna Aleksandra sam na sam z Kmicicem. 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica. 2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica 2 W izba gościnny siedzieć panna Aleksandra sam na sam z Kmicic 1 Oko panna Aleksandra spocząć błyskawica na twarz Kmicic
  • 8.
    2 W izbiegościnnej siedziała panna Aleksandra sam na sam z Kmicicem. 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica. 2 W izbie gościnnej siedziała panna Aleksandra sam na sam z Kmicicem 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica 2 W izba gościnny siedzieć panna Aleksandra sam na sam z Kmicic 1 Oko panna Aleksandra spocząć błyskawica na twarz Kmicic 2 w izba gościnny siedzieć panna aleksandra sam na sam z kmicic 1 oko panna aleksandra spocząć błyskawica na twarz kmicic
  • 9.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2
  • 10.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2 q: oczy panny Aleksandry
  • 11.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2 q: oczy panny Aleksandry AND
  • 12.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2 q: oko panna Aleksandra AND
  • 13.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2 q: oko panna aleksandra AND
  • 14.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2 q: oko panna aleksandra AND
  • 15.
    oko 1 panna 12 aleksandra 1 2 spocząć 1 błyskawica 1 na 1 2 twarz 1 kmicic 1 2 w 2 izba 2 gościnny 2 siedzieć 2 sam 2 z 2 q: oko panna aleksandra AND
  • 16.
    q: oko pannaaleksandra AND 1 Oczy panny Aleksandry spoczęły błyskawicą na twarzy Kmicica.
  • 17.
  • 18.
    Apache Solr • AdvancedFull-Text Search Capabilities • Optimized For High Volume Web Traffic • Standards Based Open Interfaces - XML And HTTP • Comprehensive HTML Administration Interfaces • Server statistics exposed over JMX for monitoring • Scalability - efficient replication to other Solr Search Servers • Flexible and Adaptable with XML configuration • Extensible Plugin Architecture
  • 19.
    Apache Solr • Relevancecalculations • Search with wildcards • Fuzzy search • Number & date searching • Facets • Spelling assistance • Find similar documents • Distribute indexing and query load among servers • Replication & backups
  • 20.
  • 21.
  • 25.
  • 26.
    NoSQL • Not OnlySQL, a nie No SQL • Olbrzymie ilości danych • Skalowanie i wydajność • Bezpieczeństwo nie jest priorytetem (ACID) • Liczy się przepustowość i opóźnienia • Budowanie rozproszonych klastrów danych • Odporność na błędy, wysoka dostępność • Różnorodność danych • Schemaless
  • 27.
    NoSQL • Key –Value • Document • Columnar • Graph
  • 28.
    NoSQL • Key –Value K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”} • Document • Columnar • Graph
  • 29.
    NoSQL • Key –Value K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”} • Document {Name: ”Findwise”, {Street: „Wspólna 35 / 16”, City: ”Warszawa”} } • Columnar • Graph
  • 30.
    NoSQL • Key –Value K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”} • Document {Name: ”Findwise”, {Street: „Wspólna 35 / 16”, City: ”Warszawa”} } • Columnar • Graph 1 Name Street City Findwise Wspólna 35 / 16 Warszawa
  • 31.
    NoSQL • Key –Value K: „ Findwise” V: {„Wspólna 35 / 16, Warszawa”} • Document {Name: ”Findwise”, {Street: „Wspólna 35 / 16”, City: ”Warszawa”} } • Columnar • Graph 1 Name Street City Findwise Wspólna 35 / 16 Warszawa
  • 32.
    NoSQL • Key –Value • Hazelcast, Redis, Berkeley DB • Columnar • Cassandra, Hbase • Document • MongoDB, CouchDB, Couchbase • Graph • Neo4J, InfiniteGraph
  • 33.
  • 34.
    NoSQL • AP lubCP • Kompromis między availability, a consistency • CA • Brak wsparcia dla partition tolerance
  • 35.
    NoSQL • Distribution model •sharding, replication, master-slave, peer-to-peer • Write, read, sequential consistency • Optimistic / pessimistic locks, conflict resolution • Data versioning
  • 36.
  • 37.
    • Document basedNoSQL • JSON, XML, CSV, binary / schemaless • CP (consistency & partition tolerance) • Update durability • Real-time Get (NRT) • Versioning and Optimistic Locking • Scalability • Distributed indexing • No single points of failure Solr Cloud
  • 38.
    Solr Cloud ZooKeeper host(s) Leader Shard 1 Leader Shard2 Leader Shard 3 Replica Shard 1 Replica Shard 2 Replica Shard 3
  • 39.
    Solr Cloud Solr Cloud ZooKeeper host(s) Leader Shard1 Leader Shard 2 Replica Shard 1 Replica Shard 2 Data Source Query ResponseSolrJ Client Load Balancer
  • 40.
    Solr Cloud ZooKeeper host(s) Leader Shard 1 Leader Shard2 Replica Shard 1 Replica Shard 2 Leader Shard 1 Leader Shard 2 Replica Shard 1 Replica Shard 2
  • 41.
    Solr Cloud ZooKeeper host(s) Leader Shard1 Leader Shard 2 Replica Shard 1 Replica Shard 2 Leader Shard 1 Leader Shard 2 Replica Shard 1 Replica Shard 2 ZooKeeper host(s)
  • 42.
  • 43.
  • 44.
    Solr Cloud 1. /get Document 2.modify _version_ Document 3. /update 4. go back if version conflict
  • 45.
    Solr Cloud Tlog: • Umożliwiarejestrowanie wszystkich zmian • Każdy node ma własny tlog • Nowa replika komunikuje się z liderem i jego tlog służy do zbudowania indeksu • Przechowuje niezacommitowane dokumenty • Umożliwia: • NRT (/get) • Recovery • peer sync
  • 46.
    1. a 2. ApacheSolr • facets, filtering, highlighting, clustering, spellcheck, suggestions, monitoring, cache etc. 3. NoSQL • CAP – AP lub CP 4. Solr Cloud • Document based, CP Podsumowanie 1 oko panna aleksandra spocząć błyskawica na twarz kmicic
  • 47.
    Wyszukiwanie w plikachaudio Warszawska Wyższa Szkoła Informatyki Lewartowskiego 17, Warsaw Thursday, February 26, 2015 7:00 PM
  • 48.
    Wyszukiwanie w plikachaudio Warszawska Wyższa Szkoła Informatyki Lewartowskiego 17, Warsaw Thursday, February 26, 2015 7:00 PM
  • 49.