Merken

Simple SQL Change Management with Sqitch

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
the so I want to talk to you today
about simple sequel change management the 1st on start out with a brief review of what I've these think is wrong with the typical migrations models that were used to seeing I language that happen during their invasion implemented with an incomplete language which my experiences have primarily been with rails migrations and I found that are pretty much I just use the the sequel interface and ignore all that language stuff which was a very very small set subset of SQL but that's what's encouraged on another issue I had read migrations in particular was there was no integration with logical replicate replication we got slowly all set up on a system before I realize that we couldn't actually deployed changes to slow medium migration because they're completely incompatible being Ruby scripts I have and I you that I'm sure you've all had headaches with is that numbered scripts are hard to track so you had to have to have some sort of system by allocating numbers to developers or using an epoch time stamps which are meaningless long and ugly or some sort of thing and that my head I work at a company called variation in from existing deployments therefore Oracle we wiki page were developers have to log in and register number on the wiki page saying this is not underwear before they can write a points another issue is that there's no BCS awareness in these systems they're completely independent of the CS and don't necessarily know it's there so what about SQL migration these fixed the issues of many language because now we can just use the native scripting language of the database were dropped and because we're doing that the logical replication issues less of an issue because again we could have both grows pure SQL scripts to do the planets but that's another issue but it's also true for the numbered migrations is that matting straight procedures is a pain in the ass with the points for
example imagine that we had a stroke procedure and we needed to make a change to its existence procedure we need to make a relatively simple add 3 lines of code to procedure that is a death not too big a deal this is from some really old code i that years ago but you can't make a change in line in a migration script would you
have to do instead is
post the entire function from the original script used to create function into another 1 and a new file to make your changes so they have a a complete copy to make a three-line change then you can't be the original 1 again to be down version of the migration script here so that it will recreated as it was in case you have to revert so now we have 3 copies of what is essentially the same function and we've lost the advantages of the of using the source code system to tactors changes also use more more about that later but I have believe OK the on time this really sucks but what about
liquid that's what I looked at it too much except this community and that's enough I have a database practitioner I'm perfectly happy and comfortable writing in is really great from a domain-specific language called SQL not so enamored of reading SQL X and at the
past and Susan there was a non-PostScript as hacker has a versioning system which I have been using actually our job but it's quite nice you can get in and get higher and basically what it is is it's just a a couple illustrate procedures and a couple of batch and 1 nice things about it is it does dependency resolution so you could say this patch requires these other patches or conflicts with these other patches and when you do a deployment bad because the components are done by 1st calling struck sieges this procedure is can check this dependencies thrown at an exception if they're not matter which is pretty but the class it has been very tight postgrad as uh integration it being solely so procedures written in the database and storing stuff magic scheme again there is no BCS integration no tools other than the batch script and quick proscript their work to do stuff and which passes the SQL beginning every file but and energy procedures period because not only do I have to copy the file because there is the the 1st line of the planet scripts is a call to register a patch and to be very particular about that so it can include I can't use like the backslash I had I to include 1 script another script because that function will create problems so we still have a great 3 copies of so I started with this and offer for several years in an earlier this year had epiphany about how I thought it might be useful to change the way we do this and I've been blogging about and thinking a lot about it and working
on implementation now which of something I call sketch so you might be wondering skinny what does it good happen that with the known as I was thinking that sequel change management and that at get I that so I started would start sketch like this that well it might be nice to have something the middle what if we stuck of BCS in there understand the g and presented that's why it's called there it has no you wouldn't this world it's not score so I want to talk a bit about the philosophy of where I'm coming from kind of the goals I have for project and then had not opinions about what database system you're using and this means primarily that she do the planet scripts in the native uh sequel scripting interface for your platform so proposed as you write your IP SQL scripts for like rights egalite 3 scripts and so on and they have PCs integration because the CS is pretty good taking care of your history you can use the history tracking of the BCS to help you track point in order of your uh changes I wanna steel dependency resolution in away from the peasants stuff so that you can declare basic requirements and conflict the 1 in the fucking number but I also wanted even though it's hadn't had integration with version control systems like get also known to have a way for people to be able to bundle things in the distribution so that you don't have to have a the cs on Target systems to use it yet have got on the target system but I want to be of the bundle that's of a sketch could just read it you have to get at that so sketch could read at the plan and do the distribution and so you could bundle things up in RPM or tarball whatever you want but particularly with reference to the procedures that I wanted reduce duplication because that's I guess a pet peeve of mine but I also want to have to have built-in configuration and I'm now this on gets interface so that you can tell what uh database you're planning to with the new new databases all sorts of other stuff that you can put in there to help ease the management of your changes and also includes deployment training as the file that lists out what should be deployed where it also has new concept tagging which is still right out of version 4 systems have so that other terminology a stock is basically a single patch or a single change script that is applied to your system and that actually through scripts to correspond to step there's 1 for the planet 1 for the reversion and 1 for testing so that you can run test that you to the point the next step is attack attack is a name list of steps that represents a release point basically in the application development the plan is the list of tags and the corresponding steps to go from to migrate up the migrate down and in your database the planet of course is making the changes in appointed to database and reverse is removing is changed related so before I go on to further a few caveats structures under heavy development right now I have released version at testing release today be 0 . 3 this is alpha alpha alpha code left but the people to start playing on the functionality is rapidly evolving this talk is based on a 2 times I regret which also functions as a functional specification for the project and of course things are changing as as we're doing development and figuring things out so there's some good ideas here that will be in the core of whatever becomes get point 1 point 0 but don't expect everything you see today to be in that version because it will change and people tell me and it's stupid various ways in which that this that's field and there's some places where existence of arm-waving it's said magic happens and those of it filled in and I'm still thinking about how to do the CS integration that all of
that 1 out so that the status was in the original ideas here to is how it works and it was so we want to create a project file called flipper is the entire social network and is not ready yet repository another rants which in it some initial initializing this project for for sketch and what this is doing is it's writing I don't directories that will be used for the deployment reversion testing strips and it's running a configuration file the configuration file had obviously with at least it's obvious with the deployment stuff let's take a quick look at that a
final line is just this so there's a cost setting in the engine using his PG and that's because they use the death that Schengen option when I initially so now this here in this directory as long as the money kitchen within this directory it will always assume the PDE engine when it's doing 1 it's a very that bunch of other settings you can see here for a planned files in various locations of things and the extension use on the files scripts jury and then there's database engine specific settings you can set here as well
so I'm happily configuration of sketch on gets configurations stuff so for those of you who may not be familiar with that there are 3 levels of configurations Configuration locally in the directory you currently and that's in the dot get in Fig file then there's 1 for 5 years you're user information which it calls global and that's in your home directory is called . it conveys I think and this 1 system-wide that's called Slashdot Slashdot can and so what happens when you ran . it finds with configurations are indicated directory and falls back and Stephanie you directory and falls back on stuff and this so this for this set thing system-wide well for all of your personal projects is user and then have stepped specific to individual projects in this direction so the things that would do is a sort of sketch so that it knows where my uh was replaced that point is an so that the user can take command and out and not to make a change to the user configuration and I'm just setting the PG . to the location for P as well and if we take a look at that file which is then that sketch
slash speech that cough in your home directory you can see the configuration process and now has a changes you can make to the configurations of the quite a few at a lot of configuration settings in our currently Chris In this system of
but this is not because Nyman imagined development was to get a system that always knows where to find the history of science
going ahead and connect the configuration file those 20 directories and now
it's time to make a 1st points so the commands do that has collapsed that and that it doesn't right set 3 scripts for use as your steps the first one is the deployment scripts seconds revert script and 3rd 1 is the test script let's take look so this
is what they found all the plans that looks like this is based on a very simple template being language and you can change the templates if you want in your personal that gets directory directory of a massive datasets of a placeholder and suggest use transactions so I'm doing is I'm changing it to create a role that is going to be used by my application and then I'm going
to change the revert script
here today is simply drop that world breeze straightforward this can be familiar to anybody who's done migration stuff so let's get
it at a triangular test database and then I'm going to run sketch deploy an adult use this database and using the untracked option here and this means find those steps that created that are not yet tracked by the CIA and when it does that it applies to a special tag name but class meaning that the 2nd addition of what's known the VCS but you can see here it hasn't that atoms step if we take a look at the data as you can see that the role was successfully created so I
status dimensions it this current status of the database you ask about everything it gets this thing here means this is planned not implemented yet but the idea here is it'll show you what the current ideas on with the last point was annotated as the voice of colleges and by whom to and what saying you actually up to date right has said that so not data
stored in the database search for postgrad as still be a special schema called sketchily can change in schema tracks metadata there there are certain things we cannot also remarked I simply tend to a repeat delta revert with no without tell whether a to a revert everything I have only the 1 tag so it's reverting on changes in removing that step and sure enough we look the roles now I hope this is not shocking anyone and that I had
the power and that this is what somebody suggested in an issue they couldn't get I don't make it up so the pulley also this reversed distill would revert to as it because I want that to be something really separate and that probably forever if you don't specify anything it should say are you sure you don't know you know the red and yellow various ways to try to protect people from should himself in the foot I'm pretty good that's all the end up putting them in Chile myself in foot have seen that around about that managed in a show that nothing is deployed but also show what has hasn't hasn't been deployed and what you can do is you have like that yeah scissors hated it had had to be deployed with its that is step of uh 0 and no no
yeah you're going to far so then that
it tells you what you can run to actually what this is a new day it's the same as having a new
database and the last command will be the history so recall that we reverted the change here in yet if I run sketch lab it will show me to records here 1 of the most recent 1 this step was reverted back by David L. and this vast step was deployed by data so that now we remove that we keep a complete history so you can really hopefully have a better idea of whom to blame when things go wrong magic and this of the men's I can type so I
want to make that change now we have our 1st chain check in and we can it again and so the court right and this time it will deploy using the uh getting shot 1 as the tightening of the potential fall but this part is an actually hadn't done BCS integration itself hence the bank but the idea then is that we we have this named by DCs which is keeping track of our text for but if we run the
update our achievements that command again it will show now this is the tag and this is the user and hopefully the correct time not that I think is
going on at the time and continually typing invest STB dash names in the name of the database because I'm doing development and rapid iterative stuff and so I just want to always use the for protesting so I'm conflict sketched in
Fig command and I'm telling it there is a course of PostgreSQL database name for this project is called the protest not a nice thing about that is that then if somebody does this without specifying a database of production is something it will break production and will have to specifically type in in in that database because the configuration file means test but not close and habitat that dedicated the the Dutch names but I still get the
statics so let's let's add tendencies on abstract that now when I say that this news that which I'm calling users requires the at user step that I've already created if so when it rounds out the PostScript it notes that this is required and what that means that we take a look at the
PostScript is that there is no overlap with this little mini language if you will that says this requires this other stuff then obviously it can be a comma-delimited list story can have multiple line Fourier requires that the template that's multiple lines so it's got greater uses stable tested and then I'll have to be
reversed scripts that to
simply drop these 2 so what's
the plan that again and again and track because not checked these into the get repository and so it's applying head + again with users and if I go ahead knowledge database there's a users to this shows that's where we
left off again tracked by the by the database and we can revert to had had been the last known connect in a revision control system and so it's going to revert to and stuff which means I can now check and then
I can deploy and get the new show 1 there little be means that this is but it's even more
so I hope they understand this and this time using a show tags optional so addition is shown me with the most recent tag is the most recent data showing a list of all the tags and deployed when by so the shop manager there's quite a bit there are couple things you can get it to show you for additional information so you can get more information that's that's database role plan now
it's standard reasons the procedures that the uses stable and now I have a function to insert new users into this of course is going to require the user's steps and the act users step that uses because I'm going to grant so that when I had that it notes that they had been required i'm gonna status settlement Gulch change past this is going to be stored procedure where right to change the password again same dependencies you down and in the so tags and I was running water so if you have a dependency on something in earlier tag you don't have to specify because as it can be installed of with another tag if you have a number of steps they can be applied theoretically in any order and see 1 declared and within a tag I will make a habit of always occurring dependencies as much as I can just for documentation purposes something else and sanity cheque some the dependencies are also track data so it knows what was
so bad here but it's written out the 2 requires again this could be a comma-delimited list I just made it 2 lines so here's my function hidden quantities and inserting into the user's terrible nickname in the in 5 passion past and granting unanswered user to flip so because I'm using of the users have to require only at you and because I'm using and inserting into the user's Table 1 e to the users now require users users of requires that user so it's implicit but I'm again I will probably make a habit trying the explicit and I will likely forget any
change prospected analysis relatively similar again it has the prerequisites here and others right my my function to change that
so that the place and then I'm going to play with contract and it is deploying to changes that are part of this tag which is protocol had plus and if I take a look at the database can see those tags are achieving those steps have been on the function is in the steps have been deployed in
so again we committed uh it would follow the same pattern revert to head I commit changes but the node deploy them into my little development database so with this is
think about uh QA released so I'm going to talk about this and get a new the tag at that 1 tag and I'm going to create a new flipper better database and test applied to there so if it 1st applies that 1st shot 1 tag we step In the 2nd shot 1 tagged with its step and the 3rd shot 1 tagged with its 2 steps and note that this is also the place where it has the tag I have inserted into as a result if we
look at the state once been applied status I should say asked the shows tags it shows a list of all the tags and these these 2 are basically the same point 2 names the same but there also so we can
distribution bundling standard package this thing up because the 1 thing I know about operations they don't wonderful if you get right what IBM's for everything which makes new crazy of some of the words that you we don't up the change scripts and the planet into a directory the plan from big it's written in that directory is generated from the VCS history and so then with this in this directory compact to that at you know as an I M giving package or Jamil whatever however you want distributed then you won't need VCS on the target system is just the sketch of the target system to read the plan into that of 1 so what should that
honored Bangladesh I'm saying tags only hear what tags only means is that 1 I would would write the plan file I only want to use tags in the BCS further named tags in plant I don't want to use the individual shall ones of every commit and so what it does here is at 1st most configuration file copying the configuration I have and for local repositories so it knows what the 1st grows for instance and any other settings and have and then it creates this the battle for the V 1 0 0 dash 1 tagged with its now for steps and that it does it does rights into a plan 5 in our bundle directors and we take a look at that time that's
pretty simple and so on almost is very similar to uh gate figuration flowering file I we have is a bracketed name uh space-delimited uh tags and in the steps the associated with just 1 tag here with the forced the individual scripts for the steps the plot of the revert and the test scripts for copied into directories and responsible directory as well so already there to be packaged up shipped off what
that might look like and we can test it here by going into the bundle directory is that doesn't apply to new staging database and you can see here that it's deploying the the 1 0 0 . 1 tag with its for changes and of course
the steps Virginia status then shows that we just had 1 tag here so this is the current state of the art is that this looks skip this off to QA to some detail testing any
questions so far and that's good or bad the well so Q was doing some testing and they realize that if 2 users have the same password they have the same hash of a password in the data which you know might seem a little obscure but the truth is it then you know what a user from somehow got access to a database that could easily look up and see who else is the same password and then they would have access to their data never mind that there have access to the database already is an example can work with me so that when can you develop a 2nd is to instead use in in the 1st half of the passwords we're going to include them using
PG crypt so the 1st thing we need to do is write a new step PG crypto so I'm you is calling adds that PD crypto and added to the World
Wild disciplines start extension simple right only the revert script is an exercise to my mind now the
question is how do we go about modifying the store procedures that functions that in certain users and change the password to switch from NB 5 pg crypto not typically what we do is we copy the user the answer is that SQL to new put the point file cause the to make a change that file copies it again the original to the right file call the 2 but don't make any changes about 1 and now we have 3 copies I'm repeating myself but this really does annoy me and it is something that change past that now is a pretty minor changes but the outcome in our VCS is that if we want to say so that was what changed between these 2 connect it looks like that so
it's not applicable to the MOA and completely new functions and completely new but steps but the whole come whole class now if I happen to know or notice that they have almost the same meaning is nearly 1 I can do if those files specifically but the CS itself does not know that I just change 1 thing because I had to copy the whole bloody file to make change twice so when I decided
use the try to use the VCS history for this instead so think about it this way if we just modify the change scripts right without without having the new file it might not work with a single a single requirement and that is that the change must be i tempered forgive me if I think that we what that means is that no matter how often are not related to this uh script is run the outcome must be the same this happens to work very well for replace function is not not changing the signature of the function you can make the change in place using creator replace function and no matter how many times gets round the outcome will be the function that you have created to create or replace whatever was or wasn't there before so the nice thing is that men with this requirement satisfied the idempotents uh create replace function we can go
ahead and make the changes in place so the outcome is that in the change to insert uses a simple to like change where I have added PG crypto as a requirement and I've switched to using the crypt function here to set passwords and similarly
in the change past function and 319 dramatically decompose requirements as which you crypt here so this is work
not yet but yeah idea because it can make it so as usual the plan track and will deploy these changes just as they are here and if we give it a try using the same password for 2 years we see that we now in fact have different values stored as fast so that's great but if something went wrong what if we had to go back
in time so let's revert to head and now they've then those changes and then remove every and again we see that we're back to where we were were getting the same hash value for the fact that that's doing this is that instead of reading a file as it is there it was set to get up and give me the value at this point in time as of the tag but I have a plan file for this change so you can read the complete files the change follows from the get history without us having to duplicate that code and connect as being from so that's what
I'm going to use in your for the and for the planet is then you have a history there but what if you went in 1 about when this case what we do know was given traveling that had is beta 1 and bundle with tags only and good see here that as form a bundle that that 1 tagged with its for changes and advance the better 1 now it has appended to the to to these for us so it's not just that is a reducible gets but it's reading versions for these this is the version that was at this point in time and for these the version from this point time read directly from the get history there was a file that you can buy will not sit duplicated in your distribution but we care much less of an issue if we let we can see
more or less what I hope you expect for the 2 tags and their steps in the plane the distribution so let's go
ahead and deployed as staging agency that they were added the staging which have been on the previous tag so that works and now we're at the data 1 tag ship that so up that is
a very brief introduction to the ideas behind that the core of sketch that number commands that have planned and that progress I showed you last before so language to a complete history of all the changes you made to particular data base of regardless of whether they were reverted not by w check command that will basically sanity check your plans your status check for duplicate see if any prerequisites are missing from a particular database that sort of thing that that tasks is something that I plan to do so that for each step you can have a test to a regression test that make sure that the deployment actually work the point of ridiculous step actually work and natural work at it might be that they're just it'll just if output of maybe the the central path integration for because there's or something I I don't that and that's when the place where Mom waiting right and then to help me and I like get help me and then you can use it to say help on all these other commands in the show pretty extensive documentation so the current status project is I've been working full-time for about a month I am grateful to my employer privation for saying that we need this guy can work on it and let me work on work but I masters study to rethink the VCS integration because I think that this is this is nice and it's a decent idea and I really love being able to move backward and forward in time that duplicating files that almost no 1 has a good history that that's that's that calling it reminds a version of CDs so I'm starting to rethink whether instead of having kind of deep integration with BCS there might be more of a complement there so we rely more specific specifically on plan file for which we would have tools to write to and in complement that the BCS history or have ways to market to get a point in time plan file that you can then ask for things from the easiest history and still trying to work it out but it's become clear to me is that when the tools to manage the planned files and adding tags and steps to the profile independent of whatever it is easiest so that stuff I'm to started work but I could use your help have we have some skits that which is the default uh yet had site with a new when a new designs on get have 48 but I do want your opinions on a nowhere and completely wrongheaded about this work I have overlooked what sorts of patterns perhaps is currently in in its current incarnation failing to satisfy so what that mean the makes things change now gets on some sort of roadmap is the way I wanna know how we can make this as is useful as possible for as many people as possible so obviously 1 that it any code that would be much appreciated that that mutation writers at some point it would be nice to have a nice website decided but I'm asking you for your help to make a great I will do the best I can buy myself but it would just be me and what this is something that everybody so I thank
you for your attention we seem to have 18 minutes for companies and questions insults let us know that it seems I believe that you have to if you and I last 3 a analysis that so that when you have a point where it yeah so what would you do if you wanted to it in the right and he had made up of lot yeah yeah it's it's it's an the hour of right and there was also yeah and right now we have yet to be there on all of this is that the users on yet what is the loss of all of them have the right to worry that we know what it is that the right on way to say your check as you can tell yeah it's a certain degree I think it would involve being able to classify close scripts to see we're doing all the work uh here on the right yeah yeah we can call those present that but 1 of things and doing is trying to be neutral about which innovation point here as well so there's code specific to each engine in there but it will be right now just as graphs and over that seek light so there will certainly be injection points and stuff like that will all add to yes and mean basically all is is is tags and scripts and it doesn't really care which is scriptural so somebody's very asking about if at some point it at way scripts can be written like in Ruby for parole or whatever you know I think it's something we could certainly and medieval look at filename extensions and things like that some people would be more comfortable writing migrations using EDI something but down overall whatever he said if somebody's going to do the work to implement the engine class for a particular target and finally I simple-mindedness sequel system that would be mentioned because almost all of them but I don't yet know who you yes we have all the answers but it was this unintelligible this 1 right here in the USA and was on the your yeah I don't rewrite you can also be a and so I think that the opportunities for stuff like that so that I wanna give the core working as well as possible next month at 6 weeks but I would love to see stuff like that grow up in and around it to make I don't want to be as useful as possible for people to because everything else sucks so hard yeah I don't know if you know you you you you know this is this is also known as the line here and the year that was the 1st iteration this develops on the other budget questions so it where I'm coming from it's not just get I was thinking of the whatever BCS that somebody at support for hours and you get and subversion of the only people in our house it well
also 1 of the things that when I'm doing a lot of development i and the changing my deploy scripts a lot special before 1st release because I'm the only guy work do whatever I want that is I have like 30 commits to a single script that would make a rather painfully long plan right but I think I 1st but yes no yes no long right and in the to try out all section on how to developers working in branches and how they need to merge stuff in and how it can be a mass unless you read based free merge I mean if if and I would like to be able to use this and I think that if 1 is very careful about how they maintain get history you can do this but I think most people were not that careful so I talk and a draft workers about the stuff they have at most a lot and they have you know a mass repository all these people have works branches and it's just all over the place so for something like that it might be more useful to have the plan file and need major mergers acquaintances 1 file regardless of what the history it's really it was really about the fight it out there almost all of the it on and off I have yet world for product that's cheap it's right there and the that get that so like I wouldn't wanna use of subversion because that that that certainly would be that would be another issue that's another reason why people may not want the world in which we can show that the world is that of the work and most of them now have the overall view of the of year Red the quote yes there are of the over this is a new version is rumored or yeah that's a good thing that I did today Hatchetman and store that has as another check if nothing else but you wouldn't you work with me and I'll write out what is were on the right there there is little work on the rest of the act of face it person yeah that that we have to get the reason that wanted you something arbitrary like a child 1 or you ideas because then it if I had a whole bunch of steps might apply directories full of all these files that I don't know what's in them because their names in the parts of you yeah you yeah right so you have a here yeah yeah yeah bears thinking about the point from matter there are not maybe you just so that kind of weird them think about with this the get integration particularly that might be a hybrid with a plan file were many have a plan found it takes me up to a certain point in history and after that I used to get and manner so that for that was thing I in a project years ago where we had 200 rails migrations at a certain point we like Dante the database and through mall out created 1 was not so to do something like that with something like sketch what we do is and say here's a plan value start at this point with this new single file said everyone have ways to that allow people to simplify things like that a certain point of view of the bridge there right yeah yeah there's lots of different things that can be done potentially so on the
1 who did not want to the right of the
page to invent what you would like more copies of yeah people who have harmed by varying the number of people that you have prevailed very very right and we think he was the 1 that goes out of their own world that is that is that you know that you were on on the on the you you you you you want to go on on the on on and on the Earth is that that and you I have to know how to make that that that that that do think you could do something like with that with this you don't think like pieces of made each 1 of those things be its own tag or even his sense that that if you if you go there and you are right there if you're right there is an irony to that was that but library is the image of the data which is very aware of that also write about yet another 1 that you are a good 1 usually right yes you can do it from here so the actors the other side of that this is going to be a set of parameters in the model on the right word on this yet and it was in the the in the areas in all yeah all the efficiency of the graph H and all yet is generally confined to test the ability of the book at all and that is users a of where they all right it over all have all that added to the list of Perseus so this is another page sequel change management system it's on the PGA extent sourceforge a few other places and what it does is it basically he's trying to support the entire language of POS grows SQL which is massive and he's dumping out sophisticated specification files as gamma so you can do you have more than 1 database another database and different and you can I think you can then you this that's 2008 will generate paths scripts didn't mean to bring them into the alignment of all of his or the I think he's doing it so that you can then have a file that's independent of the database so you can then use it gradually planning deployments so it it's much more the database gift idea we in a database into right 50 when this thing and it creates a different creates generates an SQL script oriental filed that generates a whole world is full those words on art yeah I would have this on the talk also known as the notion that right not to be in a year is an act of part of that yeah that's what I to test 7 in sketch it yet but it is not like the right word yet so have not the use of the of yet how he added to the 1 is a little more in the snow is exact if there are more than a word yet right on their web that that's 1 of the reasons why I wanted to test stuff into sketch that you basically can have production of what's a dense tests were potentially can save did is that right now and these tasks they fail to reverse and send it back to you develop the problem is that the money on some of the ways in which they and will use this the column right there's a lot of people in the world like you might want to go to the game of go and they do in on itself so that we have on the walls and you know know has to on there yeah yet different database is part of the of the world it is a good thing if we use want in the of the system that we get that out the fact it is also 1 1 of the things you want to know 1 I'll let show you have branches what I think of so it at irrationally have separate branches for development and staging and for production already branching sketch here I don't think so NO Alice that means more thought that work on well was visiting my 1st target would definitely most of us in the post grads but I want to be generally useful tool limited to just 1 or 2 communities because it is also has been proposed as easy as you use it but I hope that it will leak to leak out because you know of other projects of other things contribute may have the same pain I mean when I worked on my sequel set for this is just as it is well as well as their because the deals are non-transactional but you know this everybody hates this and I don't think that this solution has be all that was 1 and they also make use of penetration
Mathematische Logik
Punkt
Weg <Topologie>
Desintegration <Mathematik>
Formale Sprache
Mathematisierung
Zahlenbereich
NP-hartes Problem
Fortsetzung <Mathematik>
Mathematische Logik
Computeranimation
Homepage
Informationsmodellierung
Datenmanagement
Migration <Informatik>
Datenreplikation
Skript <Programm>
Vorlesung/Konferenz
Skript <Programm>
Zeitstempel
Softwareentwickler
Schnittstelle
Schreib-Lese-Kopf
Rohdaten
Datenhaltung
Netzwerkbetriebssystem
Datenreplikation
Physikalisches System
Migration <Informatik>
Kontextbezogenes System
Wiki
Algorithmische Programmiersprache
Quick-Sort
Integral
Videokonferenz
Teilmenge
Einheit <Mathematik>
Formale Sprache
Differenzengleichung
Mathematisierung
Dezimalbruch
Versionsverwaltung
Datenmanagement
Code
Quellcode
Rechter Winkel
Migration <Informatik>
Existenzsatz
Skript <Programm>
Vorlesung/Konferenz
Skript <Programm>
Ganze Funktion
Gerade
Lineares Funktional
Elektronische Publikation
Mathematisierung
Indexberechnung
Physikalisches System
Quellcode
Elektronische Publikation
Algorithmische Programmiersprache
Spannweite <Stochastik>
Funktion <Mathematik>
Loop
Ganze Funktion
Reelle Zahl
Desintegration <Mathematik>
Klasse <Mathematik>
Versionsverwaltung
Schreiben <Datenverarbeitung>
Fahne <Mathematik>
Prozess <Informatik>
Zählen
Skript <Programm>
Vorlesung/Konferenz
Zusammenhängender Graph
Hacker
Gerade
Bildauflösung
Lineares Funktional
URN
Datenhaltung
Systemaufruf
Ausnahmebehandlung
Nummerung
Physikalisches System
Gleitendes Mittel
Domänenspezifische Programmiersprache
Elektronische Publikation
Frequenz
Menge
Algorithmische Programmiersprache
Integral
Sinusfunktion
Patch <Software>
Energiedichte
COM
Ablöseblase
Stapelverarbeitung
Versionsverwaltung
Distributionstheorie
Bit
Punkt
Dokumentenserver
Desintegration <Mathematik>
Versionsverwaltung
Schreiben <Datenverarbeitung>
Fortsetzung <Mathematik>
Kartesische Koordinaten
Softwaretest
Datenmanagement
Reverse Engineering
Existenzsatz
Skript <Programm>
Schnittstelle
Funktion <Mathematik>
Bildauflösung
Software Development Kit
Softwaretest
Distributionstheorie
Lineares Funktional
Datenhaltung
Algorithmische Programmiersprache
Datenfeld
Funktion <Mathematik>
Rechter Winkel
Maschinenschreiben
Lesen <Datenverarbeitung>
Projektive Ebene
Ordnung <Mathematik>
Verzeichnisdienst
Faserbündel
Software Engineering
Schnittstelle
SCI <Informatik>
Wellenpaket
Mathematisierung
Automatische Handlungsplanung
Implementierung
Zahlenbereich
Nummerung
Systemplattform
Code
Data Mining
Weg <Topologie>
Polarkoordinaten
Jensen-Maß
Skript <Programm>
Datenstruktur
Softwareentwickler
Konfigurationsraum
Konfigurationsraum
Bildauflösung
Einfache Genauigkeit
Mailing-Liste
Physikalisches System
Automatische Handlungsplanung
Elektronische Publikation
Quick-Sort
Ordnungsreduktion
Integral
Patch <Software>
Speicherabzug
Innerer Punkt
Hyperbolischer Differentialoperator
Punkt
Mathematisierung
Computeranimation
Übergang
Richtung
Speicherabzug
Skript <Programm>
Vorlesung/Konferenz
Maßerweiterung
Konfigurationsraum
Gerade
Umwandlungsenthalpie
Binärdaten
Datenhaltung
Varianz
Elektronische Publikation
Quick-Sort
Konfiguration <Informatik>
Menge
Client
Projektive Ebene
URL
Information
Verzeichnisdienst
Binärdaten
Softwaretest
Elektronische Publikation
Prozess <Physik>
Punkt
Konfigurationsraum
Zwei
Mathematisierung
Varianz
Magnetooptischer Speicher
Sprachsynthese
Physikalisches System
Elektronische Publikation
Computeranimation
Softwaretest
Menge
Wurzel <Mathematik>
ATM
Client
Speicherabzug
Skript <Programm>
Vorlesung/Konferenz
Programmbibliothek
Softwareentwickler
Verzeichnisdienst
Konfigurationsraum
Einfügungsdämpfung
Tabelle <Informatik>
Softwaretest
Addition
Freier Parameter
Schreib-Lese-Kopf
Datenhaltung
Template
Formale Sprache
Klasse <Mathematik>
Automatische Handlungsplanung
Kartesische Koordinaten
Dreieck
Computeranimation
Konfiguration <Informatik>
Sinusfunktion
Arithmetisches Mittel
Mailing-Liste
Transaktionsverwaltung
Softwaretest
Migration <Informatik>
Attributierte Grammatik
Skript <Programm>
Vorlesung/Konferenz
Verzeichnisdienst
Punkt
Schreib-Lese-Kopf
Hausdorff-Dimension
Datenhaltung
Mathematisierung
Computeranimation
Datenhaltung
Metadaten
Weg <Topologie>
Mailing-Liste
Softwaretest
Rechter Winkel
Attributierte Grammatik
Vorlesung/Konferenz
Softwaretest
Schreib-Lese-Kopf
Computeranimation
Datenhaltung
Schreib-Lese-Kopf
Datenhaltung
Logarithmus
Mathematisierung
Iteriertes Funktionensystem
Computeranimation
Datenhaltung
Datensatz
Mailing-Liste
Softwaretest
Datentyp
Attributierte Grammatik
Vorlesung/Konferenz
Software Development Kit
Elektronische Publikation
App <Programm>
Mathematisierung
Mathematisierung
Steuerwerk
Computeranimation
Datenhaltung
Integral
Mailing-Liste
Weg <Topologie>
Verkettung <Informatik>
Softwaretest
Rechter Winkel
Mereologie
ATM
Attributierte Grammatik
Vorlesung/Konferenz
Softwaretest
Datenhaltung
Abstraktionsebene
Versionsverwaltung
Iteration
Unrundheit
Biprodukt
Elektronische Publikation
Computeranimation
Datenhaltung
Hydrostatik
Softwaretest
Speicherabzug
Projektive Ebene
Softwareentwickler
Konfigurationsraum
Tabelle <Informatik>
Automatische Indexierung
Datentyp
Schlüsselverwaltung
Schreib-Lese-Kopf
Template
Datenhaltung
Division
Default
Formale Sprache
Automatische Handlungsplanung
Mailing-Liste
Computeranimation
Zeitstempel
Netzwerktopologie
Unendlichkeit
Multiplikation
Weg <Topologie>
Softwaretest
ASCII
Skript <Programm>
Vorlesung/Konferenz
Gerade
Schreib-Lese-Kopf
Tabelle <Informatik>
Addition
Bit
Elektronische Publikation
Schreib-Lese-Kopf
Datenhaltung
Versionsverwaltung
Automatische Handlungsplanung
Mathematisierung
Mailing-Liste
Physikalisches System
Datenhaltung
Konfiguration <Informatik>
Arithmetisches Mittel
Softwaretest
ATM
Plot <Graphische Darstellung>
Information
Informationsmanagement
Lineares Funktional
Stabilitätstheorie <Logik>
Wasserdampftafel
Mathematisierung
PASS <Programm>
Mathematisierung
Zahlenbereich
Mailing-Liste
Algorithmische Programmiersprache
Computeranimation
Softwaretest
Rechter Winkel
Passwort
Passwort
Addition
Cloud Computing
Innerer Punkt
Gerade
Standardabweichung
Tabelle <Informatik>
Mathematisierung
PASS <Programm>
Oval
Computeranimation
Mailing-Liste
Softwaretest
Mustersprache
Ordnungsbegriff
Vorlesung/Konferenz
Passwort
Softwareentwickler
Analysis
Lineares Funktional
Datentyp
Protokoll <Datenverarbeitungssystem>
Schreib-Lese-Kopf
Datenhaltung
Division
Mathematisierung
Boolesche Algebra
Menge
Design by Contract
Sinusfunktion
Funktion <Mathematik>
Formale Sprache
Mereologie
Simulation
Resultante
Softwaretest
Punkt
Datenhaltung
Fächer <Mathematik>
Mathematisierung
PASS <Programm>
Vorlesung/Konferenz
Mailing-Liste
Datenhaltung
Aggregatzustand
Faserbündel
Distributionstheorie
Distributionstheorie
Nichtlinearer Operator
Dokumentenserver
Mathematisierung
Automatische Handlungsplanung
Elektronischer Datenaustausch
Mathematisierung
HIP <Kommunikationsprotokoll>
Physikalisches System
Elektronische Publikation
Computeranimation
Eins
Rechter Winkel
Skript <Programm>
Skript <Programm>
Wort <Informatik>
Cloud Computing
Verzeichnisdienst
Konfigurationsraum
Faserbündel
Instantiierung
Faserbündel
Softwaretest
Datenhaltung
Mathematisierung
Mathematisierung
PASS <Programm>
Plot <Graphische Darstellung>
Elektronische Publikation
Computeranimation
Metropolitan area network
Verknüpfungsglied
Endogene Variable
Skript <Programm>
Vorlesung/Konferenz
Figurierte Zahl
Verzeichnisdienst
Faserbündel
Softwaretest
Softwaretest
Datenhaltung
Hash-Algorithmus
Mathematisierung
Passwort
Passwort
Pi <Zahl>
Aggregatzustand
Lineares Funktional
Elektronische Publikation
Punkt
Mathematisierung
Mathematisierung
Elektronische Publikation
Algorithmische Programmiersprache
Computeranimation
Softwaretest
Kryptologie
Rechter Winkel
Skript <Programm>
Vorlesung/Konferenz
Passwort
Maßerweiterung
Speicher <Informatik>
Lineares Funktional
Chipkarte
Elektronische Publikation
VIC 20
Idempotent
Mathematisierung
Klasse <Mathematik>
Idempotent
Mathematisierung
Indexberechnung
Unrundheit
Elektronische Publikation
Elektronische Unterschrift
Computeranimation
Gewöhnliche Differentialgleichung
Arithmetisches Mittel
Funktion <Mathematik>
Code
Skript <Programm>
Ordnungsbegriff
Vorlesung/Konferenz
Skript <Programm>
Lineares Funktional
Schreib-Lese-Kopf
Mathematisierung
Automatische Handlungsplanung
PASS <Programm>
Mathematisierung
Ultraviolett-Photoelektronenspektroskopie
Menge
Computeranimation
Weg <Topologie>
Softwaretest
Funktion <Mathematik>
Kryptologie
Formale Sprache
Passwort
Passwort
Faserbündel
Einfach zusammenhängender Raum
Distributionstheorie
Punkt
Schreib-Lese-Kopf
Mathematisierung
Versionsverwaltung
PASS <Programm>
Mathematisierung
Elektronische Publikation
Steuerwerk
Computeranimation
Bildschirmmaske
Softwaretest
Hash-Algorithmus
Ordnungsbegriff
Passwort
Faserbündel
Faserbündel
Ebene
Zentralisator
Distributionstheorie
Web Site
Punkt
British Computer Society
Desintegration <Mathematik>
Natürliche Zahl
Formale Sprache
Mathematisierung
Versionsverwaltung
Automatische Handlungsplanung
Datenmanagement
PASS <Programm>
Zahlenbereich
Extrempunkt
Code
Computeranimation
Datenhaltung
W3C-Standard
Task
Arithmetische Folge
Lineare Regression
Mustersprache
Speicherabzug
Vorlesung/Konferenz
Default
Hilfesystem
Funktion <Mathematik>
Beobachtungsstudie
Softwaretest
Elektronische Publikation
Stochastische Abhängigkeit
Datenhaltung
Mathematisierung
Strömungsrichtung
Elektronische Publikation
Quick-Sort
Schlussregel
Integral
E-Learning
Rechter Winkel
Hilfesystem
Speicherabzug
Projektive Ebene
Funktionalintegral
Einfügungsdämpfung
Subtraktion
Punkt
Klasse <Mathematik>
Automatische Handlungsplanung
Versionsverwaltung
Iteration
Fortsetzung <Mathematik>
Bridge <Kommunikationstechnik>
Informationsmanagement
Code
Unendlichkeit
Metropolitan area network
Migration <Informatik>
Maskierung <Informatik>
Skript <Programm>
Vorlesung/Konferenz
Hybridrechner
Softwareentwickler
Speicher <Informatik>
Maßerweiterung
Gerade
Analysis
Sichtenkonzept
Dokumentenserver
Datenhaltung
REST <Informatik>
Verzweigendes Programm
Mathematisierung
Ruhmasse
Physikalisches System
Elektronische Publikation
Biprodukt
Integral
Minimalgrad
Suite <Programmpaket>
Rechter Winkel
Injektivität
Mereologie
Garbentheorie
Projektive Ebene
Speicherabzug
Hill-Differentialgleichung
Elektronischer Datenaustausch
Subtraktion
Fächer <Mathematik>
Mathematisierung
Formale Sprache
Datenmanagement
Zahlenbereich
Fortsetzung <Mathematik>
Informationsmanagement
Gradient
Homepage
Task
Informationsmodellierung
Benutzerbeteiligung
Datenmanagement
Spieltheorie
Programmbibliothek
Skript <Programm>
Vorlesung/Konferenz
Maßerweiterung
Softwareentwickler
Ganze Funktion
Bildgebendes Verfahren
Umwandlungsenthalpie
Softwaretest
Trennungsaxiom
Parametersystem
Graph
Datenhaltung
Verzweigendes Programm
Mathematisierung
Mailing-Liste
Physikalisches System
Elektronische Publikation
Biprodukt
Generator <Informatik>
Flächeninhalt
Menge
Rechter Winkel
Mereologie
Projektive Ebene
Wort <Informatik>
Gammafunktion

Metadaten

Formale Metadaten

Titel Simple SQL Change Management with Sqitch
Serientitel PGCon 2012
Anzahl der Teile 21
Autor Wheeler, David E.
Mitwirkende Heroku (Provider)
Lizenz CC-Namensnennung - keine kommerzielle Nutzung - 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/19036
Herausgeber PGCon - PostgreSQL Conference for Users and Developers, Andrea Ross
Erscheinungsjahr 2012
Sprache Englisch
Produzent FOSSLC

Technische Metadaten

Dauer 1:01:09

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract SQL change management has always sucked. This talk introduces Sqitch, the VCS-aware SQL change management application that doesn't suck. Come see how it works, learn the few simple rules you need to get the most out of it, and liberate yourself from the suckitude. SQL change management is hard. Most "migration"-style implementations require opaque naming conventions, prefer DSLs that cover a fraction of SQL, and require duplication of code for simple changes to existing functions. Such does not have to be. And now it's not Introducing Sqitch, simple SQL change management that doesn't suck. Sqitch doesn't care what programming language your app is written in. It has no opinions as to what database to use or what its schema should look like. And it doesn't require sequentially-named migration scripts or the use of any DSL other than SQL. Sqitch lets you to write SQL migration scripts thar target your database, and provides a simple, unintrusive interface for specifying dependencies, so that it can run things in the proper order. Best of all, when used with a version control system (initially Git), you can even modify idempotent deployment scripts between releases. Sqitch recognizes such changes, and automatically knows how to revert to earlier versions if required. And finally, Sqitch supports simple acceptance testing, so that you can be sure that your deployments are successful, and, if not, revert them. So come to this talk to learn all about Sqitch: How it works, where to get it, and how to get the most out of managing database deployments.

Ähnliche Filme

Loading...