Merken

Rapid Data Modeling Using ActiveRecord and the JSON Data Type

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
and my my my my a up to 100 and thanks for coming to my talk I am David Farber and I live in Ithaca New York I work for a software consulting company called gorgeous if occurs gorgeous so gorgeous as the figure and and then be talking to you about rapid data modeling and active record with the J Sunday datatype specifically the Jason type and post post-stressed another title could be how I
spent my Rails development by fitting a document store into my Active Record models and all fill in the blanks there as they go along but I'm going to mainly tell a story of some projects out of which this emerged that I is the curve maybe you've heard of it maybe you've not to turn a small city and upstate New York it so a bus ride away from New York City so you get a lot of business from there and it's the home of Cornell University and of a college so we get a lot of stuff from there tends to be academic stuff that tends to be often small to stuff through its rails can cut right through so we have a rules token that we use to to do it and so everything for me is often about how to get this done as fast as possible cause I'm often working on 3 or 4 6 3 1 8 things at a time and and and and you get through so rapid data modeling
even before you get up to rapid animal there's a lot of things to do before you would think of such a thing that I thought it would go through I'm a big fan of simple form and learning now how simple FormWorx beyond just the the top of the me in terms of how you can use it to make your perform simple but more on that later and Slim for a templating because it removes all of the extra stuff and taking advantage of the new template inheritance and rails to minimize the amount of views and I like to take a common components and put them in engines like ck under every time a strong new project and push it up a take 2 or a 2 hour long does it take to build and some the started timing out so we created an engine but see Canada or you know what we use on on on a CDN and whenever we need it we just plug it in the hands of I say don't waste work the things I'm going to tell you about rapid in modeling with post-processing not doing any of it with the intention of simply prototyping and throwing away at a later time but of in of using the Jason In order to build something and so I suggest always to keep reading instructions even if you started learning rules of 1 . 2 or 2 or 3 there always adding new things and this is a story of how sitting down and reading what came out and rails for help me solve a problem and of course inherited resources I'm a fan of that the projects I'm talking about use that I noticed that has come out of fashion lately if you go to the project on you have it says please use this anymore and so I tried to cut back also the time time trying to explain to new developers what association changes caused me to that way as well but it's the the model works and so most often when you have a lot of little projects I found try to be consistent in the way that you do things on all the products so that when you parachute and the things are where they need to be in a last spring I got involved with the project broaden
arrogance like many of our projects this was you know somebody corner of the grants and they had a project that had been evolving over the years and they needed to somebody to come in and clean it up and make it work and this particular 1 was the Archaeology Department some archaeologist there uh 2 of them go every year and have been since 1995 they skip some years but they even going to want to air gaps which is 1 of the areas of the oldest human settlements going but like 8 thousand BC and they do field work and they they collect artifacts and then they've been describing them and a 1st a Microsoft Access database that then went to Microsoft Excel and they they do all themselves and with all know respect but it needed a database person to look at and clean up and they wanted to expand it and be able to search on it more efficiently than I could in 1 i have to learn SQL in order keep searching for the data and they want it to be publicly available to other researchers so that they could put it in the footnotes and stuff so I mean bring you into the world of
archeology real quick last last summer when we're working on this they took a drunk with them to Armenia and thanks to the time that we save them with the system they were able to fly the drawn around and here the lon archaeologist now data modeling for an archaeologist what you're seeing here because looks like the tundra but that would be they go in they look around and I see here's a place where the some human settlement and this site they call a landscape and here's another 1 and they serve a bunch of these sites and then they decide when they go on a particular year which ones look interesting so there's a database of surveys of sites that they looked up prospective places today and then they decide OK this year we're going to focus on that 1 and this 1 and that would be called an operation and then in this operation they're going to go and set up their tents and states in the ground and measure and start to do some preliminary digging and say go here in this place so it's interesting and this little place looks interesting in this little place looks interesting within that confines landscapes and then they're going to start digging the when they're fixin toothbrushes and but not this is there's a little animal can running on a totally word mean the farmer discovery channel type of thing but was fun so this application is going to be used for you know they they take although the potsherds in whatever and they put them in bags and boxes and they bring them back to the tense and in the evening they get out some beer and they in turn on the television and start measuring and guessing what what is this and catalyzing site they have an application where they don't load up to the place that they're out and you know all the
different things that they can find their they can add and so lots of different things meant to be used in action but also meant to be
used to answer questions like OK you know last year Bronze Age parts with rolled realms native ill-defined out without writing as well so that needed to be this very fancy and at the beginning of it very intimidating for search interface to so the things that they find and of course there some English and Russian things going on that so it's not just in English or Russian but the things they're in Russian presented also in English and you choose what kind of thing you're looking for and and you can apply many filters and when you click Add at
tributes that you get a lot of different choices and then you can pick
your filtering of things and quick submits annually get results so things
lots of different things in archeology the here is the some of the kinds of things that they can find out aside from a bone which they call font or on object which is an object made from bone or pottery which is seldom coming out so in as a part shells when objects all different kinds of things that they find so all of these things there some metadata about them better that everything has everything has a period in which they guess that it might have started being from in a period in which it ended if they really sure this from the early Bronze Age those would be the same for example but everything gets periodized and what place they found that and anything else that all these things have you found it would be on their but then each of these things everything else is different and these things can have
a lot of a lot of attributes about that there's no it's just about right but when archaeologist with the makes channels and the panels and I'm not even sure what those are and o core positions and what is it a little is at act and core bands and colors and now there's dozens of attributes on here and you know alone is just as complex as that and whether it's been butchered and how it was butchered and what it was what you're doing and what we blew my mind how
much the the overnight originally started with having each of these things and it's on table actually somebody else's started the scheme and that's how it was when I got it and then then further searching the things in common they have this thing called an object registry and so I was trying to wrecking my mind you know with the forms and hooking us all up and make making the search interface when I wrote a blog post saying that you can do this in 1st and I was like well uh I wonder if I can use this so here's an SQL query that saying if we have a single table with everything in at all the attributes of everything and we have a data column adjacent column and we can actually search on the keys it anybody know you can do this anybody done this the so I thought well I wonder if I can make rules do that Active Record easily and so I sat down with a beer and I
wanted to see if I could use a single table inheritance to have the stuff that's in common in actual database columns and and put everything that is a variant into this data call OK so I would have a common base class we actually called entity but I was having trouble explaining what entities were so a color artifacts here they call them objects but in Ruby that's taken so that the red so you guys let's pick something else and so we settled on entity but artifact think it is clear from the for non archaeologist ordering extends artifact in and all of specific attributes will be in the data column OK so how
can we do this well let me tell you 1st here's a migration that would create a column that would have a Jason call now what is adjacent column has anybody ever store Jason in the database before it is a text column yes I I have to I have a slide in the earlier this said humans have long stored Jason has text in the database but now you can actually stored Jason now post 9 . 2 they introduce this Jason column and all that Jason column really is is text poster stores it this text is like the story that when I was a text column however they provided a bunch of new functions of it'll allow you to search within the Jason and to to work with the Jason and blow it out you'll see that you have an array of Jason objects you can blow it out as if in a is at the table rows and you can select out the adjacent as and pretend that the columns or kinds of interesting things like that but it was all still stored as text and passed on demand like Jamase with the presentation about the scrolls that you make enquiries kind open up all schools with adjacent however you can index the individual he's if you want to OK Jason be came along and posters 9 . 4 and if you have not accessed 9 . 4 on you wanna work with Jason use the Jason Bay because that gets stored as Jason and that means faster searching and it also allows you to create it was collagen and that's you can say index all the keys in this Jason and look up so when you say find find me a document with the this key value pair in adjacent it's actually faster I found then and doing it in regular columns but then but it's much slower if you're doing great analyst to more that later but if you've got this Jason column which here recall I was called data then you can do something like this story sensor data come away and when I saw that I was like I think I might be able to use this what is this well let's say that we have artifacts and we say person the with 20 while artifact that with this funny call and there's no call for a data with because of put it in in the hatched which is your data honest serializing the Jason so by the same token you know your HTML form with the with where the user type 20 gets posted a comes and as a string because Active Record doesn't know what to do that because it's on actual column and assigns it as 20 so you have a string of funny the US for the work that is 20 a spot analyzer the and you get while the new task if the with this change in goes above because is not an actual an attribute it's just an accessory that gets stored in your data however data change would become true otherwise Active Record won't know when to save the now I had to
have this massive search interface knows can use ransacked somehow so nobody use ransacked the OK so ransac is a gem written by Ernie Miller that's basically glues form so so you have an input that would be something like with greater than equal to but that's the you have the column and then and with a color predicate and you can have a form input and when you say entity that ransac then that drops into parallel and converts them into a where where is greater than or equal to 30 and then called out result that pulls it back into the record land so the you can keep on adding scopes and stuff it's a way to build advanced search filter type things OK so I wanted it I you to look like that so that I could use it with 2nd and my search problems would be solved if I was going to use this Jason column for storing attributes and I found that you can't work restaurant sector it's basically saying OK if you see wet that on my entity model then please when you make a career out of it please chains word with with data arrow with a one-to-one aren't now what this is telling prosperous no data look for the which he in the data is going to come back as texts and then convert that to an answer so that you can compare it to the Manager that I gave you had so put them together and what do
you get the basis for a document store question is how to put them together and what is a document store so . document stored is when you store you don't have a schema necessarily but you have or at least as defined in the model so as that as these keys and there's not columns in the database by I
want to emphasize here that this is a hybrid now schema next I Document star like if you're going to use adjacent polymer doesn't mean you can't use the other columns our use columns like normally do an active records it
so if I was going to use this new was actually going to be rapid data modeling than I would need to have a quick way to declare what attributes go in my document something kind like the active model serializes among the or mongoloid and I thought well OK I need to typecast my data coming in and out because it's probably coming in as a string and I want to be an integer so and I need to convert it to something for ransacked their want to search store accessory as a method it turned out to be 1 of those methods and rails you go the rules internals and sometimes like who what is that but this turned out to simply wrap up to methods called read store attribute right store attribute I found that I could just do the same thing and just catch it before it goes in and catch it when it comes out and make it what I wanted and then I can declare a custom ransacker and that would allow me to do something like this for the integer attributes were playing with the height and I'll say string attributes and for attributes and Boolean attributes and so forth so I thought this might work as a you know there's a template method where I have to define what goes into the blanks tha
and then in injury attributes and string attributes to this fill in what those buying are In reality turned out to be a little more complicated because there is no doubt bowl kind of thing and to a day conversion as little more complicated than just going to date on whatever
but the end result is a model that looks something like that and that's actually how the models look in this project I think and they got the work that but I wasn't really happy with that kind of bug me that the the implementation may seem to be driven by those blindsided fell and and so now string attributes boolean attributes for the attributes that seemed to me the Boolean string flow would be like the argument the 1st argument of a common method that could be called something like actually the and doing it this way rather than grouping the attributes by semantically where they are in the meaning of that document instead of group the strings in the young group them together by type
and I ask myself of assigned amounts to apparently are not the only 1 that ever ask themselves that there is even a a stick here but I just that but what with what was then the Mets do I had just watched her last or else come talk on countries and so the the refactoring she did you know 1 of the stages was pretty much what you know what this was like OK almost there but not quite what
if it looks something more like that where it's declaring each 1 by 1 along with what it is and that would give a place to add more interesting things like default arguments and make it easier to come up with different types of attributes I found that once I found that once I had the ability to say you know create my own simply call on types within my document store them how I like that I can be more creative in making the models now but and
that's and that refactoring they you saw
there did not happen on this project the code of a ceramic object doesn't look like that is
the next project right got to keep on taking it further and this was for the inclusive recreation resource center which is based in Portland New York runs out of Sunni Portland the State University of New York College at Portland and the mission is to make it possible that the of the picture that you see there is and that's to have a database map so places that you can go if you have special needs for access and to assess them to find out is the bowling alley really accessible or are they just saying it's accessible there's really like that the you
can say that's accessible but somebody really
become a measure but
so that when we have indeed we wanna go to a state park they can type in Lake Placid and see what comes up and find out is there really an accessible bathroom there and I can go to the notion of a lot of money then and drive out there
OK and part of this website is for you know an online course for training the assessors another part is for actually making assessments and these assessments have a lot of forms like this many forms this is just the beginning of 1 of the forms and I
there's the video you took a picture of the Finder's of some of those forms in many of these have multiple pages now what are they you know as you see by some of the names of his evil picnics altogether shop pro shop Walker shower changing room picnic area overlook shopping facilities spots on an amusement ride they're a lot of different things but many of them are overall physical places many of them are physical
structures buildings and buildings and to have some common elements we notice I wanna look at the form says we're overcoming him in our initial shock and seeing how many forms the work and when we have to get this done by and how many migrations we have to write the all this data and then as we were actually reading the form seeing all these questions are kind of similar to those questions from those questions so they're always asking about the door and you open the door to get in the door how what is a dark and is there a clear up to the doors there are well described the act is a working area and they're always variations of the same questions maybe was slightly different wording on each form but now there was a recurring theme within this we never need to ask about search it unlike the archaeologist never need a search on a specific attributes with an adjacent of the searches like give me a amusement park show me what a relic plastid but not give me all of the all that is even those with 40 and starts to get so in the Domain Driven Design angle that got me thinking that's what I have is your own assessment a structure is an entity and these doors and ramps and things you know our value objects that I want to be able to compose each thing out of so that they would be reusable parts like employ again wherever it shows up and I wonder if I could embed these reusable parts into the Jason
you as it turns out I could I wanted something that would look like this so this is an embeddable model and everything tends to have a name you adore OK there were to your front or back door some things have many doors and very often the comments and whether or not the thing has the thing
in question and then the door itself here we see an example of what I mean by when you control and actually it is because this is going into adjacent then you have more flexibility than you do that erected in order to customize what's as an attribute so here the 1st thing you see there that should be door type is an enumeration that it's typically a drop-down list or a list of check boxes maybe you can have another which is multiple is true means you can select many and I have another option is like strict true like you can only select from the list or you can have extra now things and dictionary because there's difference no open handle close handle both come from a common dictionary of of door handle types and then here we have a comfort
station has a bar a lot of things have endorsed by just you know you single-table inheritance for a specialty area which is where competition is called and every specialty area against the things that most everything seemed to have and then a comfort station as other actually explicitly haven't or discount got 1 from a specialty area but as it turns out restrooms and
showers also have worse and where side door needed to be it was as simple as writing and that's 1 embeds many not I a restroom a parking area wrapper elevator stairway and so forth and then when you
have and for there and let's make it behave like except nested attributes for wanted to behave so that you can assign attributes the form doesn't a need to know that this isn't these are actual columns and this isn't a real life Active Record model but just about Ruby object was some attributes and the kind create a custom and but for example in simple form that's with this check boxes other and accept enumeration with multiple true
and you do something like this with the out of the box and suddenly when we were looking at that thing on my god after these check pockets have the other do that and suddenly we all enumeration multiple true and let's use the check boxes other simple form input and it was no longer effect and the and this is in a
partial so whenever we need to plug you know are we just call the partial actually color helper that calls the partial with some special arguments and then each store might have some slightly different hands sort of labeling on the form well
simple form gives you some wonderful if tedious but very handy specific ways to address that in the now and the language file infect the
so if you want your nonactive record model thing to behave with the exception of like except nested attributes for does I don't do is define a method that's as your attribute name underscore attributing equals that receives what came in from the form and then builds up your Orion's text in addition the ice and showing you this just to show you how you can do a lot of checking of Active Record to make it behave the way let us suppose to behave with your nonactive record thing because I don't want the form to have to know about what the what the controller have to know that the thing is a document store they're not and not a regular problems that so I found
myself in this project pulling this out into a jam and using it since then and many other projects because now it's 1 of the tools in my toolbox abutting here about so you can take a look at it encourage you and would love some feedback on it and also because if you wanna see like how it how I got from integer attributes the attribute well
this but I want to reflect more on some of the US is a knows about the experience of working with this jason column especially as a document store it's emerge from a from using finding a way to a single table inheritance and put all the various attributes into the document store into the dates column so that I don't have a thousand column of table which is probably a good indication that I shouldn't using with a 1 tents but it won't have to work with all the different models and stuff this was just so easy and get the job done and from the inclusive recreation resource center I our see you see that it's handy for storing value objects and race and stuff which means that it's good for what you probably think of when you think 0 Jason 0 I have some dates and I need to do something with the western do well let's put an adjacent column while I was building a dashboard for our interacting with digital ocean and in a simple and and the pocket and what else and you get back in API response when I grew droplet of and what's stuff in an adjacent column in their along with the other attributes I've already trade I am in the flow of building out of some forms and crap I forgot to add that feel better generator migration and here I just got them model openaire you know think well I regret that the answer is no then it just goes up that had it was there and among however that last June a 1 emphasize that so it's not a permanent commitment that there's ways to get into Jason ways to get out of Jason look at the adjacent occupation and post-stressed nothing prevents you from running actual queries you know using active records and there's all kinds of cool things that you can do that I have not had begun to talk about that I was going to talk about but really did not need to know about any of it in order to do the work that I showed you so far so what we talk about a year but I would say more than it has the advantages of the document store and all the usual 0 you should use Monge DB because and you can tell that the stress has been answering among the the question with this in the document store isn't the only thing they had in mind with that a lot of them as I see would have like OK you know you you have orders in order quarters have line items line items don't really need to exist outside of the water so 1 up at the line items within the J. son of the order model that was that's a pretty common example and then they say 0 but you have a context in which you want to access line items independently here's how you can write period greater materialized view that's going to pull all the line items out of the models of the stored and and presented to you as if they're in their own table OK but that's 1 of many things you can do with that time has the advantages
the speed but and it also has the disadvantages of a document start you know all the projects in which I've used it had a big legacy databases for which a large part of the project was to normalize it and sort out like 0 we have a text column that's operating as a boy and they type and yes or no or wider and wider and wider yes and that but now people let's say you know and and figure out to a false once you and then you have this big migration and you push the was the book of the document goes out into the plant and up until the time you posted that boat migration whatever you know I just know there's gonna be a migration as we go we can you know that columns and add fields to the days on tour heart's content but once it's out there and you want to say chains move stuff around then you have to go through all the documents and change because there's no partial at that you can say update the sky in my Jason and set the value of of the ages 47 242 because they're older now you gotta go through when you got update the entire no and save the entire record OK and in terms of what is the performance of OK at the level the number of records and I have a notice difference and I have and so I'm still working on the question of performance in terms of if I have a lot a lot of records you know what kinds of things might my my performance patterns are more of how much slower is this or how much faster than is this that and if a row columns for all the things that I'm putting into my document store and that is what I found is that if I'm looking up simple stuff like find this where that equals that then it's pretty comparable and if you're using Jason be religion index it's actually faster and that if you're doing something like greater than and less than string matching any more complex operation and equals then in the Jason is actually going to be somewhat slower than if it was in column OK and how much slower seems to progress and the number of records increases and so the more reject more records you have the slower it gets when you're doing greater than less than type stuff which is important for against the archaeologists and non relevant at all to the and I offer our see also I made when I was doing this testing I totally did not expect the finance it's that I found that's if let's say that you have the restrooms with the Doors Closing of many restrooms in many doors then many have aged appear just as a as a the at the top level the fact that the adjacent as nested for some reason it makes the entire no search even for the age become much slower and words if you want to use the Jason and going to use indexing and all that of course if searching on the keys in adjacent is going to be important to you then don't nest Jason within the same color vector because it just it's like throwing a wrench and I anywhere from 5 to 60 times slower depending on the query depending on how many records and didn't want that to be true but I can't make like I keep looking maybe I'm doing something wrong but then I run a benchmark and it is still comes out slower so I would like to go back to you when we do human remains excavations in arrogant I would like to turn this panel into an object as it should be in value object but if I do that then the search performance is going start so I'm not going to do it so where to go from here
I'd encourage you to check out my orthodox storage and this is not to talk about that but more how that emerge from the adventures that I had and rapid in modeling and 2 I've put in some blog posts to learn more about the dates column and other things you can do with it from there and I encourage you to go and read them and thank you for
coming and so hearing about the on column once again and to and there I am you know and on Twitter please Mueller did it his my mainly my in my life
Datensatz
Software
ATM
Datentyp
Datenmodell
Computeranimation
Informationsmodellierung
CDN-Netzwerk
Quelle <Physik>
Mathematisierung
Term
Template
Komponente <Software>
Informationsmodellierung
Datensatz
Bildschirmmaske
Fächer <Mathematik>
Vererbungshierarchie
Softwareentwickler
Speicher <Informatik>
Kurvenanpassung
Hilfesystem
Assoziativgesetz
Sichtenkonzept
Physikalischer Effekt
Vererbungshierarchie
Template
Datenmodell
Token-Ring
Schlussregel
Sichtenkonzept
Ausgleichsrechnung
Widerspruchsfreiheit
Bildschirmmaske
Lesen <Datenverarbeitung>
Projektive Ebene
Ordnung <Mathematik>
Fitnessfunktion
Informationsmodellierung
Web Site
Quader
Datenhaltung
Quarkconfinement
Datenmodell
Kartesische Koordinaten
Physikalisches System
Sondierung
Computeranimation
Eins
Online-Katalog
Digitalsignal
Datenfeld
Flächeninhalt
Last
Datentyp
Projektive Ebene
Wort <Informatik>
Ordnung <Mathematik>
Einflussgröße
Aggregatzustand
Filter <Stochastik>
Subtraktion
Ebene
Mereologie
Gruppenoperation
Gleitendes Mittel
Computeranimation
Schnittstelle
Objekt <Kategorie>
Resultante
Formation <Mathematik>
Subtraktion
Nabel <Mathematik>
Konvexer Körper
Digitalfilter
Frequenz
Nabel <Mathematik>
Computeranimation
Objekt <Kategorie>
Metadaten
Magnettrommelspeicher
Code
Mereologie
Attributierte Grammatik
Ontologie <Wissensverarbeitung>
Auswahlaxiom
Ortsoperator
Systemidentifikation
Formation <Mathematik>
Ortsoperator
Web log
Abfrage
Einfache Genauigkeit
Nummerung
Schlussregel
Computeranimation
Objekt <Kategorie>
Bildschirmmaske
Datensatz
Gruppe <Mathematik>
Speicherabzug
Dimensionsanalyse
Speicherabzug
Kantenfärbung
Schlüsselverwaltung
Attributierte Grammatik
Tabelle <Informatik>
Schnittstelle
Konfigurationsdatenbank
Mathematisierung
Kombinatorische Gruppentheorie
Task
Bildschirmmaske
Datensatz
Ganze Zahl
Umwandlungsenthalpie
Migration <Informatik>
Datentyp
Vererbungshierarchie
Speicher <Informatik>
Cliquenweite
Attributierte Grammatik
Array <Informatik>
Tabelle <Informatik>
Lineares Funktional
Vererbungshierarchie
Datenhaltung
Indexberechnung
Systemaufruf
Einfache Genauigkeit
Objektklasse
Computervirus
Einfache Genauigkeit
Objekt <Kategorie>
Rechenschieber
Automatische Indexierung
Attributierte Grammatik
Kantenfärbung
Schlüsselverwaltung
Baum <Mathematik>
Tabelle <Informatik>
Zeichenkette
Resultante
Datenhaltung
Gebäude <Mathematik>
Ruhmasse
Ein-Ausgabe
Computeranimation
Prädikat <Logik>
Informationsmodellierung
Bildschirmmaske
Verkettung <Informatik>
Datenmanagement
Ein-Ausgabe
Basisvektor
Datentyp
Zeitrichtung
Wort <Informatik>
Kantenfärbung
Speicher <Informatik>
Schlüsselverwaltung
Parallele Schnittstelle
Basisvektor
Cliquenweite
Attributierte Grammatik
Schnittstelle
Datenmodell
Indexberechnung
Schlussregel
Umsetzung <Informatik>
Frequenz
Objektklasse
Computervirus
Datensatz
Informationsmodellierung
Ganze Zahl
Ganze Zahl
Rechter Winkel
Serielle Schnittstelle
Boolesche Algebra
Hybridrechner
Speicher <Informatik>
Cliquenweite
Attributierte Grammatik
Zeichenkette
Resultante
Parametersystem
Umsetzung <Informatik>
Gruppenkeim
Implementierung
Dicke
Umsetzung <Informatik>
Datenfluss
Computeranimation
Programmfehler
Zeichenkette
Arithmetisches Mittel
Informationsmodellierung
Datentyp
Attributierte Grammatik
Projektive Ebene
Boolesche Algebra
Durchmesser
Cliquenweite
Zeichenkette
Attributierte Grammatik
Parametersystem
Subtraktion
Default
Boolesche Algebra
Dicke
Objektklasse
Zeichenkette
Informationsmodellierung
Gewicht <Mathematik>
Datentyp
Dezimalsystem
Attributierte Grammatik
Vorlesung/Konferenz
Speicher <Informatik>
Durchmesser
Default
Cliquenweite
Attributierte Grammatik
Datenhaltung
Default
Boolesche Algebra
Dicke
Code
Objekt <Kategorie>
Mapping <Computergraphik>
Zeichenkette
Gewicht <Mathematik>
Rechter Winkel
Dezimalsystem
Attributierte Grammatik
Projektive Ebene
Inklusion <Mathematik>
Durchmesser
Cliquenweite
Web Site
Bildschirmmaske
Mereologie
Datentyp
E-Learning
Computeranimation
Aggregatzustand
Objekt <Kategorie>
TVD-Verfahren
Subtraktion
Domain <Netzwerk>
Element <Mathematik>
Computeranimation
Videokonferenz
Homepage
Domain-Name
Bildschirmmaske
Migration <Informatik>
Datenstruktur
Attributierte Grammatik
Gammafunktion
Winkel
Raum-Zeit
Gebäude <Mathematik>
Element <Gruppentheorie>
Arbeitsplatzcomputer
Objekt <Kategorie>
Flächeninhalt
Datenstruktur
Mereologie
Wort <Informatik>
Informationsmodellierung
Subtraktion
Quader
Raum-Zeit
Datenmodell
Abzählen
Mailing-Liste
Boolesche Algebra
Data Dictionary
Konfiguration <Informatik>
Zeichenkette
Arithmetisches Mittel
Informationsmodellierung
Ganze Zahl
Code
Abzählen
ATM
Datentyp
Data Dictionary
Attributierte Grammatik
Ordnung <Mathematik>
Informationsmodellierung
Attributierte Grammatik
Flächeninhalt
Wrapper <Programmierung>
Arbeitsplatzcomputer
Kondition <Mathematik>
Eingebettetes System
Vererbungshierarchie
Flächeninhalt
Arbeitsplatzcomputer
Computeranimation
Soundverarbeitung
Videospiel
Quader
Volumenvisualisierung
Boolesche Algebra
Ein-Ausgabe
Computeranimation
Objekt <Kategorie>
Teilmenge
Bildschirmmaske
Multiplikation
Informationsmodellierung
Ganze Zahl
Reelle Zahl
Code
Abzählen
Ein-Ausgabe
Grundsätze ordnungsmäßiger Datenverarbeitung
Attributierte Grammatik
Parametersystem
Bildschirmmaske
Subtraktion
Ganze Zahl
Code
Ein-Ausgabe
Formale Sprache
Volumenvisualisierung
Boolesche Algebra
Kantenfärbung
Elektronische Publikation
Speicher <Informatik>
Quick-Sort
Computeranimation
Addition
Rückkopplung
Elektronische Publikation
Schlüsselverwaltung
Ausnahmebehandlung
Gerade
Computeranimation
Datensatz
Bildschirmmaske
Informationsmodellierung
Ganze Zahl
Code
Gamecontroller
Attributierte Grammatik
Projektive Ebene
Speicher <Informatik>
Attributierte Grammatik
Retrievalsprache
Hinterlegungsverfahren <Kryptologie>
Computeranimation
Übergang
Hinterlegungsverfahren <Kryptologie>
Prozess <Informatik>
Mustersprache
Tropfen
Gerade
Array <Informatik>
Benchmark
Softwaretest
Sichtenkonzept
Schlüsselverwaltung
Datenhaltung
Güte der Anpassung
Abfrage
Kontextbezogenes System
Frequenz
Datenfeld
Verkettung <Informatik>
Automatische Indexierung
Projektive Ebene
Ordnung <Mathematik>
Normalspannung
Tabelle <Informatik>
Zeichenkette
Objekt <Kategorie>
Subtraktion
Wasserdampftafel
Mathematisierung
Zahlenbereich
Abgeschlossene Menge
Term
Datensatz
Informationsmodellierung
Bildschirmmaske
Migration <Informatik>
Endogene Variable
Datentyp
Vererbungshierarchie
Indexberechnung
Inhalt <Mathematik>
Speicher <Informatik>
Inklusion <Mathematik>
Attributierte Grammatik
Einfache Genauigkeit
Migration <Informatik>
Datenfluss
Endogene Variable
Objekt <Kategorie>
Array <Informatik>
Körper <Physik>
Komplex <Algebra>
Mereologie
Attributierte Grammatik
Wort <Informatik>
Kantenfärbung
Videokonferenz
Videospiel
Informationsmodellierung
Twitter <Softwareplattform>
Web log
Binder <Informatik>
Speicher <Informatik>
Abenteuerspiel
Computeranimation
Web log

Metadaten

Formale Metadaten

Titel Rapid Data Modeling Using ActiveRecord and the JSON Data Type
Serientitel RailsConf 2015
Teil 93
Anzahl der Teile 94
Autor Furber, David
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/30694
Herausgeber Confreaks, LLC
Erscheinungsjahr 2015
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract So you are building an app that has a ton of forms each with tons of fields. Your heart sinks as you think of writing and managing all those models, migrations and associations. PostgreSQL JSON column and ActiveRecord::Store to the rescue! This talk covers a way to wrap these Rails 4 features to simplify the building of extensive hierarchical data models. You will learn to expressively declare schema-less attributes on your model that act much like “real" columns, meaning they are typecast, validated, query able, embeddable, and behave with Rails form builders.

Ähnliche Filme

Loading...